我在android studio中遇到此错误,请任何人知道如何解决它
Execution failed for task ':q84sale-base:transformNativeLibsWithStripDebugSymbolForRelease'.
> A problem occurred starting process 'command '/Users/amira/Library/Android/sdk/ndk-bundle/toolchains/mips64el-linux-android-4.9/prebuilt/darwin-x86_64/bin/mips64el-linux-android-strip''
答案 0 :(得分:11)
原因:
根据https://github.com/android-ndk/ndk/wiki/Changelog-r18#known-issues
此NDK版本与Android Gradle插件版本3.0或更旧版本不兼容。如果看到类似
No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
的错误,请更新项目文件以使用3.1或更高版本的插件。您还需要升级到Android Studio 3.1或更高版本。
如上所述:
更新您的项目文件以使用3.1或更高版本的插件。您还需要升级到Android Studio 3.1或更高版本。
直接解决方案是:
在您的最高级别build.gradle
中,将Android gradle插件的类路径更改为3.2.1或更高版本。
classpath 'com.android.tools.build:gradle:3.2.1'
但是,如果您要坚持使用现有的Gradle插件版本,则解决方法/解决方案如下:
选项1:
自mips
起,没有其他ndk-17
体系结构。因此,您可以降级NDK(对于较早版本的NDK,请从此处检查:https://developer.android.com/ndk/downloads/older_releases)或添加abiFilters以排除mips
个ABI。
看到您正在使用 ndk-bundle (这是Android Studio的默认ndk路径设置)。您可以从 local.properties
配置此路径,使其指向您的NDK版本,例如 r16b ,而不是默认的ndk-bundle
。
ndk.dir=<path>/android-ndk-r16b
sdk.dir=<path>/sdk
选项2:
使用以下配置仅过滤必要的ABI。
android {
// Similar to other properties in the defaultConfig block, you can override
// these properties for each product flavor in your build configuration.
defaultConfig {
ndk {
// Tells Gradle to build outputs for the following ABIs and package
// them into your APK.
abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
}
}
}
或者如果您使用的是cmake
buildTypes {
debug {
externalNativeBuild {
cmake {
abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
}
}
}
release {
externalNativeBuild {
cmake {
abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
}
}
}
}
选项3:
另一个解决方法是使用以下配置跳过对mips的剥离:
android {
...
packagingOptions{
doNotStrip '*/mips/*.so'
doNotStrip '*/mips64/*.so'
}
...
}
为您的案例选择最佳选择。