如何解决 Google 在 AAB 版本中播放 64 位错误?

How to resolve Google Play 64 bit error in AAB release?

我从 2 天前就开始尝试上传 apk。每次我上传 apk 时,我都会收到 64 位错误。我知道 Whosebug 上还有其他问题问同样的事情。但是他们中的大多数人都说了 flutter 的解决方案。

根据Google Documentation I used 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 文件夹中显示相同。

如果你说你 "found that there are .so files" 我假设你的项目没有编译而只是使用它们。然后,您需要此原生库,用于生成此库的 NDK 项目中缺少的体系结构。它不能仅通过项目中的不同配置来完成。

无需添加此行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
    }
}

}

嗨,朋友,我有另一种构建 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
}
}

我尝试了很多解决方案但都没有用。后来我发现游戏控制台版本中存在 RETAINED APK 并且具有 32 位。然后我停用了它并上传了新的 apk & 它成功地工作了