在使用终端命令gradle clean assembleRelease
构建我的android studio代码时,我不断收到此警告:
Unable to strip library 'lib.so' due to missing strip tool for ABI 'ARMEABI'. Packaging it as is.
请帮助我解决此警告的方法。
注意:我知道这不会影响我的应用程序的行为,但是我的APK太大了,这肯定会帮助我减小APK的大小。所以我需要解决这个问题。
答案 0 :(得分:7)
默认安装的NDK似乎不具备剥离使用ARMEABI支持构建的二进制文件所需的工具,因此最终打包了整个库,这大大增加了构建文件的大小。
我发现,从Android Studio->工具-> SDK管理器-> SDK工具安装“ NDK(并排)”工具可解决此警告,并减少了内置的APK大小,尤其是对于React Native项目。
答案 1 :(得分:2)
安装NDK的步骤(并排安装)
Android Studio
Configure/ Tools
SDK Manager
SDK Tools
标签
NDK (Side by side)
CMake
Android SDK Command-line Tools (latest)
Apply
注意:不需要Android SDK Command-line Tools (latest)
,但是我安装了它,这样我就不必搜索更多解决方案了,今天要进行新的React Native应用程序的运行很麻烦。
更多信息:https://developer.android.com/studio/projects/install-ndk
答案 2 :(得分:1)
专门针对React Native的可能解决方案:
当尝试通过执行cd android/ && ./gradlew assembleDebug
(未打开Android Studio)从命令行构建React Native应用程序时遇到了这个问题。
我打开了Android Studio,在那建立了应用程序,它会自动解决问题。一旦我通过命令行再次尝试,问题就不再发生。
答案 3 :(得分:1)
我想结合所有现有的答案并添加更多解释/细节。
首先,就像其他人提到的那样,检查您是否安装了 Android NDK(Android Studio -> 工具 -> SDK 管理器 -> SDK 工具中的 NDK(并排))。但这仍然不足以修复此警告。
Android NDK 提供了一个 supported ABIs 列表,其中有一条说明不再支持“armeabi”:
<块引用>过去,NDK 支持 ARMv5 (armeabi)、32 位和 64 位 MIPS,但 NDK r17 中删除了对这些 ABI 的支持。
因此,如果您的应用需要支持 ARMv5/6 设备(这不太可能 - 这些设备已经很旧了),您应该:
如果不需要支持 ARMv5/6,您可能仍然希望支持 ARMv7 ABI 'armeabi-v7a'。同样,有两个选项:
如果该库不属于您,您可能应该要求其维护者修复它。
但如果甚至不需要支持 ARMv7,请随意排除库:
android {
packagingOptions {
exclude "lib/armeabi/**"
}
}
答案 4 :(得分:0)
您可以尝试在app / build.gradle中使用以下配置。
android {
packagingOptions {
// exclude ARMEABI native so file, ARMEABI has been removed in NDK r17.
exclude "lib/armeabi/**"
}
}
Remove (or make optional) MIPS native library #3504
Android-ABIs