【问题标题】:How to easily remove unnecessary localization resources from added libraries in release APK如何轻松地从发布 APK 中添加的库中删除不必要的本地化资源
【发布时间】:2014-03-26 08:30:05
【问题描述】:

我的应用非常简单,不需要大量本地化。

我提供默认语言(英语)和德语 - 这就是我想要并将永远提供的所有语言,因为该应用完全专注于德国。

当我最近添加了 Google Play 服务库时,我面临的问题是,我的应用程序中添加了 56 种(!!!)其他语言,正如 Google Play 商店告诉我的那样。原因是:该库附带了更多我不想在我的应用程序中使用的语言资源。如果 Google Play 对话框以法语弹出,而其余的只有英语/德语,这根本没有任何意义。

我不想从库项目中手动删除资源,这很乏味且容易出错。另外,也许我会有另一个依赖于同一个库的应用程序并且我想要更多语言?

那么 - 我怎样才能做到这一点??

谢谢!

【问题讨论】:

  • 您是否找到任何解决方法或解决方案?
  • 随机在这里结束,但是您不能编写自己的语言选择器微调器并将结果传递给需要语言设置的任何组件吗?额外语言文件的大小应该不是问题,对吧?
  • ??? user3427079 - 你明白我的问题了吗?

标签: android localization resources apk strip


【解决方案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 包中删除!

如果这对你有用,请告诉我!

【讨论】:

  • 好吧,我的问题实际上并不在于应用程序本身。当上传我的应用程序支持一百万种语言时,在 Play 中阅读更痛苦,再加上 Lint 中的所有警告,即并非所有内容都正确本地化。因此,我不知道如何使用库,但会自动让它们“缩小”到我的语言集......
  • 哦,我明白了!我的下一个应用程序也会遇到这个问题!如果我想出一个解决方案,我会发布它!
  • @Zordid 你能把答案标记为解决方案吗?谢谢!
  • 如何删除某些特定配置,例如在我的项目中我有“en”、“fr”、“ch”等,我只想删除“fr”。所以基本上我的问题是我必须写 resConfigs "en" , "ch", ........ etc 太长了。
猜你喜欢
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
  • 2021-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多