Как легко удалить ненужные ресурсы локализации из добавленных библиотек в релизе APK

Мое приложение довольно простое и не требует большой локализации.

Я поставляю язык по умолчанию (на английском языке) и немецкий - это все, что я когда-либо хотел и когда-либо поставил, поскольку приложение полностью сосредоточено в Германии.

Как недавно я добавил библиотеку Google Play Services, я столкнулся с проблемой того, что в мое приложение добавлено 56 (!!!) дополнительных языков, как говорит мне в Google Play Store. Причина в том, что в библиотеке появилось много языковых ресурсов, которые я НЕ хочу в своем приложении. Это просто не имеет никакого смысла, если диалог Google Play появляется на французском языке, когда остальное было только английским/немецким.

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

Итак - как я могу это сделать??

Спасибо!

Ответ 1

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

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

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

@Override
public void onCreate() {
    super.onCreate();
    avoidOtherLanguages();
    // your code here
}

@Override
public void onConfigurationChanged() {
    super.onConfigurationChanged();
    avoidOtherLanguages();
    // your code here
}

public void avoidOtherLanguages() {
    if (!Locale.getDefault().getLanguage().equals(Locale.GERMAN.getLanguage()))
    {
        // when other than german, use english
        final Configuration configuration = getResources().getConfiguration();
        configuration.locale = Locale.ENGLISH;
        getResources().updateConfiguration( configuration, getResources().getDisplayMetrics() );
    }   
}

Я надеюсь, что это сработает для вас!

** ОБНОВЛЕНО: РЕШЕНИЕ **

Привет придумал решение после множества поисковых запросов! Если вы используете gradle в качестве системы сборки, вы можете сделать это в файле build.gradle:

   .....
   defaultConfig {
    minSdkVersion 15
    targetSdkVersion 22
    versionCode 75
    versionName "1.0.0"

    resConfigs "en", "de"
}
...

используйте resConfig, чтобы сообщить gradle, что вы используете эту локальную конфигурацию, все остальные языки в ваших библиотеках будут удалены из пакета APK!

Сообщите мне, если бы это сработало для вас!