Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 將 Android* x86 NDK 用於 Eclipse* 並移植 NDK 示例應用

將 Android* x86 NDK 用於 Eclipse* 並移植 NDK 示例應用

編輯:關於Android編程

目標

面向 Eclipse (ADT) 的 Android 插件現在支持基於 NDK 的應用開發。 其可自動生成項目和構件文件以及代碼存根,並可集成到整個 Android 應用開發中(構建原生庫、將庫復制到項目內的相應 JNI 文件夾、將應用打包以及生成帶有 NDK 代碼的最終 APK)。 本文將討論如何配置 Eclipse 以利用該功能,並示范移植 NDK 應用的示例。

配置 Eclipse ADT 插件以配合 NDK 使用

必須先配置 Eclipse ADT 插件指向 NDK 安裝路徑的位置後,方可使用該新功能。 首先務必更新 Eclipse 中的 ADT 插件以獲得最新更改,並從下面的網站下載最新的 NDK:

http://developer.android.com/tools/sdk/ndk/index.html

在 Eclipse 中,打開“窗口”->“首選項”->Android->NDK。 如下所示輸入 NDK 安裝路徑(在此我們假定您已將 NDK 下載至了 Windows* 上的 c:\sw\android-ndk),單擊“應用”,然後單擊“確定”。

\
圖 1: Eclipse Android ADT 插件中的 NDK 配置<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+Cs7Sw8fP1tTa06a1sdTaIEVjbGlwc2UgQURUINbQxvTTw7rNvKS77tPrIE5ESyDP4LnYtcS5psTcoaMgyMPO0sPHtPK/qsbk1tDSu7j2IE5ESyBKTkkgyr7A/bKivfjQ0Lm5vaihozwvcD4KPGgyPgq08r+qIEVjbGlwc2Ug1tC1xCBoZWxsby1qbmkgyr7A/SBOREsg06bTw6OssqK9qyBOREsgYnVpbGQg1qez1sztvNPWwc/uxL88L2gyPgo8cD4K0qrU2iBFY2xpcHNlINbQubm9qCBOREsgSk5JINStyfrKvsD9o6zO0sPH0OjSqsjDIEVjbGlwc2UgQURUIMHLveK4w8q+wP3KudPD1K3J+i9OREsgtPrC66GjPC9wPgo8cD4KyMPO0sPHz8i9qyBIZWxsb0puaSDKvsD9tbzI6yBlY2xpcHNloaMg1NogRWNsaXBzZSDW0LTyv6qhsM7EvP6hsS0+obDQwr2oobEtPqGwz+7Ev6GxLT4gQW5kcm9pZCAtPqGwwLTX1M/W09C0+sLrtcQgQW5kcm9pZCDP7sS/obGhoyDU2s/CuPbGwcS71tCjrMrkyOsgaGVsbG8tam5pIMq+wP3P7sS/o6jU2iBOREsgsLLXsM7EvP680NbQzOG5qaOptcTCt762o6yyotGh1PGhsLi01sa1vbmk1/fH+KGxuLTRob/yo6zU2bWlu/ehsM3qs8mhsaGjIMq508PAtNfUxPogTkRLILCy17DOxLz+vNC1xCBIZWxsb0puaSDCt762zOa0+rj5xL/CvMK3vrahozwvcD4KPHAgYWxpZ249"center"> seogU0RLIMXk1sOhoyDU2iBFY2xpcHNlINbQtPK/qiBIZWxsb0puaSDKvsD9z8K1xCBBbmRyb2lkTWFuaWZlc3QueG1so7u1pbv3IEFuZHJvaWRNYW5pZmVzdCCx4LytxvfW0LXEobDKudPDIFNES6GxsqK87LLp1+7QoSBTREsgyse38cno1sPOqiAxMCAoQVBJIDEwKaGjPC9wPgo8cCBhbGlnbj0="center"> \
圖 3: Eclipse 中的描述文件編輯器

我們現在已准備好向 Eclipse 中的該項目添加 NDK build 支持。 在 Eclipse 中,右鍵單擊 hello-jni 項目 (com.example.hellojni.HelloJni) -> Android 工具 -> Add Native 支持 -> 完成。

\
圖 4: 將 NDK 支持添加至 Eclipse 中的項目

這樣將使用和 NDK 構件相關的設置更新項目配置。 在我們重新構建項目時,它將先編譯並構建 NDK 代碼,將構建的庫復制到相應的項目文件夾,然後繼續常規的 APK 構建流程。

在模擬器中構建並運行應用

現在繼續構建應用,並在 Android 模擬器中運行它。 我們假定已經在基於 HAXM 的 Android 模擬器上運行 Gingerbread x86 AVD。

在 Eclipse 中,右鍵單擊 hello-jni 項目 (com.example.hellojni.HelloJni) -> 運行為 -> Android 應用。 Eclipse 應當自動重建項目並嘗試在模擬器上部署/運行 APK。

但是在模擬器運行時我們看到了下面的錯誤消息,這是因為默認的 NDK 項目設置不支持 x86。

\
圖 5: 在模擬器中運行示例應用

在 Eclipse 中,您可看到 logcat 顯示錯誤“無法加載 hello-jni”

