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

來源:互聯網
上載者:User

標籤:外掛程式   manage   配置   沒有   應用   位置   重建   man   tom   

目標

面向 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 配置

我們如今應當在 Eclipse ADT 中啟用和啟用與 NDK 相關的功能。 讓我們開啟當中一個 NDK JNI 示範範例並進行構建。

開啟 Eclipse 中的 hello-jni 示範範例 NDK 應用。並將 NDK build 支援加入至項目

要在 Eclipse 中構建 NDK JNI 原生示範範例,我們須要讓 Eclipse ADT 瞭解該示範範例使用原生/NDK 代碼。

讓我們先將 HelloJni 示範範例匯入 eclipse。

在 Eclipse 中開啟“檔案”->“建立”->“項目”-> Android ->“來自現有代碼的 Android 項目”。

在下個螢幕中,輸入 hello-jni 示範範例項目(在 NDK 安裝目錄中提供)的路徑。並選擇“拷貝到工作區”複選框。再單擊“完畢”。

使用來自您 NDK 安裝目錄的 HelloJni 路徑替代根目錄路徑。


圖 2: 將示範範例 HelloJni 項目匯入 Eclipse

因為 x86 Android NDK 支援 Gingerbread* 及更高的 Android 平台。我們要確保更新應用描寫敘述檔案裡的最小和目標 SDK 配置。 在 Eclipse 中開啟 HelloJni 示範範例下的 AndroidManifest.xml。單擊 AndroidManifest 編輯器中的“使用 SDK”並檢查最小 SDK 是否設定為 10 (API 10)。


圖 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 中全部支援的 ABI 進行構建。 按右鍵 Eclipse -> 執行為 -> Android 應用中的“hello-jni”。 Eclipse 將自己主動調用 NDK build 並產生全部原生庫。

您可例如以下所看到的在庫目錄下驗證它。


圖 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 年著作權全部。 全部權保留。

* 其它的名稱和品牌可能是其它全部者的資產。

最佳化聲明

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.