我有2个android应用。 appA
取决于模块assets
,appB
取决于moduleB
。 moduleB
也取决于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
无法访问R.java
生成的assets
的原因)。
我在SdkSearch应用程序中看到了这种方法,但是它使用单个应用程序模块。可以在2个应用中使用这种方法吗?
答案 0 :(得分:0)
作为android项目的资产具有带有pakage声明的清单。因此,我必须从此包中导入R
类:
<manifest package="my.package.assets" />
import my.package.assets.R as AssetsR
...
val image = context.getDrawable(AssetsR.drawable.image)