File: /// android_res / drawable не работает при использовании аромата с другим именем пакета

Моя проблема в том, что после того, как я добавил ароматы в свой проект, у аромата с именем пакета, отличным от фактического источника, кажется, есть проблемы с доступом к файлам в android_res/drawable .

Более конкретно, у меня есть html-view, который вызывает следующее изображение.

 <img src="file:///android_res/drawable/image.png"> 

Изображение появляется в производственном вкусе, у которого есть имя пакета, которое совпадает с каталогом java-файлов, но оно не работает для бета-вкуса:

 productFlavors { production { packageName "com.company.myapp" } beta { packageName "com.company.beta" } } 

Где фактический каталог с файлами java

 java/com/company/myapp 

Весьма странно, что это происходит, поскольку ресурсы даже не в этой папке.

Solutions Collecting From Web of "File: /// android_res / drawable не работает при использовании аромата с другим именем пакета"

PackageName не поддерживается в градиенте. Gradle имеет различие между applicationId и packageName (см. http://tools.android.com/tech-docs/new-build-system/applicationid-vs-packagename), что означает, что у него может быть меньше имени пакета ресурсов Идентификатор пакета для вашего приложения.

К сожалению, это не поддерживается программой URL: /// android_res URL в веб-просмотре.

Я смог обойти это в моем случае, создав класс R в другом пакете с правильным внутренним классом и с открытым статическим окончательным полем int, которое было инициализировано значением из реального R-файла. Это взлом и не переименовывает ресурс и не удобен, если у вас много ресурсов, необходимых для доступа.

Таким образом, в вашем случае это будет похоже на добавление этого в ваш каталог файлов исходных файлов для бета-версии:

 package com.company.beta; class R { class drawable { public static final int image = com.company.myapp.R.drawable.image; } } 

ОБНОВЛЕНО ОТВЕТ

Правильно ли вы настроили свои папки с ароматом?

Если у вас есть два аромата (flavorOne, flavorTwo), вам необходимо соответствующим образом настроить исходные папки.

Ваш файл build.gradle должен выглядеть примерно так:

 productFlavors { flavorOne { applicationId "com.package.name" versionCode 1 versionName "1.0" } flavorTwo { applicationId "com.package.name.two" versionCode 1 versionName "1.0" } } 

Итак, вот как выглядит структура папок для этих двух ароматов:

 src ---|main --------|java -------------|com.package.name --------|res -------------|drawable ---|flavorOne --------|java -------------|com.package.name --------|res -------------|drawable ---|flavorTwo --------|java -------------|com.package.name --------|res -------------|drawable 

Поместите рисунки для каждого аромата в соответствующую папку. Таким образом, у вас будет файл image.png для flavorOne в этой доступной папке и image.png для flavorTwo в image.png для flavorTwo папки.

Таким образом, локализация будет работать для каждого аромата.

Вы НЕ должны создавать классы «R». Они автогенерируются.

СТАРЫЙ ОТВЕТ

На самом деле это не решение вашей конкретной проблемы, а другой подход.

Вместо этого вы можете перенести файлы изображений в папку с ресурсами и использовать

 <img src="file:///android_asset/image.png">