Android R пространство имен с несколькими приложениями - PullRequest
0 голосов
/ 06 мая 2019

У меня есть 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 приложениями?

1 Ответ

0 голосов
/ 07 мая 2019

Активы как Android-проект имеют декларацию pakage.Поэтому мне пришлось импортировать R класс из этого пакета:

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


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