上次将NDK版本升级到Android Studio中的最新版本后,我遇到了此问题。我也找到了解决这个问题的方法。如果有人有这个问题,我希望这是你最好的问题和答案。请检查我的答案。
答案 0 :(得分:18)
我通过在release note here上阅读NDK修订版16找到了解决方案。
如果您使用 Application.mk
配置项目,只需将以下内容添加到 Application.mk
文件中:
APP_STL := c++_shared
如果您通过Gradle使用 CMake
,请将以下内容添加到build.gradle:
externalNativeBuild {
cmake {
cppFlags ""
arguments "-DANDROID_STL=c++_shared"
}
}
要及时了解新版本和说明,请按此NDK Revision History申请新的更改。
我希望它可以解决您的问题。
答案 1 :(得分:5)
根据Android documentation,这是一个已知问题,其原因是gradle插件默认仍包含不受支持的ABI。在NDKr16中不推荐使用armbeabi,在r17中将其删除,因此发出警告。要进行修复,请在splits.abi
下列出您支持的体系结构:
...
splits {
abi {
...
reset()
include "x86", "armeabi-v7a", ...
}
}
答案 2 :(得分:2)
有同样的问题,并通过添加以下设置修改模块build.gradle文件来解决:
android {
...
splits {
abi {
enable true
reset()
include 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a' //select ABIs to build APKs for
universalApk true //generate an additional APK that contains all the ABIs
}
}
project.ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'arm64-v8a': 3, 'mips': 5, 'mips64': 6, 'x86': 8, 'x86_64': 9]
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
output.versionCodeOverride =
project.ext.versionCodes.get(output.getFilter(com.android.build.OutputFile.ABI), 0) * 1000000 + android.defaultConfig.versionCode
}
}
}
祝您好运。
答案 3 :(得分:0)
这不能解决我的问题,我通过添加以下内容来解决:
ndk {
abiFilters "armeabi-v7a"
}
到android.defaultConfig