【发布时间】:2019-05-21 20:27:00
【问题描述】:
更新:尝试将“v7a”ABI 版本代码降低到前缀 4(低于 5,即“v8”),但没有任何运气
目前我的应用程序处于 Alpha 阶段。每个 APK 都是通过相同的 ABI 拆分和每个 ABI(包括代码)的相同版本乘法生成的,生成到“armeabi-v7a”和“arm64-v8a”。尽管到目前为止我只上传了“v8a”APK。现在,当我尝试上传“v7a”时,我从 google play 控制台收到以下错误:
问题: 此 APK 不会提供给任何用户,因为它完全被一个或多个具有更高版本代码的 APK 所掩盖。 解决: 从您的版本中删除此 APK,或查看您在此版本中包含的 APK 的定位和版本代码。
android {
compileSdkVersion 26
buildToolsVersion '28.0.3'
defaultConfig {
multiDexEnabled true
minSdkVersion 21
versionCode 28
versionName "1.36"
targetSdkVersion 26
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
if (nativeBuildSystem == 'cmake') {
externalNativeBuild {
cmake {
arguments '-DANDROID_TOOLCHAIN=gcc', '-DANDROID_STL=gnustl_static'
}
}
}
}
if (nativeBuildSystem == 'cmake') {
externalNativeBuild {
cmake {
path './jni/CMakeLists.txt'
}
}
}
// special for TFLite without it we will get an error when trying
// to use 'detect.tflite' assets file
aaptOptions {
noCompress "tflite"
}
splits {
abi {
enable true
reset()
include "armeabi-v7a", "arm64-v8a"
universalApk false
}
}
lintOptions {
abortOnError false
}
sourceSets {
main {
if (nativeBuildSystem == 'bazel' || nativeBuildSystem == 'makefile') {
// TensorFlow Java API sources.
java {
srcDir '../../java/src/main/java'
exclude '**/examples/**'
}
// Android TensorFlow wrappers, etc.
java {
srcDir '../../contrib/android/java'
}
}
// Android demo app sources.
java {
srcDir 'src'
}
manifest.srcFile 'AndroidManifest.xml'
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = [project.ext.ASSET_DIR]
}
androidTest {
java.srcDirs = ['src/androidTest/java', 'src']
}
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
}
版本代码分离:
ext.versionCodes = ['arm64-v8a': 5, 'armeabi-v7a': 6]
import com.android.build.OutputFile
android.applicationVariants.all { variant ->
// assign different version code for each output
variant.outputs.each { output ->
def abiFilter = output.getFilter(OutputFile.ABI)
def abiMultiplier = 0
if (abiFilter != null) {
abiMultiplier = (int) project.ext.versionCodes.get(abiFilter)
}
output.versionCodeOverride = (int) abiMultiplier * 1000 + (int) android.defaultConfig.versionCode
}
}
还附上了游戏控制台的屏幕截图。似乎“v7a”APK 的版本正在遮盖“v8”,好像播放控制台似乎没有区分它们之间的架构。这一假设也得到了以下事实的支持:每个 APK 的描述都说 APK 支持这两个平台。
【问题讨论】:
-
运气好,我也面临同样的问题?
标签: android android-gradle-plugin apk abi