android - 从主模块访问动态功能模块的可绘制文件夹中的图形

标签 android graphics module dynamic-feature

为了将我的游戏应用程序分解为即时和可安装版本,我开始使用动态模块拆分 API 交付。我一直在关注这里的 Codelabs 教程 https://codelabs.developers.google.com/codelabs/on-demand-dynamic-delivery/index.html#0 .不幸的是,它使用 Kotlin 来编写 MainActivity 代码,它不如 Java 特定,但如果你已经完成了 Kotlin 教程,仍然相当容易理解。该示例包括使用以下内容访问“ Assets ”功能模块中“ Assets ”文件夹中的文本图 block :

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 的即时应用程序下载限制。最干净的方法是什么?

主“应用程序”模块:

enter image description here

“应用程序”中的 Java 代码:
loadTexture(R.drawable.aaa_image);

Bitmap bitmap;
public void loadTexture(final int resourceId){
    bitmap = BitmapFactory.decodeResource(context.getResources(), resourceId, options);
    ***

动态交付的“installationassets”模块:

enter image description here

'app'中的Java代码仍然无法到达:
 loadTexture(R.drawable.testgraphic);
 cannot resolve symbol 'testgraphic'

最佳答案

我找到了一个从功能模块资源加载可绘制对象的有效解决方案。诀窍是为模块使用正确的包名称。

例子:

  • 基地 模块包名是“ com.project
  • 特色 build.gradle 中定义的模块名称“ FeatureModule
  • 特色 模块包名“ com.project.FeatureModule

  • build.gradle
    dynamicFeatures = [":FeatureModule"]
    java
    int drawableResId = context.getResources().getIdentifier("your_drawable_name", "drawable", "com.project.FeatureModule");
    context.getDrawable(drawableResId);
    

    Reference article

    关于android - 从主模块访问动态功能模块的可绘制文件夹中的图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57662892/

    相关文章:

    algorithm - 给定一组点,找出这三个点中的任何一个是否共线

    c++ - 我无法加载 .BMP 图像

    javascript - NodeJS 在运行时添加/删除/重新加载需要无需重新启动服务器(也不需要 nodemon)

    module - 在多个文件中使用模块时无法编译项目 : "imports can only refer to extern crate names passed with --extern"

    c++ - 如何解决由递归函数引起的堆栈溢出错误? C++

    android - 当我删除字符时过滤器不更新列表

    Android - 第二次打开时显示 Google map v2 或 SupportMapFragment 时出错

    java - 使用 URI 打开图像时,顶部缺少图标

    Haskell - 找不到模块 'Test.QuickCheck'

    android - 在一个文件中有两个 AsyncTask 内部类是不好的做法吗?