【问题标题】:How to resolve Google Play 64 bit error in AAB release?如何解决 AAB 版本中的 Google Play 64 位错误?
【发布时间】:2020-01-24 08:57:11
【问题描述】:

我从 2 天开始就一直在尝试上传 apk。每次我上传 apk 时都会出现 64 位错误。我知道 Stackoverflow 上还有其他问题问同样的问题。但他们中的大多数人都在说颤振的解决方案。

根据Google Documentation我使用APK Analyze发现我的项目中有.so文件。

根据我添加的文档 ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'。但我仍然得到同样的错误。

请检查我的 build.gradle 代码。

android {


compileSdkVersion 29
buildToolsVersion '29.0.0'
defaultConfig {
    applicationId "com.XXXXX"
    minSdkVersion 15
    targetSdkVersion 29
    versionCode 237
    versionName "3.3.20"
    multiDexEnabled true

    //ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86_64' - not worked
    ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
}

applicationVariants.all { variant ->
    variant.resValue "string", "versionName", variant.versionName
}

lintOptions {
    checkReleaseBuilds false
    // Or, if you prefer, you can continue to check for errors in release builds,
    // but continue the build even when errors are found:
    abortOnError false
}

flavorDimensions "default"

buildTypes {

    release {
        shrinkResources true
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

dexOptions {
    jumboMode true
    javaMaxHeapSize "4g"
}

productFlavors {
    production {
        applicationId 'com.XXXXX'
    }

    staging {
        applicationId 'com.XXXXX.staging'
    }
}

// Add this block and enable/disable the parameters as follows
bundle {
    density {
        // Different APKs are generated for devices with different screen densities; true by default.
        enableSplit true
    }
    abi {
        // Different APKs are generated for devices with different CPU architectures; true by default.
        enableSplit true
    }
    language {
        // This is disabled so that the App Bundle does NOT split the APK for each language.
        // We're gonna use the same APK for all languages.
        enableSplit false
    }
}}

请帮我解决问题。

创建签名包 apk 后,.so 文件在 armeabi-v7a、arm64-v8a、x86、x86_64 文件夹中显示相同。

【问题讨论】:

标签: android android-studio google-play 64-bit google-play-console


【解决方案1】:

我尝试了很多解决方案,但没有奏效。后来我发现游戏控制台版本中有一个 RETAINED APK 存在,它是 32 位的。然后我将其停用并上传了新的 apk 并成功运行

【讨论】:

    【解决方案2】:

    如果你说你“发现有 .so 文件”,我假设你的项目没有编译,而只是使用它们。然后,您需要此本机库以用于生成此库的 NDK 项目中缺少的架构。不能仅通过项目中的不同配置来完成。

    【讨论】:

    • 你能给我解释一下“然后你需要这个本机库来解决产生这个库的 NDK 项目中缺少的架构”
    • 创建本机库(您正在使用)的项目不仅会生成一个 .so 文件,还会生成多个文件,因为每个架构都需要自己的。我只能假设您的 .so 文件来自一个较旧的项目,该项目没有为现在需要的 64 位架构创建它们。
    • @georgij 我正在使用最新版本的库,我正在使用它
    • 如果您知道哪个库提供了 .so 文件,请查看内部(如果可以)并检查存在哪些架构。
    【解决方案3】:

    无需添加此行 ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64' (去掉此行)

    请将此代码添加到您的 build.gradle 文件中

    -发布 Apk 后,您的发布文件夹中有 2 个 apk 文件

    -现在您可以使用 app-arm64-v8a-release.apk 进行 Playstore 发布

    -我希望这对你有用

    android {
    lintOptions{
    ....
    }
    splits {
        abi {
            enable true
            reset()
            include 'armeabi-v7a', 'arm64-v8a'
            universalApk false
        }
    }
    

    }

    【讨论】:

    • 我使用的是 bundle abb 而不是 apk。在上述情况下,它适用于所有设备吗?有32位用户也在使用小米应用
    • reset() 方法在我的项目中找不到
    • 嗨,朋友,我有另一种方式来构建 32 位和 64 位发布应用程序或捆绑包, 请将此代码添加到您的 build.gradle 文件 defaultConfig { applicationId "com.XXXXX" minSdkVersion 15 targetSdkVersion 29 versionCode 237 versionName "3.3.20" multiDexEnabled true ndk { abiFilters 'arm64-v8a', 'x86_64' } } 注意:删除这个函数 splits { abi { enable true reset() include 'armeabi-v7a', 'arm64 -v8a'universalApk false } }
    【解决方案4】:

    嗨,朋友,我有另一种方法来构建 32 位和 64 位发布应用程序或捆绑包。

    请将此代码添加到您的 build.gradle 文件中

    defaultConfig {
    applicationId "com.XXXXX"
    minSdkVersion 15
    targetSdkVersion 29
    versionCode 237
    versionName "3.3.20"
    multiDexEnabled true
    
    ndk {
            abiFilters 'arm64-v8a', 'x86_64'
        }
    }
    

    注意:删除下面的函数

    splits {
    abi {
        enable true
        reset()
        include 'armeabi-v7a', 'arm64-v8a'
        universalApk false
    }
    }
    

    【讨论】:

    • 1) 您的应用上线了吗? 2) reset() & include 在我的工作室中无法解决。 Mine Studio 是 3.5,项目是 3.5.0,分发 url 是 5.4.1。我可以知道这些细节吗?
    • 是的,我的应用程序已在 Playstore play.google.com/store/apps/details?id=com.dnk.soleildiamondstab 上运行,我也使用 andriod studio 3.5 这是我的依赖项依赖项 { classpath 'com.android.tools.build:gradle:3.3.1' } distributionUrl=https \://services.gradle.org/distributions/gradle-4.10.1-all.zip
    • 但在我的工作室中找不到 reset() 和 include()。你是怎么做到的?
    • 从 app gradle splits { abi { enable true reset() include 'armeabi-v7a', 'arm64-v8a' universalApk false } } 中移除此代码
    • 兄弟,我的项目中没有使用 splits { abi { enable true reset() include 'armeabi-v7a', 'arm64-v8a' universalApk false } }。我不明白你在说什么?
    猜你喜欢
    • 2019-12-11
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 2020-08-02
    • 2020-05-22
    • 2021-01-17
    相关资源
    最近更新 更多