2012-02-22 69 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%。

相关问题