AIR ANE for iOS打入第三方静态库

释放双眼,带上耳机,听听看~!

好了,话不多说,只为自己下次再做的时候不要忘记了!

直接上代码,打包第三方的静态库的ANE需要的文件有:

1、用flash Builder创建一个flex库,在库里面添加一个action script类,写好接口代码,打包成swc(应将swc版本调整为需要的版本  -swc-version 14.等等。。。。。)

2、打开Xcode,创建一个静态库,具体怎么创就不说了,网上教程很多。然后,删掉.h文件,在.m文件里面写上应该写的代码,如:(初始化方法,销毁方法,以及其他的方法就没写出来了)

这就是给swc文件里面的call方法提供本地实现的内容,Button是我自己新建的一个类,里面有调用第三方SDK的方法。在buliding出.a文件的时候,需要注意了,应该是用release版本的真机测试版本。

3、现在还需要一个.p12证书,用flash Builder生成一个就好。

4、需要一个extension.xml配置文件,用来指定id,入口方法和销毁方法等

<extension xmlns="http://ns.adobe.com/air/extension/3.5">
	<id>com.coolexp.ANELib</id>
	<versionNumber>1</versionNumber>
	<platforms>
		<platform name="iPhone-ARM">
			<applicationDeployment>
				<nativeLibrary>libiosanedemo.a</nativeLibrary>
				<initializer>ExtInitializer</initializer>
				<finalizer>ExtFinalizer</finalizer>
			</applicationDeployment>
		</platform>
	</platforms>
</extension>

注:上面的id是跟flex库项目中的ExtensionContext.createExtensionContext(“com.coolexp.ANELib”,null);中引号里面要一样,

<nativeLibrary>libiosanedemo.a</nativeLibrary> <!--是打包ANE是需要的ios静态库,此静态库可以包含第三方的静态库,这个根本无所谓,但是能包含多少个第三方库就没亲测过了。-->
<initializer>ExtInitializer</initializer>  <!--这个用来标记初始化方法,就跟ios中的init初始化是一样的;-->
<finalizer>ExtFinalizer</finalizer>     <!-- /////这个我只是猜测,相当于dealloc方法。-->

5、由于有第三方的SDK,里面有静态文件(.a文件),还有用来装图片等资源的Bundle文件,只需要将这些按照正常的ios工程来添加和使用就好,但是用到了一些AIR SDK不默认支持的库,就需要一个动态链接配置文件来做了,名字就叫platformoptions.xml好了。代码如下:

<platform xmlns="http://ns.adobe.com/air/extension/3.5"> 
    <description > An optional description</description> 
    <copyright>2012 (optional)</copyright> 
    <linkerOptions>
        <option>-framework MessageUI</option>  <!--在air sdk中没能默认包含的框架-->
        <option>-lz</option>        <!--在air sdk中没能默认包含的库-->
    </linkerOptions>
     <packagedDependencies>
      <!-- <packagedDependency>libYiJiPayPlugin.a</packagedDependency>
       -->
    </packagedDependencies>
    
</platform>

可以看到,其实无需特别指定第三方的静态库啦!中途当然会遇到问题,不过一般简单查一下资料就可以了。
6、将所有的文件放在一个文件夹下吧,基本就是这些文件了,另外一个.a文件就是那个第三方的SDK。

下面我将打包ane的命令也贴上来

先cd到这个文件夹 /Applications/Adobe\ Flash\ CC/AIR3.6/bin/adt -package -storetype pkcs12 -keystore xxxxxxx.p12 -storepass 密码 -target ane xxxxxx.ane extension.xml -swc ifanesussec.swc -platform iPhone-ARM -platformoptions platformoptions.xml libiosanedemo.a library.swf

从命令可以看出,其实打包的时候,第三方库没有任何用处。

然后就是调用了:在任何的as项目的地方中,调用ANELibUtils.showBadageNum(35);然后打包成ipa,在打包的时候,需要将使用到的bundle资源添加到AIR项目中,一起编译成ipa就可以了。

好了,如果不出问题,就可以了。

 

人已赞赏
iOS文章

ANE for iOS

2020-1-11 10:19:39

iOS文章

详解大端模式和小端模式

2020-1-11 10:30:23

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索