背景
我最近开始开发使用NDK的一些代码,我已经想同时使用NDK开发到可能发生可能的便携性问题。
问题
由于NDK使用本地代码,它需要每个CPU架构进行编译。 这是一个问题,因为用户需要,无论该设备具有什么样的CPU上运行的应用程序。
可能的解决方案到目前为止,我已经找到了
我发现我可以修改文件“JNI / Application.mk”及用途:
APP_ABI:= armeabi armeabi-V7A 86
但是,我不知道我应该从这个步骤做。 将应用程序包含所有的编译代码的每个CPU架构和运行本身时自动选择正确的呢?
另外,如果还会有什么其他的CPU架构,是未知的?
如果我试图谷歌电视上运行应用程序时,会发生什么它根据什么,我记得不支持NDK呢?
我发现另一种解决方案是多APK支持。 但是,我不知道我的理解。 所有这一切意味着你创建相同的APK,具有不同配置每一次? 从ADT没有特别的自动化工具,以帮助吗?
如果您没有设置APP_ABI
所有,或使用
APP_ABI := all
在Application.mk,然后NDK建造将建立你的NDK版本支持的所有架构。 最新的一个,迄今为止R 8d中,除了会armeabi armeabi-v7a x86
构建也为mips
。 当其他架构将被释放,你会希望自动获得APK内置支持它。
当应用程序被安装在Android设备上,系统会自动选择匹配ABI版本,并安装在APK正确的共享库。
这种方法的一个缺点是,如果本机库都大了,你的“铁板一块”的APK文件可能会变得很大。 您可以使用多APK的方法来让用户下载更小。 在官方网站的建议: 您应仔细按照版本代码guildlines如果你选择这条路线。
不幸的是,对于谷歌电视上NDK支持不值得信赖的预言,但似乎是当前不可用没有技术理由。 如果当它到来时,你的NDK,版本将自动照顾它。
UPDATE 下面是一个简单的过程中保持分裂APK。 顺便说一句,新的Android电视不支持NDK。
最新的版本(现在R9)你必须在“JNI / Application.mk”指定
APP_ABI := all
要么
APP_ABI := armeabi armeabi-v7a x86 mips
没有./ndk_build只会打造“armeabi”