【问题标题】:Is it possible to take *.so libraries off to expansion files?是否可以将 *.so 库用于扩展文件?
【发布时间】:2023-04-04 12:45:01
【问题描述】:

我面临着减小我的 android 应用程序的 .apk 文件大小的任务。我的 apk 大小现在超过 100MB,并且暂时会增长。所以我认为android app bundle 是一个临时解决方案。 .so 库在 apk 中占用的空间最多,如果可能的话,我想把它们带到expansion files。有没有人有这样的经验,你有什么建议来学习解决这个问题?

【问题讨论】:

  • 出于好奇,您为什么将 App Bundle 视为临时解决方案?借助动态交付,您可以将您的应用拆分为可按需提供的单独“动态功能模块”,因此除非您的用户始终处于离线状态,否则请考虑控制您的应用大小。
  • 我认为是因为 AAB 文件大小限制为 150MB,并且我预测我的应用在多个版本发布中都可以达到此限制。
  • 限制是最大初始下载大小,而不是整个 AAB。因此,例如,如果您包含多个 ABI 的本机库,则只有较大的一个将计入 150 MB。此外,当您添加按需动态功能时,这些也不会计入 150 MB。您可以使用 bundletool 来计算下载大小的估计值(请参阅“get-size”命令)
  • @Pierre 我猜这是因为创建应用程序包很简单,只需选择部署为包而不是 APK。实现动态功能需要更改代码和可能的用户界面,用户需要等待下载功能。
  • 实现扩展文件也需要对代码进行大量修改。它还需要不断检查用户是否没有删除带有扩展文件的本地存储,如果有,则手动触发文件的重新下载。我不知道有多少开发者喜欢使用扩展文件。

标签: android shared-libraries apk apk-expansion-files


【解决方案1】:

通过无线传输“.so”文件来减小应用的大小。 Follow this link

但这违反了Google Policy

你应该:

  • 删除未使用的资源(图像、布局、库/依赖项)

  • 在 build.gradle 上开启 shirk 资源

  • 将某些内容移至 OTA

  • 构建 App bundle 而不是 APK

【讨论】:

  • 我不明白为什么这违反了 Google 政策。 “应用程序或 SDK 从 Google Play 以外的来源下载可执行代码,例如 dex 文件或本机代码。” 但 apk 扩展文件技术不是 “来源Google Play”,不是吗?
  • 按照我提到的链接,.so 文件不在 Google Play 上,它在您的服务器上。如果能上传.so文件Google Play就好了。
  • 这可能违反政策,因为扩展文件被下载到公共文件夹中。因此恶意代码可能会编辑字节码以改变代码的执行。
猜你喜欢
  • 2015-07-14
  • 2011-07-30
  • 2015-09-17
  • 2010-12-21
  • 1970-01-01
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多