Невозможно получить доступ к ресурсам модуля динамических функций
Я пытаюсь добавить новую функцию динамической доставки Android в свое приложение, но мои попытки получить доступ к ресурсам модуля динамических функций продолжают терпеть неудачу.
Основная идея состоит в том, чтобы загрузить модуль без кода, но с набором векторных файлов в качестве доступных для рисования ресурсов.
Я могу загрузить модуль и даже получить доступ к ресурсам данного модуля, но я не могу понять, как получить доступ к ресурсам.
val res = context.createPackageContext(context.packageName, 0).also {
SplitCompat.install(it)
}.resources
val assetsStream = res.assets.open("test.txt")
val assetContent = assetsStream.bufferedReader()
.use {
it.readText()
}
var iconResourceId = res.getIdentifier(stringIdentifier, IDENTIFIER_DRAWABLE, context.packageName)
Как я уже сказал, я могу прочитать текст в текстовом файле assets, но, похоже, я не нахожу никаких ресурсов в ресурсах.
Когда я пытаюсь получить drawables, которые я знаю, находятся в папке ресурсов динамического модуля, я получаю ResourcesNotFoundException
Я прочитал документы Android, предоставленные Google, но не могу найти подробную информацию о том, как получить доступ к загруженным ресурсам модулей.
1 ответ
Я смог решить эту проблему, заменивpackageName
для имени пакета функционального модуля, на методеres.getIdentifier(..., packageName)
Имя пакета приложения:com.example.my_app_package
Имя пакета ресурсов функции:com.example.my_app_package.my_dynamic_feature
Я не уверен, откуда именно значениеmy_dynamic_feature
получается, но полный пакет будет не тот, который вы определили в build.gradle модуляapplicationId
или AndroidManifestpackage
свойство.