【问题标题】:Avoid localized resources overhead避免本地化资源开销
【发布时间】:2013-01-08 07:12:57
【问题描述】:

我有一个本地化为 24 种语言的应用程序。 当我使用纯英语资源构建应用程序时,该应用程序为 1.6MB。 当我使用所有语言资源构建应用程序时,该应用程序为 2.5MB。 与语言相关的资源是几个 HTML 文件和 strings.xml。

由于应用程序正在运行后台服务,因此由于内存压力而将其终止是很烦人的。 2.5MB 时似乎比只有 1.6MB 时更频繁。 因此,我想通过避免在真正需要一种语言时在 APK 中提供所有语言来减小应用程序大小。

我正在考虑制作一个几乎只有英文的 APK,并允许用户在运行时从应用程序下载语言文件。

在 Android 中是否有执行此操作的框架,或者至少有模式或最佳实践?

热烈欢迎任何建议。

【问题讨论】:

    标签: android localization resources


    【解决方案1】:

    由于 APK 的大小,您不会看到内存问题。如果用户没有足够的空间来安装它,这只会影响在设备上安装应用程序的能力。我认为您可能有一个不同的内存问题,您错误地将其归咎于您的内存问题(更深入地查看是否可以纠正该问题)。

    您可以使用 Proguard 来消除最终 APK 中的资源,但我认为这不是明智的做法。链接:http://developer.android.com/tools/help/proguard.html

    我还认为为每种语言创建单独的 APK 并不是一个好主意(事实上,这违反了 Play Market 的服务条款)。

    归根结底,再次检查您的应用,并修复您的内存问题 - 您可能会走错路,试图将问题归咎于您的本地化资源。

    【讨论】:

    • 感谢您的回答,但我不同意您的一些假设:最近当我的应用程序大小增加时,我收到了更多关于运行时问题的报告。查看日志时,我可以看到该应用程序已被杀死并重新启动。与应用较小时相比,这种情况显然更频繁地发生。
    • 可能是您的本地化资源本身导致了您的问题。许多语言对相同的单词使用更大的字符集,等等。我绝对确定您的 APK 的大小不会影响内存中的运行占用空间。您有一个不同的问题,您将责任归咎于 APK 大小。我对此很有信心。
    • 嗯,我认为你是对的毕竟:-)。除了 apk 大小之外,发生的另一个变化是 AdMob SDK 的使用。这似乎泄漏得很厉害。应用的运行时间大小为 17MB(不含 AdMob)和 30MB(含 AdMob)。很明显,当运行时大小这么大时,apk 大小再增加 1 MB 并不重要。所以玩资源没有意义。我现在要做一些内存分析。 :-)
    • 唷,这是一些来之不易的积分 ;-)。很高兴你在正确的轨道上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 2011-07-25
    相关资源
    最近更新 更多