2012-02-22 68 views
0

我打算構建一個我想使用C庫的Android應用程序。所以,我打算將NDK和SDK一起使用。 NDK支持ARMv5,ARmv7和x86指令集。現在,如果我使用ARMv5構建Android應用程序,它是否會在基於Intel(x86)平臺的Android手機上運行(我錯過了什麼?)?如果不是,那麼我可以通過哪種方式構建一個可以在所有Android手機上運行的ANdroid應用程序(它使用一些下面的C庫),而不管底層平臺如何?可以在x86和ARM平臺上使用Android應用程序(使用NDK構建的庫)嗎?

VIBGYOR

回答

3

您需要使用下面的命令NDK建立。所以爲架構。

./ndk-build APP_ABI=armeabi armeabi-v7a x86 

.so將出現在相應的目錄中,並且將在運行時提取。

所以你需要爲每個CPU構建你的NDK部分。所以最後你會得到一個用於arm的.so文件,一個用於x86(也許另一個用於armv7)。

這兩個/三個.so文件捆綁在您的最終.apk文件中,並且在安裝過程中,Android操作系統爲它正在安裝的設備選擇正確的.so文件。

所以,如果你有一個Java部分:這將運行在一切。 如果您有NDK部分:您需要爲每個cpu平臺創建一個.so文件,但它們可以捆綁在一起並自動選取,而無需用戶知道幕後發生了什麼。

0

最好是爲所有平臺(armeabi armeabi-v7a mips和x86)構建本地庫,只需在變量APP_ABI中設置「all」即可。

JNI/Application.mk

APP_ABI:= 所有
APP_PLATFORM:= Android的8

就我而言,我使用的Android NDK,R9B

注意:如果您要將本機庫部署到基於x86和MIPS的設備,則您的應用程序必須以Android 2.3(API級別9)或更高版本爲目標。

的AndroidManifest.xml

<使用-SDK機器人:的minSdkVersion = 「8」 機器人:targetSdkVersion = 「10」/ >

更多信息:https://developer.android.com/tools/sdk/ndk/index.html

0

某些x86設備,例如三星Galaxy Tab 2包括一個手臂仿真層。這一點很重要,但你應該在工作中遵循上面的建議。如果可能的話,你不應該依賴這種模擬的一個原因是性能約佔經濟代碼的40%。

相關問題