現在手機項目開發市場異常繁榮, 各種技術層出不窮, 作為一名跟隨 Flash 多年的屌絲前端程式猿來說, Adobe Air 技術讓我們看到一絲曙光(可以說很大一束 XDD ), 而且在遊戲領域已經有很多成功案例, 效果絲毫不亞於原生語言開發的應用.
但是, 再好的技術也有其不足之處, 目前來說 Air 提供的對行動裝置底層功能支援還比較有限, 很多 IOS/Android 公用功能都不支援. 好在 Adobe 提供了很好的解決方案, 那就是 ane (AIR Native Extensions), 他為裝置與 Air 之間的溝通起到了很好的橋樑作用.
下面簡單介紹下在 FlashDevelop (以下簡稱 FD)中建立和發布包含 ane 的移動項目的一些注意事項:
當然首先你要有必要的 ane 檔案, 下面這個地址描述了如何建立自己的 ane 檔案:
http://help.adobe.com/en_US/air/extensions/index.html
你也可以直接使用第三方提供的 ane (包括 Adobe 官方的)
http://www.adobe.com/devnet/air/native-extensions-for-air.html
有了 ane 檔案就可以在移動項目中應用一些 Air 原生不支援的功能了, 下面是一些注意事項(例子中用到了上面地址中的 Notification 和 Vibration 兩個 ane):
- 引入 ane:
將 ane 檔案拷貝到項目目錄(一般是 lib 或 ane 檔案夾中), 右鍵->Add To Library
- 修改 ane 引入方式:
ane 檔案上右鍵->Options..., 修改為 External library(not included);
- 修改 application.xml 描述檔案, 引入 ane 支援:
本例中引入了兩個 ane 檔案, 因此需要增加如下代碼:
<extensions> <!-- Vibration ane 的 extension id --> <extensionID>com.adobe.Vibration</extensionID> <!-- notification ane 的 extension id --> <extensionID>com.adobe.mobile</extensionID> </extensions>
當然 FD 4 為此也提供了 UI 支援, 單擊圖一中所示按鈕, 進入 Extensions 選項卡(圖二)進行編輯.
(圖一)
(圖二)
- 增加一些額外支援描述:
本例中 Vibration 需要增加許可權描述, Notification 要增加服務描述(相應的 ane 下載頁面中有相關說明), 你可以直接修改 application.xml 或者在上面提到的介面中設定(圖三)
(圖三)
- 修改打包批處理命令:
由於 FD 的編譯打包過程都是通過批處理來實現的, 要增加 ane 支援, 需要對 Packager.bat 檔案稍作修改,
在 %FILE_OR_DIR% 後面增加 -extdir lib/ 一段(不換行), lib 為 ane 所在目錄相對路徑.
提供本例測試 ane 部分代碼(直接放在文檔類建構函式裡就行):
// 震動實現if (Vibration.isSupported){ var v:Vibration = new Vibration(); v.vibrate(2000);}// 系統提醒try{ var nom:NotificationManager = new NotificationManager();}catch (err:Error){ return;}var n:Notification = new Notification();n.tickerText = '提醒時狀態列中顯示的文字';n.title = '提醒的標題';n.body = '和內容';// 提醒表徵圖類型n.iconType = NotificationIconType.INFO;nom.notifyUser('MY_NOTIFY_TYPE', n);
基本上需要注意的就這麼多, 現在可以在裝置上測試一下了, 可能會發生的狀況是: 運行程式後, 手機震動的同時在狀態列出現一條提示, 開啟狀態列看到帶有 info 表徵圖以及標題和內容的一條提醒.
-EOF-