为了将我的游戏应用程序分解为即时和可安装版本,我开始使用动态模块拆分 API 交付。我一直在关注这里的 Codelabs 教程https://codelabs.developers.google.com/codelabs/on-demand-dynamic-delivery/index.html#0。不幸的是,它使用 Kotlin 来编写 MainActivity 代码,它不如 Java 特定,但如果你已经完成了 Kotlin 教程,仍然相当容易理解。该示例包括使用以下内容访问“资产”功能模块中“资产”文件夹中的文本图块:
private const val packageName = "com.google.android.samples.dynamicfeatures.ondemand"
val assetManager = createPackageContext(packageName, 0).assets
// Now treat it like any other asset file.
val assets = assetManager.open("assets.txt")
val assetContent = assets.bufferedReader()
.use {
it.readText()
}
现在我只想访问动态功能模块的可绘制文件夹中的图形文件。我只会使用我的动态功能模块来存储大型图形,这将使我超过 10 MG 的即时应用程序下载限制。最干净的方法是什么?
主“应用程序”模块:
“应用程序”中的 Java 代码:
loadTexture(R.drawable.aaa_image);
Bitmap bitmap;
public void loadTexture(final int resourceId){
bitmap = BitmapFactory.decodeResource(context.getResources(), resourceId, options);
***
动态交付的“installationassets”模块:
'app'中的Java代码仍然无法到达:
loadTexture(R.drawable.testgraphic);
cannot resolve symbol 'testgraphic'