如何解决 AAB 版本中的 Google Play 64 位错误?
Posted
技术标签:
【中文标题】如何解决 AAB 版本中的 Google Play 64 位错误?【英文标题】:How to resolve Google Play 64 bit error in AAB release? 【发布时间】:2020-01-24 08:57:11 【问题描述】:我从 2 天开始就一直在尝试上传 apk。每次我上传 apk 时都会出现 64 位错误。我知道 *** 上还有其他问题问同样的问题。但他们中的大多数人都在说颤振的解决方案。
根据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 文件夹中显示相同。
【问题讨论】:
任何外部 SDK 或库使用 ?有模块吗? @IntelliJAmiya 我正在使用一个外部库和两个 aar gradle lib How to build app compliant with Google Play 64-bit requirement?的可能重复 @TomazMazej:我不想要 Flutter 解决方案 【参考方案1】:我尝试了很多解决方案,但没有奏效。后来我发现游戏控制台版本中有一个 RETAINED APK 存在,它是 32 位的。然后我将其停用并上传了新的 apk 并成功运行
【讨论】:
【参考方案2】:如果你说你“发现有 .so 文件”,我假设你的项目没有编译,而只是使用它们。然后,您需要此本机库以用于生成此库的 NDK 项目中缺少的架构。不能仅通过项目中的不同配置来完成。
【讨论】:
你能给我解释一下“然后你需要这个本机库来解决产生这个库的 NDK 项目中缺少的架构” android-developers.googleblog.com/2019/01/… 创建本机库(您正在使用)的项目不仅会生成一个 .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 。我不明白你在说什么?以上是关于如何解决 AAB 版本中的 Google Play 64 位错误?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 Google Play 的同一版本中使用 aab 和 apk?
Unity aab 不符合 Google Play 64 位要求
如何将超过 150MB 的 Android App Bundle (.aab) 上传到 Google Play