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

Vea*_*rji 8 android apk google-api-java-client google-api-client

背景

Android应用程序有2个版本:1个用于移动设备,1个用于Android TV.
Android TV APK版本代码应远远高于移动设备Android APK版本代码.
APK for mobile devices有版本代码,如10,11,12等
.APK为Android TV设备有版本代码,如10001,10010等.

由于这两个APK都是通过Google Play中的一个应用配置发布的,因此我们有"共享"alpha/beta曲目.当我们发布时,我们只保留多个APK(1个用于电视和1个移动设备).

我想使用Google Play API使用Gradle插件Jenkins插件将APK上传到Google Play alpha/beta曲目.
我选择哪种方法并不重要,当我尝试上传移动设备的APK时,我收到错误.

上传失败: - 如果符合以下条件,则此应用版本为10002的设备将降级为版本54:[(API_LEVEL在范围19-0和RELEASE_TRACK中包含[[BETA]]和SCREENS中的任何一个,其中包含任何一个[[small,normal,large,xlarge]]和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轨道并自动保留APK从alpha/beta轨道上传之前有?

MaT*_*iXy 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
        }
    }
Run Code Online (Sandbox Code Playgroud)

由于用户总是会获得向他们出售的较高版本号,因此您需要较高版本号将具有移动设备的标准,而较低版本号是所有不符合资格的设备的后备版本。如果需要更精细的控制,您还可以创建特定的口味。我正在使用基于 ABI 的拆分以及使用 Triple-T 插件,这适用于我部署的所有版本。