【问题标题】:Multi apk from Unity3d for differents architectures来自 Unity 3d 的多 apk,用于不同的架构
【发布时间】:2015-09-07 19:42:46
【问题描述】:

我想使用多 apk 功能在 google 商店(统一制作)上发布 2 个 apk。 我在网上看了,我试过这个:

  • 在 ProjectFolder/jni/ 创建了一个 Application.mk 只有 APP_ABI := x86APP_ABI := armeabi armeabi-v7a 取决于我想使用的库。

  • 根据我想要构建的 apk,创建了 2 个带有 2 个版本代码的 apk,并将 Unity 的“设备过滤器”设置为 x86 或 Ar Mv 7。

  • 在谷歌开发者控制台上发布了这两个 apk。

Apk 的大小不同,因此使用了不同的库。 (使用两个 lib,apk 的重量增加了 16 个月,只有 arm,大约 8 个月,只有 x86,大约 8.5 个月)。

问题是,谷歌控制台检测到的“本机平台”总是“armeabi-v7a,x86”(两种架构),无论是什么apk。 所以我在谷歌控制台上收到一条错误消息,说这两个 apk 具有完全相同的设备兼容性。

(PS:如果我想要 2 个不同的 apk,这是因为每个 lib 在最终 apk 上占用 8mo,所以对于一个空项目需要 16mo。而且 google 对 apk 的大小限制......)


更新:

好的,问题来自一个插件 (everyplay)。它有用于 x86 和 arm 架构的库。解决方案是在构建 arm apk 之前删除 x86 插件库,并删除 arm 插件库以构建 x86 apk。 我还注意到不需要在 Application.mk 中更改 APP_ABI,统一参数 device filtrer 会覆盖它。

【问题讨论】:

  • 部分 x86 Android 设备通过二进制代码翻译(例如 libhoudini)支持 armeabi/armeabi-v7a 原生库。
  • 这是否意味着我应该只包含 armeabi/armeabi-v7a 库? x86 Android 设备会遇到哪些问题?顺便问一下,目前x86设备的比例是多少?
  • x86 设备 IIRC 大约在 2 个月前不到 500 个。
  • 很多!如果 x86 设备用户下载没有 x86 库的 apk 会发生什么(因为谷歌控制台认为即使没有适当的库它也是兼容的)?只是在加载时崩溃或只是性能不佳(通过代码翻译)?

标签: android unity3d x86 apk


【解决方案1】:

如果 Google 指出了这一点,则意味着 Unity 在某处覆盖/包括 x86 的文件,即使您尝试为 ARM 构建也是如此。这是你应该做的几件事

  1. 打开 Unity 的 Player Settings,转到 Android 选项卡,选择 Other Settings 并在 Configuration -> Device Filter 下选择您要构建的任何架构(默认为两者)

  2. 这个有点不直观。仅仅因为您执行了上面的第 1 步,并不总是意味着只构建了 1 个架构。如果是插件,它的/lib 文件夹包含适用于两种架构的任何文件,然后构建两种架构。所以需要手动梳理每个plugi文件夹,确保没有这样的文件。

【讨论】:

  • 问题是,当我选择只为一种架构(而不是两者)构建时,apk 大小如果有效地减少了一半(我们可以得出结论,即使谷歌控制台只构建了一个库认为它对两者都兼容)。但无论如何我都会尝试删除所有插件(删除插件目录),我会告诉你它是否有效。
  • 好的!那是一个为 x86 和 arm 导入库的 puglin (everyplay)。我删除了 x86,apk 仅与 arm 设备兼容(适用于谷歌控制台)。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多