天天看點

AIR ANE for iOS打入第三方靜态庫

好了,話不多說,隻為自己下次再做的時候不要忘記了!

直接上代碼,打包第三方的靜态庫的ANE需要的檔案有:

1、用flash Builder建立一個flex庫,在庫裡面添加一個action script類,寫好接口代碼,打包成swc(應将swc版本調整為需要的版本  -swc-version 14.等等。。。。。)

2、打開Xcode,建立一個靜态庫,具體怎麼創就不說了,網上教程很多。然後,删掉.h檔案,在.m檔案裡面寫上應該寫的代碼,如:(初始化方法,銷毀方法,以及其他的方法就沒寫出來了)

AIR ANE for iOS打入第三方靜态庫

這就是給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。

AIR ANE for iOS打入第三方靜态庫

下面我将打包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就可以了。

AIR ANE for iOS打入第三方靜态庫

好了,如果不出問題,就可以了。

好了,寫的水準的确是忒次了,寫得很淩亂,不了解的地方希望大家指出,其中,代碼部分借鑒至天地會一大神。如有侵權,請及時告知。

源碼就不奉獻了,因為涉及到三方。

先就這樣吧,睡午覺去了。