我有一个带有两个不同 CPU ABI 的 android 系统 - armeabi-v7a 和 x64
。为此我必须构建应用程序代码才能使其正常工作。无论如何我的应用程序(用 c 语言)不为任何一个平台运行。
或者是否有任何通用工具链可以用来构建相同的工具链。
arm-eabi-gcc?
最佳答案
NDK 包含在 Android 平台上运行程序所需的所有工具链。
要设置您需要编译的体系结构,您应该在 Application.mk 中设置 APP_ABI
变量或将其传递给 ndk-build
命令。
APP_ABI:=all
将使您的 ndk 项目针对所有支持的架构构建:armeabi、armeabi-v7a、 arm64-v8a、x86、x86_64、mips、mips64。
您还可以列出要构建的架构:APP_ABI:= x86_64 x86 armeabi-v7a arm64-v8a
并且还可以使用 all32
和 all64
作为所有 32 位和所有 64 位架构的快捷方式。
要确定目标设备支持哪些平台,您可以调用 adb shell getprop ro.product.cpu.abi
(首选 arch)和 adb shell getprop ro.product.cpu .abi2
(第二个拱门)。
从 Android 5.0 开始,改用 adb shell getprop ro.product.cpu.abilist
,它会返回所有支持的 ABI 的列表,并按优先顺序排序。
关于android - Android ABI 的目标 exe(ndk 构建),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29386598/