草庐IT

android - 为手机和电视发布具有不同过滤器的多个 apk

coder 2023-12-02 原文

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

Currently, Google Play allows you to publish multiple APKs for the same application only when each APK provides different filters based on the following configurations:

  • OpenGL texture compression formats

  • Screen size (and, optionally, screen density)

  • API level

  • CPU Architecture (ABI)

All other filters still work the same as usual, but these four are the only filters that can distinguish one APK from another within the same application listing on Google Play. For example, you cannot publish multiple APKs for the same application if the APKs differ only based on whether the device has a camera.

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

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

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

我担心如果我发布更高版本的 androidtv apk,它可能会取代 API 级别 >= 21 和屏幕尺寸 720x1280 的平板电脑上的移动应用程序,这也符合电视应用程序布局尺寸的要求。

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

更新

我已经在 androidtv 应用程序的 list 中添加了 leanback 功能

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

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

10791 + 42 = 10833

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

重叠警告

安卓电视APK

手机应用

设备总数

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

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

最佳答案

实际上有一个专门针对 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 和电视 APK 可能都满足一些重叠的设备。在与 Play 管理中心团队的代表交谈后,他们推荐了解决该问题的方法:

Regarding the multi-apk scenario where you have overlapping devices - yes, your Android TV APK would always need to have a higher version code. There are a few options to help resolve this:

  1. You can manually blacklist the 2 overlapping devices. This would immediately resolve the issue with overlapping APKs, however if new devices are released in the future that are eligible for both APKs you would face this issue again.

  2. Use a version code scheme for your Android TV APK that is significantly higher than your mobile device APK. For example, your TV APK can be existing version code + 100000, or 100808, while your mobile device APK remains at 838. In this scenario, you could publish mobile device APKs up to version code 100808 without having to update your Android TV APK with every push. This would also resolve any issues with Alpha/Beta testing Android TV APKs.

他的回复也包含在 this doc 的“分配版本代码”部分中.

关于android - 为手机和电视发布具有不同过滤器的多个 apk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39695701/

有关android - 为手机和电视发布具有不同过滤器的多个 apk的更多相关文章

  1. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  2. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  3. ruby-on-rails - 在 Ruby 中循环遍历多个数组 - 2

    我有多个ActiveRecord子类Item的实例数组,我需要根据最早的事件循环打印。在这种情况下,我需要打印付款和维护日期,如下所示:ItemAmaintenancerequiredin5daysItemBpaymentrequiredin6daysItemApaymentrequiredin7daysItemBmaintenancerequiredin8days我目前有两个查询,用于查找maintenance和payment项目(非排他性查询),并输出如下内容:paymentrequiredin...maintenancerequiredin...有什么方法可以改善上述(丑陋的)代

  4. ruby-on-rails - Rails - 一个 View 中的多个模型 - 2

    我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何

  5. ruby - 多个属性的 update_column 方法 - 2

    我有一个具有一些属性的模型:attr1、attr2和attr3。我需要在不执行回调和验证的情况下更新此属性。我找到了update_column方法,但我想同时更新三个属性。我需要这样的东西:update_columns({attr1:val1,attr2:val2,attr3:val3})代替update_column(attr1,val1)update_column(attr2,val2)update_column(attr3,val3) 最佳答案 您可以使用update_columns(attr1:val1,attr2:val2

  6. ruby-on-rails - 在 ruby​​ .gemspec 文件中,如何指定依赖项的多个版本? - 2

    我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这

  7. ruby - 使用多个数组创建计数 - 2

    我正在尝试按0-9和a-z的顺序创建数字和字母列表。我有一组值value_array=['0','1','2','3','4','5','6','7','8','9','a','b','光盘','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','','u','v','w','x','y','z']和一个组合列表的数组,按顺序,这些数字可以产生x个字符,比方说三个list_array=[]和一个当前字母和数字组合的数组(在将它插入列表数组之前我会把它变成一个字符串,]current_combo['0','0','0']

  8. ruby-on-rails - before_filter 运行多个方法 - 2

    是否有可能:before_filter:authenticate_user!||:authenticate_admin! 最佳答案 before_filter:do_authenticationdefdo_authenticationauthenticate_user!||authenticate_admin!end 关于ruby-on-rails-before_filter运行多个方法,我们在StackOverflow上找到一个类似的问题: https://

  9. ruby-on-rails - Rails 3.1 中具有相同形式的多个模型? - 2

    我正在使用Rails3.1并在一个论坛上工作。我有一个名为Topic的模型,每个模型都有许多Post。当用户创建新主题时,他们也应该创建第一个Post。但是,我不确定如何以相同的形式执行此操作。这是我的代码:classTopic:destroyaccepts_nested_attributes_for:postsvalidates_presence_of:titleendclassPost...但这似乎不起作用。有什么想法吗?谢谢! 最佳答案 @Pablo的回答似乎有你需要的一切。但更具体地说...首先改变你View中的这一行对此#

  10. ruby-on-rails - 使用 ruby​​ 将多个实例变量转换为散列的更好方法? - 2

    我收到格式为的回复#我需要将其转换为哈希值(针对活跃商家)。目前我正在遍历变量并执行此操作:response.instance_variables.eachdo|r|my_hash.merge!(r.to_s.delete("@").intern=>response.instance_eval(r.to_s.delete("@")))end这有效,它将生成{:first="charlie",:last=>"kelly"},但它似乎有点hacky和不稳定。有更好的方法吗?编辑:我刚刚意识到我可以使用instance_variable_get作为该等式的第二部分,但这仍然是主要问题。

随机推荐