如何为拥有超过150 MB资产的Android测试和部署Flutter应用?

问题描述 投票:0回答:1

我的Flutter应用程序中的资产总计约为300 MB(很多媒体文件,这是app的本质,无法合理地剪裁)。

据我所知,有两种方法可以将应用上传到Play商店:

  1. 包含所有平台二进制文件的APK文件(旧版)。看起来像APKs are limited to 100 MB
  2. 一个应用程序捆绑包(新),可让Play商店确定将哪些位置部署到哪里。 App Bundles have a limit of 150 MB用户实际下载的内容。

For APKs,解决此限制的方法是APK Expansion Files(通常为“ obb”文件),最大为2 GB。我可以尝试使它与Flutter一起使用,但APK交付方式已过时,并且还有其他缺点,例如使用未使用的二进制文件使安装大小膨胀。因此,我宁愿不使用这种方法。

For App Bundles,以Dynamic Asset Delivery的形式存在类似的机制。根据用户何时下载资产包,共有三个选项:安装期间,安装后立即安装或根据需要下载。 install-time选项听起来最透明,最简单,并且限制为1 GB,因此对我的用例来说非常有用。

不幸的是,颤振does not yet support Dynamic Asset Delivery。幸运的是,当使用install-time交付时,it looks like这些资产可通过系统提供的常规AssetManager类获得。起初,我以为Flutter可以在不需要编写任何Java / Kotlin代码的情况下将它们拾取,但是不,它使用自己的资产机制和there is nothing but a proposal来访问AssetManager。所以我必须自己做一些interact with the Java world的工作,但这听起来是可行的。

首先要创建束,I followed these steps现在如何运行该应用程序?

flutter run不会产生任何错误,但似乎没有安装资产捆绑包,因此我的所有资产在测试期间都丢失了。我怀疑它直接构建了APK,而不是构建应用程序捆绑包,然后从中创建了APK。而且由于IntelliJ IDEA似乎也调用了flutter run或类似的东西,所以我的调试器和其他IDE集成现在无用了。

flutter build appbundle似乎起作用,并吐出了.aab文件。为了进行测试,大概我可以使用bundletool从中创建一个APK并安装它,但是与Flutter通常的亚秒级热重装相比,这将是一个糟糕的开发经验。

这是死胡同吗?还有另一种通过Play商店交付拥有大量资产的应用程序的方法吗?请注意,我对外部托管不感兴趣,除非它提供免费和(近)无限的流量,因为这是一个非商业项目。

((在iOS的App Store中,限制似乎是4 GB,没有问题。谁?)

android flutter google-play assets android-assets
1个回答
0
投票

好。因此,看来您的应用程序中有太多视频要播放。 Android PlayStore和Apple AppStore都对应用程序大小有限制。我不建议您随应用程序一起运送所有视频,因为并非所有视频都将由用户播放。您可以提出以下解决方案。

  1. 您可以将视频放在Firebase存储或任何其他云存储中,并在应用程序首次启动时作为初始化的一部分在本地下载所有文件。我现在没有共享的代码段,但是您可以查看this答案。 (不推荐)
  2. [使用Transcoder之类的任何库压缩视频并将其放入Firebase存储中,并将具有ID和名称的这些视频的可共享URL放入任何数据库中(例如,Firebase Realtime数据库,并使用视频。您可以根据数据安全要求限制访问权限,从而为这些URL添加更多安全性。(推荐)
© www.soinside.com 2019 - 2024. All rights reserved.