Android Studio:缺少工具条

时间:2018-11-22 20:28:10

标签: android android-studio arm static-libraries abi

在使用终端命令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的大小。所以我需要解决这个问题。

5 个答案:

答案 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 设备(这不太可能 - 这些设备已经很旧了),您应该:

  • 使用支持“armeabi”ABI 的旧版 NDK
  • 忽略警告。在这种情况下,即使使用较新的 NDK,该库仍可在较旧的设备上运行将为每个 ABI 打包在 APK 中,包括较新的(这会导致 APK 大小增加)

如果不需要支持 ARMv5/6,您可能仍然希望支持 ARMv7 ABI 'armeabi-v7a'。同样,有两个选项:

  • 使用支持“armeabi-v7a”ABI 的较新 Android NDK 重新编译共享库
  • (不推荐) 将“armeabi”文件夹重命名为“armeabi-v7a”(我不确定这些 ABI 的库是否兼容)

如果该库不属于您,您可能应该要求其维护者修复它。

但如果甚至不需要支持 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