Android 具有多个应用程序的 R 命名空间

Android R namespacing with multiple apps

我有 2 个 android 应用程序。 appA 依赖于模块 assetsappB 依赖于 moduleBmoduleB 还取决于 assets.

我正在尝试制作 R 命名空间并为此添加了 gradle 属性: android.namespacedRClass=true.

然而,在我构建项目后,我发现 moduleB 无法访问来自 assets 的资源。

这是文件结构:

.
├── appA
│   └─ build
│       └── generated
│           └── not_namespaced_r_class_sources
│               └── debug
│                   └── processDebugResources
│                       └── r
│                           └── my
│                               └── package
│                                   ├── R.java
│                                   ├── moduleB
│                                   │   └── feature
│                                   │       └── R.java
│                                   └── assets
│                                       └── R.java
├── AppB
│   │
│   └── ...
├── moduleB
│   └── intermediates
│       └── compile_only_not_namespaced_r_class_jar
│           └── debug
│               └── generateDebugRFile
│                   └── R.jar
└── assets
    └── src
        └── main
            └── res
                ├── color
                │   └── ...
                ├── drawable
                │   └── ...
                └── values
                    └── ...

R.jar 不包含所需的资源。 assets R 正在为 appA 构建(我想这就是为什么 moduleB 无法访问为 assets 生成的 R.java)的原因。

我在 SdkSearch 应用程序中看到过这种方法,但它使用单个应用程序模块。是否可以对 2 个应用程序使用这种方法?

资产,因为 android 项目具有带有 pakage 声明的清单。所以我不得不从这个包中导入 R class:

<manifest package="my.package.assets" />


import my.package.assets.R as AssetsR
...
val image = context.getDrawable(AssetsR.drawable.image)