在使用终端命令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的大小。所以我需要解决这个问题。
默认安装的NDK似乎没有剥离支持ARMEABI构建的二进制文件所需的工具,因此它最终打包了整个库,这大大增加了构建的文件大小。
我发现,从Android Studio->Tools->SDK Manager->SDK Tools安装"NDK(并排("工具可以解决这个警告,还可以减少构建的APK大小,尤其是对于React Native项目。
安装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
您可以尝试在app/build.gradle.中使用以下配置
android {
packagingOptions {
// exclude ARMEABI native so file, ARMEABI has been removed in NDK r17.
exclude "lib/armeabi/**"
}
}
删除(或使其成为可选(MIPS本机库#3504
Android ABIs
专门针对React Native的可能解决方案:
我在尝试通过执行cd android/ && ./gradlew assembleDebug
(没有打开Android Studio(从命令行构建React Native应用程序时遇到了这个问题。
我打开了安卓工作室,在那里构建了应用程序,它自动解决了这个问题。当我再次通过命令行尝试时,问题不再发生。
我想结合所有现有的答案,并添加更多的解释/细节。
首先,就像其他人提到的一样,检查你是否安装了Android NDK(NDK(并排(在Android Studio中->工具->SDK管理器->SDK工具(。但这仍然不足以解决这个警告。
有一个Android NDK支持的ABI列表,它有一个注释,说"armeabi"不再支持:
从历史上看,NDK支持ARMv5(armeabi(、32位和64位MIPS,但在NDK r17中删除了对这些ABI的支持。
因此,如果您的应用程序需要支持ARMv5/6设备(这不太可能——这些设备都很旧(,您应该:
- 使用较旧的NDK<支持armeabi ABI的r17(在SDK Manager中选择其他版本(
- 忽略警告。在这种情况下,即使使用较新的NDK,库仍将在较旧的设备上工作,但将被打包在每个ABI的APK中,包括较新的ABI(这导致APK大小增加(
如果不需要支持ARMv5/6,您可能仍然希望支持ARMv7 ABI"armeabi-v7a"。再一次,有两种选择:
- 使用支持"armeabi-v7a"ABI的新安卓NDK重新编译共享库
- (不推荐(将"armeabi"文件夹重命名为"armeabi-v7a">(我不确定这些ABI的库是否兼容(
如果库不属于你,你可能应该让它的维护人员来修复它。
但是,如果甚至不需要支持ARMv7,请随意排除库:
android {
packagingOptions {
exclude "lib/armeabi/**"
}
}