【发布时间】:2017-10-24 17:03:13
【问题描述】:
我有很多 Android NDK 修订版,从 6 个到最新的 14 个(用于测试本机代码的构建)。为了节省存储空间,我已经从 ./toolchains/ 中删除了 mips* 工具链(更详细地来自 android ndk 10c),因为我肯定不需要它们。
现在在尝试使用 Gradle 构建库代码时出现以下错误:
在 ABI 的 NDK 工具链文件夹中找不到工具链,前缀为:mipsel-linux-android
虽然在Application.mk 我只有armeabi-v7 和x86:
APP_ABI := armeabi-v7a x86
在build.gradle 我有:
android {
compileSdkVersion 16
buildToolsVersion "25.0.0"
defaultConfig {
...
ndk {
abiFilters 'armeabi-v7a', 'x86'
}
}
externalNativeBuild {
ndkBuild {
path 'jni/Android.mk'
}
}
...
}
如何正确删除不必要的工具链?
【问题讨论】:
-
用旧的 NDK 版本测试代码的可构建性似乎没有什么价值。 NDK 版本很好地保持了与旧平台的向后兼容性(只有 r15,目前仍处于测试阶段,已经放弃了 android-9,最低转移到 android-14,覆盖了 5 月 2 日仍处于活动状态的 99% 的设备)。无论如何,您的 gradle 集成只能与一个 NDK 修订版一起使用。保持最新,并保留此版本的所有工具链。
-
这不是 100% 正确的。例如。 V8 需要特定版本的工具链,而最新版本中没有。链接方面也有一些重大变化,例如10e 和 11 (
Changed libc++’s inline namespace to std::__ndk1 to prevent ODR issues with platform libc++) 之间存在差异,导致该库可以与 10e 链接,但不能与 11 链接 -
为什么值得在 NDK 10e 上确保代码可编译性?
标签: android android-ndk toolchain