Android 具有多个应用程序的 R 命名空间
Android R namespacing with multiple apps
我有 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
无法访问为 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)
我有 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
无法访问为 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)