发布 Android 应用程序 - 区分 APK 详细信息 - “本机平台” = 无?

Posted

技术标签:

【中文标题】发布 Android 应用程序 - 区分 APK 详细信息 - “本机平台” = 无?【英文标题】:Publishing Android app - Differentiating APK details - "native platform" = none? 【发布时间】:2017-09-24 23:32:42 【问题描述】:

编辑:

根据@marbarfa 's answer,这似乎与第 3 方库有关。 阅读他的回答和评论以获得完整的解释。

谢谢马尔巴法!


使用新的 Google Play 开发者控制台,我面临一个奇怪的情况: 我最近切换到 Facefbook 的 fresco 图片加载库,这也许可以解释我的问题。

(此处可能报告了类似的问题:Google play, publishing app update, issue with 'Native platforms')

在将 beta 版本推广到生产环境的过程中,我遇到了这样的情况:

在新的 Google Play 控制台上,在发布管理/应用发布下,当在“新版本到生产(从 beta 2.2.0 升级)”中看到这一点

“原生平台”值从 arm64-v8a、armeabi、armeabi-v7a、x86、x86_64 更改为无

“以前的 APK”的 Google Play 控制台页面代码摘录:

Differentiating APK details
Native platforms

arm64-v8a, armeabi, armeabi-v7a, x86, x86_64

“新 APK”(Facebook 的 Fresco 的 Beta 版)的 Google Play 控制台页面代码摘录:

Differentiating APK details
Native platforms

none

我更新了我所有的(10 个!)应用程序,似乎没问题(支持的设备数量相同,即 11434),但我仍然对不了解到底发生了什么感到不舒服。

谁能解释一下?

谢谢!

【问题讨论】:

你解决了吗? 还没有。但目前一切似乎都很好。 【参考方案1】:

我会尽量简单地解释问题:

当您拆分某些架构(例如:arm64-v8a, armeabi, armeabi-v7a, x86, x86_64)但您在这些架构上没有任何本机实现时,问题似乎会发生。

例如,在我的例子中是 mips 和 mips64。

Play 商店似乎可以识别基于 lib/$arch 文件夹的 apk 支持的架构。因此,如果 apk 缺少此文件夹,则 playstore 将“none”显示为“native platform”(您可以通过解压缩 apk 来检查)。

问题是“none”被解释为“所有架构都支持”,然后根据versionCode下载apk。

如果您有一个“native platform”为“none”的 apk,其 versionCode 高于另一个具有本机实现的 apk,用户最终将下载具有更高版本代码的 apk。根据应用程序或配置,这是否可以正常工作。

问题在于 gradle 如何拆分 apk,您必须小心如何为拆分定义 versionCode。

【讨论】:

所以也许我删除了一些旧的空 lib/$arch 文件夹。谢谢:我会检查是否向后移动版本! @Pascal 不需要。以我为例,我使用了 card.io 和 fresco 库,而在新版本中,我不再使用 card.io,这是唯一具有 mips 和 mips64 本地实现的库。

以上是关于发布 Android 应用程序 - 区分 APK 详细信息 - “本机平台” = 无?的主要内容,如果未能解决你的问题,请参考以下文章

Android 程序打包及签名

Android Studio 打包apk,自动追加版本号和版本名称

Android Studio 打包apk,自动追加版本号和版本名称

碎片的静态与动态添加(区分手机与平板)

Android程序开发记录:发布APK,权限等

Android - 应用程序 (apk) 最大大小