Можно ли исключить значения ресурсов из встроенного в мой дочерний проект Android? - PullRequest
3 голосов
/ 27 июля 2011

У меня есть пара дочерних проектов Android, которые связаны с базовым проектом Android.Базовый проект включает в себя различные языковые каталоги 'values-xx'.

Есть ли способ специально исключить эти каталоги из встроенных в дочерние проекты?

т.е. дочерний проект без 'значений-de '(немецкие струны.)

Ответы [ 2 ]

0 голосов
/ 23 июля 2015

Даже если этот вопрос действительно старый, вы, возможно, никогда не нашли бы его таким, вот он. Что вам нужно, так это в значительной степени новый resConfig, реализованный в плагине Gradle build 0.7, хотя я не могу заставить его работать так, как я понял.

от: http://tools.android.com/tech-docs/new-build-system/resource-shrinking#TOC-Res-Configs

Res Configs

Помимо удаления неиспользуемых ресурсов, вы также можете использовать Android Функция ResConfigs плагина Gradle, позволяющая удалить любой ресурс конфигурации, в которых ваше приложение не нуждается.

Например, допустим, что сообщения в вашем приложении не были переведены и все на английском. Если вы используете библиотеку, такую ​​как Сервисы Google Play, вы забираете переводы для всех сообщения в этих библиотеках. Когда функциональность в библиотеке доступ к ним будет показан пользователю. Предпочитаете ли вы это, или хотите, чтобы все приложение использовало один язык, зависит только от вас. Но если Вы выбираете иметь один язык, или, в более общем смысле, только языки, на которые ориентировано ваше приложение, вы можете настроить это в своем файл build.gradle, а затем во время сборки все остальные языки упал (что сделает ваш APK меньше, похожий на ресурс усадочный объект).

Вот что вы добавляете в свой файл build.gradle, если вы, например, хотите ограничить ваши языки только английским и французским:

android {
    defaultConfig {
        ...
        resConfigs "en", "fr"
        }
}

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

У меня похожая проблема Принудительная локализация для Android-аромата с помощью resConfig , и я до сих пор не нашел, почему она не работает. Я тоже подал ошибку в Android .

0 голосов
/ 03 июля 2012

Я все еще ищу лучшее решение.В настоящее время я разделил языки из моей базовой библиотеки на языковую версию (например, BaseLib и BaseLib-es).Для приложений, которые не полностью реализуют другие языки, я не включаю проект библиотеки '-es'.

К сожалению, когда у вас большое дерево базовых библиотек или много языков, этот методсоздает кучу дополнительных библиотечных проектов.

Я думаю, что нужно внести изменения в инструмент экспорта APK, чтобы решить эту проблему.Линт достаточно умен, чтобы найти неполные переводы, но я не думаю, что ProGuard был бы достаточно умен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...