好了,话不多说,只为自己下次再做的时候不要忘记了!
直接上代码,打包第三方的静态库的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就可以了。
好了,如果不出问题,就可以了。
好了,写的水平的确是忒次了,写得很凌乱,不理解的地方希望大家指出,其中,代码部分借鉴至天地会一大神。如有侵权,请及时告知。
源码就不奉献了,因为涉及到三方。
先就这样吧,睡午觉去了。