添加 'ndk { abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64' }' 后,Android 应用程序不兼容 64 位

Len*_*ano 5 java 64-bit android kotlin

以下有关如何使Android应用64位兼容谷歌的文档后在这里,Android应用程序包,我一直试图建立还不是64位兼容。

android studio 项目包含不同的模块(应用程序),它们有自己的 build.gradle 文件,但所有应用程序都有一个通用的 build.gradle(Module:app) 和 build.gradle 项目级别。在一般 build.gradle(Module:app) 我添加了以下内容:

 ndk {
            abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
        } 
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

根据谷歌文档到默认配置。我还尝试将相同的代码添加到应用程序的 build.gradle(Module:app) 并构建应用程序包,这里是 lib 文件的样子在此处输入图片说明

gradle 不会生成使应用程序兼容 64 位所需的 x86_64 和 arm64-v8a 文件。例如,我尝试了将 abifilters 放置在何处的不同组合,仅将其添加到根 build.gradle,仅将其添加到应用程序的 build.gradle 中,并且在两者上都有 abifilters,但它不会构建 64 位支持库。

该应用程序是用 Java 构建的,我能够通过添加以下内容来构建 64 位应用程序包:

ndk {
        abiFilters 'arm64-v8a', 'x86_64'
    }
Run Code Online (Sandbox Code Playgroud)

然后分析了这个包,它没有 lib 文件夹,谷歌开发者控制台警告消失了,但我如何为这种情况构建 64 位和 32 位支持库?

RKR*_*KRK 2

您需要64 位支持的文件x86_64armb64-v8a .so您无法在 Android Studio 中构建它们。这是本机库。必须针对这些处理器架构重新构建您正在使用的库的依赖项。

  • 嗨,我发现问题是什么,android studio 项目有一个“jnilibs”目录,其中有“x86”、“mips”、“armeabi-v7a”子文件夹,负责制作 32 位 .so文件。因此我删除了这个文件夹,并且由于该应用程序是用 java 构建的,因此该应用程序变得兼容 64 位。所以谢谢你的回答,它让我明白了我真正在处理什么。 (3认同)