无法在 Google Play Store 中上传 64 位版本
Not able to Upload 64-bit build in Google play Store
根据最近的 Google 政策变更,我们正在尝试上传 64 位和 32 位版本。
我们在 Build.gradle 中包含了相应的 abifilter“ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
”。
我们能够生成构建,但是当我们将构建上传到 Play 控制台进行 Beta 审核时。它给出一条警告说“版本不符合 64 位 Google 要求”。
我们尝试了所有方法,生成 4 个构建(x86,x86_64,armeabi-v7a,arm64-v8a
),生成两个构建或上传带有所有 abifilter 的通用构建,它给出了相同的警告。我们尝试了所有可能的方法。
请帮助我们完成将构建上传到 Play 商店的完美步骤,或者如果我们在生成构建时犯了任何错误,请也让我们知道这一点。
请检查build.gradle代码:
{
minSdkVersion 19
applicationId 'com.xxx.xxx'
targetSdkVersion 28
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
versionCode 32 // 27-30
versionName '1.2.1'
ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
proguardFile 'proguard-android.txt'
}
另外,我们尝试了下面给出的另一种方法:
splits {
// Configures multiple APKs based on ABI.
abi {
// Enables building multiple APKs per ABI.
enable true
// By default all ABIs are included, so use reset() and include to specify that we only
// want APKs for x86 and x86_64.
// Resets the list of ABIs that Gradle should create APKs for to none.
reset()
// Specifies a list of ABIs that Gradle should create APKs for.
include "x86", "x86_64", "arm64-v8a", "armeabi-v7a"
// Specifies that we do not want to also generate a universal APK that includes all ABIs.
universalApk true
}
}
ext.abiCodes = ["x86": 1, "x86_64": 2, "armeabi-v7a": 3, "arm64-v8a": 4]
import com.android.build.OutputFile
// For each APK output variant, override versionCode with a combination of
// ext.abiCodes * 1000 + variant.versionCode. In this example, variant.versionCode
// is equal to defaultConfig.versionCode. If you configure product flavors that
// define their own versionCode, variant.versionCode uses that value instead.
android.applicationVariants.all { variant ->
// Assigns a different version code for each output APK
// other than the universal APK.
variant.outputs.each { output ->
// Stores the value of ext.abiCodes that is associated with the ABI for this variant.
def baseAbiVersionCode =
// Determines the ABI for this variant and returns the mapped value.
project.ext.abiCodes.get(output.getFilter(OutputFile.ABI))
// Because abiCodes.get() returns null for ABIs that are not mapped by ext.abiCodes,
// the following code does not override the version code for universal APKs.
// However, because we want universal APKs to have the lowest version code,
// this outcome is desirable.
if (baseAbiVersionCode != null) {
// Assigns the new version code to versionCodeOverride, which changes the version code
// for only the output APK, not for the variant itself. Skipping this step simply
// causes Gradle to use the value of variant.versionCode for the APK.
output.versionCodeOverride =
baseAbiVersionCode * 1 + variant.versionCode
}
}
}
首先设置通用 APK = False
关注这个Gradle
android {
compileSdkVersion 28
defaultConfig {
applicationId "photo.abc.video"
minSdkVersion 17
targetSdkVersion 28
versionCode 2
versionName "2.0"
multiDexEnabled true
ndk {
moduleName "andengine_shared"
}
}
useLibrary 'org.apache.http.legacy'
sourceSets {
main {
jni.srcDirs = []
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
checkReleaseBuilds false
abortOnError false
}
splits {
abi {
enable true
reset()
include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
universalApk false
}
}
}
ext.abiCodes = ['x86':1, 'x86_64':2, 'armeabi-v7a':3, 'arm64-v8a':4]
使用Android App Bundle Publishing方法避免这些错误。
google.
将为所有类型的设备构建您的应用程序
经过几天的努力,在这里找到了可行的解决方案:diego.org
基本上,如果您需要 64 位库,您首先需要从源站点(相应的库站点)下载正确的库。检查您使用的库版本是否提供64位库。
然后将其安装到本地 maven 存储库(基本上您的本地 Maven 将用于生成 64 位 apk):
mvn install:install-file -DgroupId= (library group for e.g.org.xwalk) -DartifactId= (library name for e.g.xwalk_core_library) \
-Dversion=(version no for e.g.23.53.589.4-64bit) -Dpackaging=aar \
-Dfile=(file name for e.g.xwalk_core_library-23.53.589.4-64bit.aar) \
-DgeneratePom=true
并更新您的构建 gradle 以便存储库指向您本地的 Maven 存储库:
repositories {
mavenLocal()
}
并且你编译了正确的库:
compile 'org.xwalk:xwalk_core_library:23.53.589.4' // Use this library for generating "armeabi-v7a" & "x86" build
compile 'org.xwalk:xwalk_core_library:23.53.589.4-64bit' // Use this library for generating "arm64-v8a" & "x86_64" build
使用gradle配置:
ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64' // For your flavor or defaultConfig
按照这些步骤将生成两个构建,一个是 32 位,另一个是 64 位,这样做也可以帮助您避免错误,例如"完全阴影 apk"
希望这对您有所帮助。
我解决了我的问题很容易你不需要 mvn install:install-file
直接去下载页面
https://download.01.org/crosswalk/releases/crosswalk/android/maven2/org/xwalk/xwalk_core_library/21.51.546.7/
并下载 2 个库
1- 32 位
2-64 位
这个
xwalk_core_library-21.51.546.7-arm64.aar
还有这个
xwalk_core_library-21.51.546.7-x86.aar
下载后需要用winrar打开文件
取出 x86 libart 并添加到 arm64 文件
所以现在我们在文件上有 2 个库 32 位和 64 位
现在将此库添加到 android stiduo
文件 - 新建 - 新模块 - jar/aar
添加你的库
之后
将您的库添加到您的项目中
在你的版本中 gradle
defaultConfig {
minSdkVersion 16
targetSdkVersion 28
versionCode 17
versionName "3.2"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled = true
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86' ,'x86_64'
}
全部
apk 分析是的,你有 2 个库 32 位和 64 位现在你可以更新你的应用程序
根据最近的 Google 政策变更,我们正在尝试上传 64 位和 32 位版本。
我们在 Build.gradle 中包含了相应的 abifilter“ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
”。
我们能够生成构建,但是当我们将构建上传到 Play 控制台进行 Beta 审核时。它给出一条警告说“版本不符合 64 位 Google 要求”。
我们尝试了所有方法,生成 4 个构建(x86,x86_64,armeabi-v7a,arm64-v8a
),生成两个构建或上传带有所有 abifilter 的通用构建,它给出了相同的警告。我们尝试了所有可能的方法。
请帮助我们完成将构建上传到 Play 商店的完美步骤,或者如果我们在生成构建时犯了任何错误,请也让我们知道这一点。
请检查build.gradle代码:
{
minSdkVersion 19
applicationId 'com.xxx.xxx'
targetSdkVersion 28
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
versionCode 32 // 27-30
versionName '1.2.1'
ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
proguardFile 'proguard-android.txt'
}
另外,我们尝试了下面给出的另一种方法:
splits {
// Configures multiple APKs based on ABI.
abi {
// Enables building multiple APKs per ABI.
enable true
// By default all ABIs are included, so use reset() and include to specify that we only
// want APKs for x86 and x86_64.
// Resets the list of ABIs that Gradle should create APKs for to none.
reset()
// Specifies a list of ABIs that Gradle should create APKs for.
include "x86", "x86_64", "arm64-v8a", "armeabi-v7a"
// Specifies that we do not want to also generate a universal APK that includes all ABIs.
universalApk true
}
}
ext.abiCodes = ["x86": 1, "x86_64": 2, "armeabi-v7a": 3, "arm64-v8a": 4]
import com.android.build.OutputFile
// For each APK output variant, override versionCode with a combination of
// ext.abiCodes * 1000 + variant.versionCode. In this example, variant.versionCode
// is equal to defaultConfig.versionCode. If you configure product flavors that
// define their own versionCode, variant.versionCode uses that value instead.
android.applicationVariants.all { variant ->
// Assigns a different version code for each output APK
// other than the universal APK.
variant.outputs.each { output ->
// Stores the value of ext.abiCodes that is associated with the ABI for this variant.
def baseAbiVersionCode =
// Determines the ABI for this variant and returns the mapped value.
project.ext.abiCodes.get(output.getFilter(OutputFile.ABI))
// Because abiCodes.get() returns null for ABIs that are not mapped by ext.abiCodes,
// the following code does not override the version code for universal APKs.
// However, because we want universal APKs to have the lowest version code,
// this outcome is desirable.
if (baseAbiVersionCode != null) {
// Assigns the new version code to versionCodeOverride, which changes the version code
// for only the output APK, not for the variant itself. Skipping this step simply
// causes Gradle to use the value of variant.versionCode for the APK.
output.versionCodeOverride =
baseAbiVersionCode * 1 + variant.versionCode
}
}
}
首先设置通用 APK = False
关注这个Gradle
android {
compileSdkVersion 28
defaultConfig {
applicationId "photo.abc.video"
minSdkVersion 17
targetSdkVersion 28
versionCode 2
versionName "2.0"
multiDexEnabled true
ndk {
moduleName "andengine_shared"
}
}
useLibrary 'org.apache.http.legacy'
sourceSets {
main {
jni.srcDirs = []
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
checkReleaseBuilds false
abortOnError false
}
splits {
abi {
enable true
reset()
include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
universalApk false
}
}
}
ext.abiCodes = ['x86':1, 'x86_64':2, 'armeabi-v7a':3, 'arm64-v8a':4]
使用Android App Bundle Publishing方法避免这些错误。 google.
将为所有类型的设备构建您的应用程序经过几天的努力,在这里找到了可行的解决方案:diego.org
基本上,如果您需要 64 位库,您首先需要从源站点(相应的库站点)下载正确的库。检查您使用的库版本是否提供64位库。
然后将其安装到本地 maven 存储库(基本上您的本地 Maven 将用于生成 64 位 apk):
mvn install:install-file -DgroupId= (library group for e.g.org.xwalk) -DartifactId= (library name for e.g.xwalk_core_library) \
-Dversion=(version no for e.g.23.53.589.4-64bit) -Dpackaging=aar \
-Dfile=(file name for e.g.xwalk_core_library-23.53.589.4-64bit.aar) \
-DgeneratePom=true
并更新您的构建 gradle 以便存储库指向您本地的 Maven 存储库:
repositories {
mavenLocal()
}
并且你编译了正确的库:
compile 'org.xwalk:xwalk_core_library:23.53.589.4' // Use this library for generating "armeabi-v7a" & "x86" build
compile 'org.xwalk:xwalk_core_library:23.53.589.4-64bit' // Use this library for generating "arm64-v8a" & "x86_64" build
使用gradle配置:
ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64' // For your flavor or defaultConfig
按照这些步骤将生成两个构建,一个是 32 位,另一个是 64 位,这样做也可以帮助您避免错误,例如"完全阴影 apk"
希望这对您有所帮助。
我解决了我的问题很容易你不需要 mvn install:install-file
直接去下载页面
https://download.01.org/crosswalk/releases/crosswalk/android/maven2/org/xwalk/xwalk_core_library/21.51.546.7/
并下载 2 个库
1- 32 位
2-64 位
这个
xwalk_core_library-21.51.546.7-arm64.aar
还有这个
xwalk_core_library-21.51.546.7-x86.aar
下载后需要用winrar打开文件
取出 x86 libart 并添加到 arm64 文件
所以现在我们在文件上有 2 个库 32 位和 64 位
现在将此库添加到 android stiduo
文件 - 新建 - 新模块 - jar/aar
添加你的库
之后
将您的库添加到您的项目中
在你的版本中 gradle
defaultConfig {
minSdkVersion 16
targetSdkVersion 28
versionCode 17
versionName "3.2"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled = true
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86' ,'x86_64'
}
全部
apk 分析是的,你有 2 个库 32 位和 64 位现在你可以更新你的应用程序