如何为颤振中的资产创建APK扩展文件

  • 本文关键字:创建 APK 扩展 文件 flutter
  • 更新时间 :
  • 英文 :


我创建了一个颤振应用程序,其中包含大小约为450mb的视频资产。我已经在苹果应用商店中成功发布了该应用程序。但是谷歌播放不接受我的APK,因为它超过了200mb的限制。我尝试使用创建APK扩展文件作为推荐工作流程的方法。我已经阅读了所有可用的有关扩展文件的Android文档,但我仍然无法弄清楚如何使用颤振实现它们。

如何在颤振应用中实现和访问 APK 扩展文件中的资产?

>你会从中获得一点乐趣。基本上,在有人实现插件来访问APK扩展文件之前,您将不得不编写java代码才能连接到Flutter。

这并不难,这只是意味着您将不得不了解平台频道并编写一些本机 android 代码。该文档在解释平台通道方面可能比我做得更好,但基本上最简单的方法是使用 MethodChannel 将数据从 dart 传递到本机,反之亦然。

你要做的是设置一个方法通道来启动这个过程,并使用类似getObbFolder的东西调用它。


在安卓方面,你需要做的第一件事就是确保你的应用程序确实下载了文件。根据 android 文档,您无法保证它们已经存在,因此您需要编写逻辑来下载它们。我建议使用他们提供的下载库,因为有各种各样的事情需要担心,例如设备存储空间不足、网络连接、显示进度等。我认为这方面的文档相当简单(如果您有问题,我建议您提出一个特定于它的新问题。


完成此操作后,您需要获取文件的路径,并在需要时请求读取它的权限。一些Android版本和其他版本的一些设备(老实说,听起来有点废话),您需要权限才能读取文件,而在其他版本中则不需要。因此,如果尝试失败,最好尝试并请求许可。

获取正在使用中保存的目录context.getObbDir()

然后从安卓文档中做到这一点的一种方法:

File obb = new File(obb_filename);
boolean open_failed = false;
try {
BufferedReader br = new BufferedReader(new FileReader(obb));
open_failed = false;
ReadObbFile(br);
} catch (IOException e) {
open_failed = true;
}
if (open_failed) {
// request READ_EXTERNAL_STORAGE permission before reading OBB file
ReadObbFileWithPermission();
}

对于不执行运行时权限检查的版本,请将以下内容添加到应用程序清单中:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

Android 不建议始终请求权限,因为有时 Obb 文件夹不需要READ_EXTERNAL_STORAGE权限。


现在您有两个选择。一种是你可以将该路径传回 Flutter,然后使用 Flutter 的文件读取对数据执行某些操作,如果文件是您可以直接读取的内容。如果不是,您可以使用 flutter 或使用 java/kotlin 将其解压缩,然后将路径传回解压缩的文件。

如果你选择从 android 解压缩文件,你应该把它解压缩到 Flutter 知道的目录之一(例如使用 path_provider 插件),或者写到你想要的任何地方(并有权限),然后简单地将路径传回 Flutter。

希望对您有所帮助!

最新更新