开发Android个大资产项目;安装到设备总是需要很长时间
Developing an Android project with large assets; installing to device always takes a long time
我正在 Android Studio 中开发 Android 应用程序。我的资产文件夹中有大文件,所以 code -> build -> install -> run
循环的 'install' 步骤需要很长时间,我的意思是几分钟(5 到 10)。
减少时间的最佳方法是什么?
我唯一的想法是在开发时使用较小的资产数据。
问题是资产并不经常改变。
是否有任何其他方法可以获取资产 "pre-installed",这样它们就不必作为应用程序的一部分被一遍又一遍地安装(至少在开发过程中如此)
资产文件夹由一个大型 sqlite 文件以及无数图像和声音文件组成,所有这些文件加起来超过 500MB。
我发现使用 "Expansion packs" 和 "Opaque Binary Files" 是一种很好的方法,如下所述:
https://developer.android.com/google/play/expansion-files.html
https://developer.android.com/studio/command-line/jobb.html
这是我的做法:
1) 将资产文件夹中的所有内容移动到其他地方。
当然你可以自由地将东西保留在资产中,但就我而言,我可以没有它们。
2) 使用 jobb
工具从您的资产创建一个 obb
文件。
假设你的包名是me.name.app
jobb -d appAssets -o main.1.me.name.app.obb -pn me.name.app -pv 1
您可能需要根据您的软件包版本更改 -pv
。
这里选择的命名 main.1.me.name.app.obb
不是随意的;这是 Play 商店在您上传文件时将其重命名的名称。请参阅文档的 File Name 部分。
3) 弄清楚应该将 obb 文件放在哪里。这是从 Play 商店下载应用程序时 Android 将放置您的文件的路径。我还没有将它部署到 Play 商店,所以据我所知,这一步可能会有一些错误。
obb 的路径在文档中描述为 <shared-storage>/Android/obb/<package-name>/
,其中 <shared-storage>
可以从 Environment.getExternalStorageDirectory()
获得,包名是 me.name.app
根据我们的示例,所以 obb 的路径是:
Environment.getExternalStorageDirectory() + "/Android/obb/me.name.app/main.1.me.name.app.obb"
在我的 Android 上,外部存储似乎位于“/storage/emulated/0/”,但我认为它可能因设备而异。
找到路径后,将 obb 文件放在那里。
4) 在您的应用中,使用 StoreManager.mountObb 将 obb 挂载到新的根路径。将此根路径存储在全局对象中并在您的应用程序代码中使用它。
您必须检查您的代码并更改依赖于 AssetsManager 的任何部分并将其更改为使用常规文件路径。
您的应用程序 (apk) 文件大小现在小得多,但您仍然可以访问您的资产。
我正在 Android Studio 中开发 Android 应用程序。我的资产文件夹中有大文件,所以 code -> build -> install -> run
循环的 'install' 步骤需要很长时间,我的意思是几分钟(5 到 10)。
减少时间的最佳方法是什么?
我唯一的想法是在开发时使用较小的资产数据。
问题是资产并不经常改变。
是否有任何其他方法可以获取资产 "pre-installed",这样它们就不必作为应用程序的一部分被一遍又一遍地安装(至少在开发过程中如此)
资产文件夹由一个大型 sqlite 文件以及无数图像和声音文件组成,所有这些文件加起来超过 500MB。
我发现使用 "Expansion packs" 和 "Opaque Binary Files" 是一种很好的方法,如下所述:
https://developer.android.com/google/play/expansion-files.html
https://developer.android.com/studio/command-line/jobb.html
这是我的做法:
1) 将资产文件夹中的所有内容移动到其他地方。
当然你可以自由地将东西保留在资产中,但就我而言,我可以没有它们。
2) 使用 jobb
工具从您的资产创建一个 obb
文件。
假设你的包名是me.name.app
jobb -d appAssets -o main.1.me.name.app.obb -pn me.name.app -pv 1
您可能需要根据您的软件包版本更改 -pv
。
这里选择的命名 main.1.me.name.app.obb
不是随意的;这是 Play 商店在您上传文件时将其重命名的名称。请参阅文档的 File Name 部分。
3) 弄清楚应该将 obb 文件放在哪里。这是从 Play 商店下载应用程序时 Android 将放置您的文件的路径。我还没有将它部署到 Play 商店,所以据我所知,这一步可能会有一些错误。
obb 的路径在文档中描述为 <shared-storage>/Android/obb/<package-name>/
,其中 <shared-storage>
可以从 Environment.getExternalStorageDirectory()
获得,包名是 me.name.app
根据我们的示例,所以 obb 的路径是:
Environment.getExternalStorageDirectory() + "/Android/obb/me.name.app/main.1.me.name.app.obb"
在我的 Android 上,外部存储似乎位于“/storage/emulated/0/”,但我认为它可能因设备而异。
找到路径后,将 obb 文件放在那里。
4) 在您的应用中,使用 StoreManager.mountObb 将 obb 挂载到新的根路径。将此根路径存储在全局对象中并在您的应用程序代码中使用它。
您必须检查您的代码并更改依赖于 AssetsManager 的任何部分并将其更改为使用常规文件路径。
您的应用程序 (apk) 文件大小现在小得多,但您仍然可以访问您的资产。