如何通过Google Play API将Android和Android TV APK上传到Google Play

时间:2018-03-14 16:26:27

标签: android apk google-api-client google-api-java-client

背景

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 pluginJenkins 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?

1 个答案:

答案 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插件,这适用于我部署的所有版本。