\
圖 6: Logcat 顯示無法加載原生庫

默認情況下,NDK build 不會自動為 x86 ABI 進行構建。 我們將需要創建構件文件“Application.mk”來明確指定我們的構建目標,或將命令行參數傳入 NDK build 命令。

移植應用以使用 x86 ABI 和 NDK build 文件

我們可修改項目以支持 x86 ABI。 在 Eclipse 中,右鍵單擊 hello-jni 項目中的“jni”文件夾,然後選擇“新建”->“文件”-> 將“Application.mk”作為文件名輸入,然後單擊“完成”。

\
圖 7: 將新的 NDK build 文件“Application.mk”添加至示例項目

編輯文件“Application.mk”,如下所示添加行“APP_ABI := all”,然後保存文件。

\
圖 8: 編輯 Application.mk 文件以將“all”架構作為目標

構建應用,驗證它是否構建 x86 庫,並在 x86 模擬器中測試應用

當前在我們重新構建應用時,其將為 NDK 中所有支持的 AZ喎?/kf/qianduan/css/" target="_blank" class="keylink">CSSC9+NDQubm9qKGjINPSvPy1pbv3IEVjbGlwc2UgLT4g1MvQ0M6qIC0+IEFuZHJvaWQg06bTw9bQtcShsGhlbGxvLWpuaaGxoaMgRWNsaXBzZSC9q9fUtq+199PDIE5ESyBidWlsZCCyosn6s8nL+dPQ1K3J+r/ioaMgxPq/ycjnz8LL+cq+1Nq/4s7EvP680M/C0enWpMv8oaM8L3A+CjxwIGFsaWduPQ=="center"> \
圖 9: Eclipse 項目資源管理器顯示生成的原生庫

Eclipse 將在模擬器中部署應用。 此時我們應當會看到應用成功運行,如該截屏中所示:

\
圖 10: 示例應用成功地在 x86 Android 模擬器內運行

我們希望該文章可幫助您了解如何配置 Eclipse ADT 以在 NDK 代碼開發中使用它,以及如何使用 NDK build 文件“Application.mk”來為所需的目標 ABI 進行構建。

相關文章與資源:

  • 英特爾硬件加速執行管理器(英特爾? HAXM)
  • 英特爾? 圖形性能分析器 2014 (英特爾? GPA)

    聲明

    本文件中包含關於英特爾產品的信息。 本文件不構成對任何知識產權的授權,包括明示的、暗示的,也無論是基於禁止反言的原則或其他。 英特爾不承擔任何其他責任。英特爾在此作出免責聲明:本文件不構成英特爾關於其產品的使用和/或銷售的任何明示或暗示的保證,包括不就其產品的(i)對某一特定用途的適用性、(ii)適銷性以及(iii)對任何專利、版權或其他知識產權的侵害的承擔任何責任或作出任何擔保。

    本文件中包含關於英特爾產品的信息。 本文件不構成對任何知識產權的授權,包括明示的、暗示的,也無論是基於禁止反言的原則或其他。 英特爾不承擔任何其他責任。英特爾在此作出免責聲明:本文件不構成英特爾關於其產品的使用和/或銷售的任何明示或暗示的保證,包括不就其產品的(i)對某一特定用途的適用性、(ii)適銷性以及(iii)對任何專利、版權或其他知識產權的侵害的承擔任何責任或作出任何擔保。

    英特爾有權隨時更改產品的規格和描述,恕不另行通知。 設計者不應信賴任何英特產品所不具有的特性,設計者亦不應信賴任何標有保留權利摂或未定義摂說明或特性描述。 對此,英特爾保留將來對其進行定義的權利,同時,英特爾不應為因其日後更改該等說明或特性描述而產生的沖突和不相容承擔任何責任。 此處提供的信息可隨時更改,恕不另行通知。 請勿根據本文件提供的信息完成一項產品設計。

    本文件所描述的產品可能包含使其與宣稱的規格不符的設計缺陷或失誤。 這些缺陷或失誤已收錄於勘誤表中,可索取獲得。

    在發出訂單之前,請聯系當地的英特爾營業部或分銷商以獲取最新的產品規格。

    如欲獲得本文涉及的帶編號文檔的副本或其他英特爾文獻,可致電 1-800-548-4725,或訪問:http://www.intel.com/design/literature.htm

    在性能檢測過程中涉及的軟件及其性能只有在英特爾微處理器的架構下方能得到優化。 諸如SYSmark和MobileMark等測試均系基於特定計算機系統、硬件、軟件、操作系統及功能。 上述任何要素的變動都有可能導致測試結果的變化。 請參考其他信息及性能測試(包括結合其他產品使用時的運行性能)以對目標產品進行全面評估。

    對本文件中包含的軟件源代碼的提供均依據相關軟件許可而做出,任何對該等源代碼的使用和復制均應按照相關軟件許可的條款執行。

    英特爾和 Intel 標識是英特爾在美國和/或其他國家的商標。

    英特爾公司 ? 2012 年版權所有。 所有權保留。

    * 其他的名稱和品牌可能是其他所有者的資產。

    優化聲明

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved