为移动设备和电视发布具有不同过滤器的多个 apk

Posted

技术标签:

【中文标题】为移动设备和电视发布具有不同过滤器的多个 apk【英文标题】:Publishing multiple apks with different filters for mobile and tv 【发布时间】:2017-02-03 09:01:23 【问题描述】:

我想发布多个 apk:一个用于移动设备,另一个用于同一应用程序中的 androidtv。根据Publishing Multiple APKs with Different Filters,同一应用程序中只有四个不同的过滤器:

目前,Google Play 允许您为 只有当每个 APK 提供不同的基于过滤器的过滤器时,相同的应用程序 在以下配置上:

OpenGL 纹理压缩格式

屏幕尺寸(以及可选的屏幕密度)

API 级别

CPU 架构 (ABI)

所有其他过滤器仍然像往常一样工作,但这四个是 只有过滤器可以区分同一个 APK 中的另一个 Google Play 上的应用程序列表。例如,您不能发布 如果 APK 仅基于不同的 APK,则同一应用程序的多个 APK 关于设备是否有摄像头。

我想通过 API 级别和屏幕大小来区分,但似乎有重叠:

    androidtv 应用程序的 API 级别 (MinSDK) 保持在 21,移动应用程序的 API 级别保持在 16。因此 API 级别(21 及以上)存在重叠。

    Android 电视的屏幕尺寸可能与平板电脑的屏幕尺寸重叠: 例如。 common high-definition TV display resolutions 是 720p、1080i 和 1080p。 Samsung nexus 的分辨率也是 720x1280。

我担心如果我发布更高版本的 androidtv apk,它可能会替换平板电脑上 API 级别 >= 21 且屏幕尺寸为 720x1280 且也符合电视应用布局尺寸的移动应用。

那么如何在应用清单中使用不同的过滤器清楚地区分这两个 apk?

更新

我已经在 androidtv 应用的清单中添加了后仰功能

<manifest>
    <uses-feature android:name="android.software.leanback"
        android:required="true" />
    ...
</manifest>

我看到 androidtv apk 支持 42 个设备(看不到哪些设备),移动 apk 设备支持 10791 个设备,整个应用程序总共支持 10832 个设备。

10791 + 42 = 10833

因此仍有可能存在 1 (10833 - 10832 = 1) 个重叠设备,因此会显示警告。

重叠警告

androidtv APK

移动apk

设备总数

我不认为重叠消息是因为 androidtv apk 是移动 apk 的超集,正如 cmets 中提到的,它查看 androidtv 支持的设备数量要少得多。

由于只有一个可能的重叠设备,我将发布它,但我希望我知道哪些设备重叠以接收两个 apk。

【问题讨论】:

【参考方案1】:

实际上有一个“功能”用于专门针对 Android TV。您可以在docs 中查看说明。但基本上你只需要指定它使用leanback 功能,如下所示。

<manifest>
    <uses-feature android:name="android.software.leanback"
        android:required="true" />
    ...
</manifest>

这将确保任何运行 Leanback 的电视设备都能获取您的 APK(如果您使用的是一个 APK,则可以设置 required=false)。我相信所有官方的安卓电视都在使用这个功能。可能会在非电视设备上使用leanback,但在这种情况下,他们的所有应用都将显示为电视应用。

您可以针对 Android TV 禁用/启用其他几项功能,您可以查看release checklist 了解更多信息(特别是this section)。

需要注意的一点是,您的移动 APK 和 TV APK 可能会满足一些重叠的设备。在与 Play 管理中心团队的代表交谈后,他们推荐了解决此问题的方法:

关于您拥有重叠设备的多 apk 方案 - 是的,您的 Android TV APK 始终需要具有更高版本的代码。有几个选项可以帮助解决这个问题:

    您可以手动将 2 个重叠设备列入黑名单。这将立即解决重叠 APK 的问题,但是如果将来发布符合这两个 APK 条件的新设备,您将再次面临此问题。

    为您的 Android TV APK 使用明显高于移动设备 APK 的版本代码方案。例如,您的 TV APK 可以是现有版本代码 + 100000 或 100808,而您的移动设备 APK 仍为 838。在这种情况下,您可以发布版本代码为 100808 的移动设备 APK,而无需更新您的 Android TV APK每一次推动。这也将解决 Alpha/Beta 测试 Android TV APK 的任何问题。

this doc 的“分配版本代码”部分也介绍了他的回复。

【讨论】:

我在清单中添加了倾斜功能,但在控制台中看到了重叠设备的警告。确切消息:“某些设备有资格运行多个 APK。在这种情况下,设备将收到具有更高版本代码的 APK。” 没错,但基本上该消息是说您的 Android TV APK 是您的移动 APK 的超集,但 Play 商店仍然足够聪明,可以知道您的 Android TV APK 更多具体的。您应该在 TV APK 上设置 required=true。有关确切规则,请参阅rules for multiple apks 部分。该文档建议始终使用更高版本代码发布您的 Android TV APK,以确保如果电视具有后倾功能,它总是会选择后倾 APK。 这是否意味着我每次发布移动应用程序 apk 时都必须发布具有递增版本代码的 androidtv apk,即使我对 androidtv 代码没有任何更改?在这种情况下,用户会收到 androidtv 的更新通知吗? 我只是做了一些挖掘并发送了一些电子邮件,看起来你的问题的答案是“有点”。我添加了对我的 OP 的完整回复。但基本上,您需要始终为您的 Android APK 提供更高版本的代码。您可以上传具有比当前电视 APK 更低版本代码的移动 APK,这样电视将始终是选定的。

以上是关于为移动设备和电视发布具有不同过滤器的多个 apk的主要内容,如果未能解决你的问题,请参考以下文章

对 Android TV 和手机的多个 apk 支持

华为AppGallery中一款适用于移动设备和电视的应用程序

适用于移动和电视的 Android 通用应用程序 (Lollipop)

多个APK版本具有不同的功能

Android TV apk:禁止降级以前使用M权限的设备

安卓电视应用