flash打包ane在安卓上使用筆記

來源:互聯網
上載者:User

1.as3中的ExtensionContext是其核心類,負責與Java代碼的互動。

ExtensionContext需要調用createExtensionContext方法建立和初始化Java端的本地代碼。

而是用call方法可以調用具體的Java代碼並獲得返回結果。同時Extension還會接受從java代碼拋出的事件。

產生的jar會在extension.xml標識

 

2.本地java項目部分

關鍵介面 FREExtension 是java端自訂代碼的入口,產生ane時,會在extension.xml裡設定這個入口類

關鍵類 FREContext(儲存"key":FREFunction的索引值映射)

關鍵介面 FREFunction 只有一個call方法需要實現,

 

3.flash調用java流程:

1)extContext = ExtensionContext.createExtensionContext(EXTENSION_ID,""); //EXTENSION_ID要與extension.xml中的id標籤一致

這行代碼會使得java裡的FREExtension被new,接著FREContext被new ,索引值映射生效

 

2)extContext.call(字串)//這個字串就是java 的FREContext裡定義的索引值的鍵,這時相關的FREFunction就會被new 並自動調用call方法

 

 

4.java返回資料給flash:

1)flash裡:extContext.addEventListener(StatusEvent.STATUS,onStatusHandler);

2)java裡:FREContext.dispatchStatusEventAsync("code", "level");

3)onStatusHandler(e:StatusEvent){e.code 就=="code",e.level=="level"}

 

 

5.產生ANE檔案

隨便建立一個目錄作為工作目錄(AneBuild),並為其建立子檔案夾Android-ARM

將Flex Library項目中自動產生的.swc檔案和extension.xml複製到AneBuild目錄下

以ZIP方式解壓.swc檔案擷取catalog.xml和library.swf檔案並存到Android-ARM檔案夾下

拷貝AneTestNative.jar到Android-ARM檔案夾下

拷貝自己的簽名檔案.p12到AneBuild檔案夾下

最終結果

AneBuild:Android-ARM檔案夾、.swc檔案、extension.xml、.p12檔案

Android-ARM:catalog.xml、library.swf、AneTestNative.jar

使用命令提示字元進入到AneBuild檔案目錄下,使用adt命令對上述檔案打包

[plain] view plaincopy

"D:developAdobeAdobe Flash Builder 4.5sdks4.5.0-air3.0binadt" -package -storetype PKCS12 -keystore linxcool.p12 -storepass 08002615 -target aneTest.ane extension.xml -swc *.swc -platform Android-ARM -C Android-ARM .

linxcool.p12:簽名檔案

08002615:簽名密碼

aneTest.ane:產生的ANE檔案名稱

 

6.製作ane時的swc注意:flash builder4.6需要在編譯器附帶參數中加入“-swf-version 13”否則打包ane時會出現Invalid swc file.The extension NameSpace requires the swf verison to be 13 or lower

 

7,如果ane打包時,Android-ARM/res檔案夾下有這個的檔案:dpay_btn_gray_press.9.png,那麼flash builder發布apk時就會出錯:aapt tool failed:Error:C盤下的應用程式臨時檔案找不到圖片!

 

8.如果java項目的lib裡有檔案夾,如armeabi,那麼在打包ane的時候,也要放在Android-ARMlibs下

 

9.bat批處理命令學習:

(1)得到當前.bat檔案的所在目錄:set root_directory=%~dp0

(2)輸出:echo

(3)使用變數:%root_directory%

 

10.FREFunction call方法只有兩個參數call(FREContext arg0, FREObject[] arg1) ,不管flash裡傳來多少參數,都被放在FREObject[] arg1中

FREObject用來封裝flash的對象,返回參數給flash,用的也是這個類型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.