Intereting Posts
Http Live Streaming на Android 4 (сэндвич с мороженым) FileNotFoundException: невозможно прочитать настройки анонимности, не сообщая о каких-либо значениях: /Users/mac/.android/analytics.settings (Permission denied) Лучшая практика для асинхронного удаления элемента ListView / RecyclerView Как получить статус загрузки? Неверная ширина и высота отображения в Android Слайд-анимация xml для изменения активности в android Как решить внутреннюю ошибку: повторите попытку класса приемника и GCMBaseIntentService: SERVICE_NOT_AVAILABLE ошибка Как я могу сделать липкие заголовки в RecyclerView? (Без внешней библиотеки) SetOnItemClickListener в ListView не запускает Поддерживает ли веб-представление на Android поддержку SSL? Нет результатов с пользовательским фильтром ArrayAdapter Запертое местоположение Api setSmallestDisplacement игнорируется / не работает Android Присоединение файла к GMAIL – Не удается подключить пустой файл Как указать цвет элементов меню для навигационного ящика? UnsuppotedOperationException.getCause возвращает себя

Объединяет строковые ресурсы Android Gradle

Я хотел бы создать 2 разных APK (выпуск и debug) с помощью Gradle, и я хочу использовать для них разные имена ('appName' и 'appName debug').

Я нашел некоторые решения, но это не работает для меня:
Ссылка 1
Ссылка 2

Я хотел бы установить оба apks на устройстве, но у меня есть следующая ошибка:

Duplicate resources: ...\src\release\res\values\config.xml:string/config_app_name, ...\src\main\res\values\config.xml:string/config_app_name 

Если я удалю ключ config_app_name из main\res\values\config.xml тогда Gradle говорит, что ключ не найден.

У меня есть 3 файла манифеста:

 ...\src\main\AndroidManifest.xml (this uses the `android:label="@string/config_app_name"`) ...\src\release\AndroidManifest.xml ...\src\debug\AndroidManifest.xml buildTypes { debug { packageNameSuffix ".debug" versionNameSuffix "-debug" buildConfig "public static final String PROVIDER_AUTHORITY = \"" + PROVIDER_DEBUG + "\";" signingConfig signingConfigs.debug } release { buildConfig "public static final String PROVIDER_AUTHORITY = \"" + PROVIDER_RELEASE + "\";" signingConfig signingConfigs.release } } sourceSets { debug { java.srcDirs = [ 'src/main/java'] res.srcDirs = [ 'src/main/res', 'src/debug/res'] } release { java.srcDirs = [ 'src/main/java'] res.srcDirs = [ 'src/main/res', 'src/release/res'] } } 

Можно ли использовать один общий ключ (строки, целые числа, размеры) в основной части проекта и переопределить его в части выпуска / отладки?

Заранее спасибо.

Я просто понял, что это всего лишь проблема именования. Название пакета выпуска было написано неправильно. Извините за эту глупую проблему.

Теперь слияние работает так, как ожидалось.

Смотрите здесь: http://tools.android.com/tech-docs/new-build-system/resource-merging

Вы определили несколько источников ресурсов для типа сборки. В этом случае они имеют одинаковый приоритет и могут вызывать конфликты.

Если вы хотите правильное слияние, вам нужно создать отдельный основной источник. Он будет иметь меньший приоритет, чем ресурсы типов сборки.

 sourceSets { main { java.srcDirs = ['src/main/java'] res.srcDirs = ['src/debug/res'] } debug { res.srcDirs = ['src/debug/res'] } release { res.srcDirs = ['src/release/res'] } } 

Но с такой структурой каталогов она должна работать из коробки без определения исходных наборов.