Невозможно получить доступ к ресурсам модуля динамических функций

Я пытаюсь добавить новую функцию динамической доставки 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, но не могу найти подробную информацию о том, как получить доступ к загруженным ресурсам модулей.

https://developer.android.com/guide/app-bundle/playcore

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свойство.

Другие вопросы по тегам