安卓工作室:缺少脱衣舞工具



在使用终端命令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/**"
}
}

相关内容

  • 没有找到相关文章