好了,話不多說,隻為自己下次再做的時候不要忘記了!
直接上代碼,打包第三方的靜态庫的ANE需要的檔案有:
1、用flash Builder建立一個flex庫,在庫裡面添加一個action script類,寫好接口代碼,打包成swc(應将swc版本調整為需要的版本 -swc-version 14.等等。。。。。)
2、打開Xcode,建立一個靜态庫,具體怎麼創就不說了,網上教程很多。然後,删掉.h檔案,在.m檔案裡面寫上應該寫的代碼,如:(初始化方法,銷毀方法,以及其他的方法就沒寫出來了)
)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX90TUOhXUE5ENjRUT4FEVkZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DNzIzMwETMzETOwEDM0EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
這就是給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);中引号裡面要一樣,
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就可以了。
好了,如果不出問題,就可以了。
好了,寫的水準的确是忒次了,寫得很淩亂,不了解的地方希望大家指出,其中,代碼部分借鑒至天地會一大神。如有侵權,請及時告知。
源碼就不奉獻了,因為涉及到三方。
先就這樣吧,睡午覺去了。