背景
Android应用程序有2个版本:1个用于移动设备,1个用于Android TV。
Android TV APK版本代码应远远高于移动设备Android APK版本代码
APK for mobile devices的版本代码如10,11,12等。
APK for Android TV devices的版本代码如10001,10010等。
由于这两个APK都是通过Google Play中的一个应用配置发布的,因此我们有“共享”的alpha / beta曲目。当我们发布时,我们只保留多个APK(1个用于电视和1个移动设备)。
我想使用Google Gradle plugin或Jenkins plugin使用Google Play API将APK上传到Google Play alpha / beta曲目。
我选择哪种方法并不重要,我在尝试上传移动设备APK时出错。
上传失败: - 如果符合以下条件,则此应用版本为10002的设备将降级为版本54:[(API_LEVEL in range 19-0 AND RELEASE_TRACK包含[[BETA]]和SCREENS中的任何一个 包含[[small,normal,large,xlarge]] AND中的任何一个 NATIVE_PLATFORM包含[[x86_64,x86,armeabi-v7a, arm64-v8a]]和GL_ES_VERSION,范围131072-0 AND FEATURES 包含所有[android.hardware.screen.portrait, android.software.leanback,android.hardware.faketouch])]。
此错误明确表示我无法上传带有54版本代码(移动设备)的APK,因为带有10002版本代码(Android TV)的APK已经在Google Play中。
但 Google Play允许我手动完成此操作(通过Google Play控制台用户界面) - 使用APK(54版本代码)创建测试版并保留现有的测试版APK(10002版本代码)。
问题
是否可以通过Google Play API上传适用于移动设备和Android电视设备的APK?
有没有什么方法可以将APK移动设备上传到alpha / beta轨道并自动保留上传之前的alpha / beta轨道APK?
答案 0 :(得分:1)
首先,我建议为移动应用提供与电视应用中相同数字范围的版本号 - 示例:
// map for the version code
project.ext.versionCodes = ['tv': 1, 'mobile': 2]
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
output.versionCodeOverride =
project.ext.versionCodes.get(output.getFilter(
com.android.build.OutputFile.ABI), 0) * 10000000 + android.defaultConfig.versionCode
}
}
由于用户将始终获得更高版本号的产品,因此您需要更高版本号将具有移动设备的标准,而较低版本则是所有未能符合条件的设备的后备。 如果需要更细粒度的控制,您还可以创建特定的风格。 我正在使用基于ABI的拆分以及使用Triple-T插件,这适用于我部署的所有版本。