如何减少android应用程序的大小?

Posted

技术标签:

【中文标题】如何减少android应用程序的大小?【英文标题】:how to reduce android app size? 【发布时间】:2016-07-06 16:57:51 【问题描述】:

首先,我正在使用 android studio 开发 android 应用程序。我已经使用 tesseract 库为 OCR 构建了一个 android 应用程序。该应用程序目前运行良好并提供期望输出,但我的问题在于它的大小。构建应用程序的大小为 30 MB,与其他可用的 OCR 应用程序相比,这是很高的。我试过“minifyenabled = true”,但它只减少了 300 kb 的大小。所以我的问题是如何减小我的应用程序的大小?

【问题讨论】:

【参考方案1】:

您可以使用APK splits 构建针对单个设备architectures 的应用的较小版本。有关这方面的示例,请参阅San Angeles demo project。

如果您的应用不需要它们,您可以通过删除 libpngt.so/libjpgt.so 文件来进一步减少它们。

使用 ProGuard 也可能有所帮助。

【讨论】:

谢谢罗伯特,为不同的 CPU 架构拆分 APK 是可行的。但是,维护playstore上的所有apk不是很难吗? 多个 APK 仍属于 Play 商店中的一个列表,但是确实存在执行 multiple uploads、为每个应用处理 versionCodes 的麻烦,并且存在出错的机会。减少这种情况的一种方法是使用 Developer Console Publisher API 编写 APK 上传过程脚本。 感谢罗伯特的回复,我会试试的。 @rmtheis 我假设文件 libpngt.so/libjpgt.so 仅在使用 JNI 通过 Android Studio 构建 tess 2 时使用?另外,如何在苔丝二号中只使用数学字符?我有经过 eng 训练的数据文件。【参考方案2】:

关于 tesseract 库大小,请查看 tesseract 本身提供的选项。描述在文章less is better 中。请注意,有些选项是实验性的,因此请检查您的 OCR 质量。

【讨论】:

感谢您的回复。但我不知道在哪里应用这些命令。你知道吗? 你如何构建 tesseract? 使用 ndk-build。哦,我知道了,谢谢你的回复。【参考方案3】:

使用 3.01 版本的 Tesseract .trainddata 文件。

How to reduce size of tessdata used for TessBaseAPI in android?

【讨论】:

经过训练的数据文件已移至 GitHub,仅适用于最新版本。 旧版本仍然可以在tesseract-ocr alternative download站点找到。 感谢它的帮助。大小从 30 mb 缩小到 22 mb。但与其他 OCR 应用程序相比,22 mb 仍然更大。 如果您不需要字典,可以尝试从 trainddata 中删除字典(解包并合并)。字典对 OCR 质量只有部分影响,所以如果需要,请进行测试... 应该更多。 eng.traineddata 对于 3.01 来说只有 3MB,而对于 3.02 来说是 21MB。【参考方案4】:

阅读http://***.com/questions/25101534/reducing-android-app-apk-size中的答案,您将得到解决方案。为了记录,请始终尝试减少重复代码

【讨论】:

【参考方案5】:

由于第三方库和图像,应用程序的大小大大增加。请查看您使用的所有图片,并尽可能缩小它们的尺寸。

您可以做的另一件事是使用 Lint 检查未使用的资源并删除它们(如果有)。

只需右键单击应用目录 -> 分析 -> 按名称运行检查

然后输入未使用的资源。

【讨论】:

除了一个 xml 文件外,没有未使用的资源。【参考方案6】:

您的 Android 应用程序的大小在应用程序开发中起着决定性的作用,其中设备采用按字节付费的计划。 因此,这里有一些减小 Android 应用程序大小的方法。

    避免使用Pngs(使用矢量图像)。 使用 pngcrush 压缩 png 。 网址:https://pmt.sourceforge.io/pngcrush/ 尽量从服务器获取大部分图像,而不是将它们保存在源代码中。 使用动态交付概念在运行时加载按需功能。 避免使用第三方#libraries,只需几行代码即可完成。 “Android 大小分析器”这个#plugin 通过向您提供建议来帮助您减小应用程序的大小。 在发布应用程序或发布更新时从#APKs 切换到Android 应用程序#Bundles。通过这种方式,App 是基于设备的 CPU 架构(ABI)、语言和屏幕密度构建的。 文档:https://developer.android.com/studio/build/configure-apk-splits 重要: 在你的 gradle 中将 minifyEnabled 和 shrinkResources 设置为 true。

如果您想了解更多信息,可以访问我的linkedIn 个人资料帖子。 网址:https://www.linkedin.com/posts/abhishek-gupta-9b32b816b_android-app-development-activity-6609095411581972480-heF8

【讨论】:

以上是关于如何减少android应用程序的大小?的主要内容,如果未能解决你的问题,请参考以下文章

Android绘制优化布局优化

通过用户选择增加和减少 android 应用程序的字体大小

我们如何在React Native中将生产的APK大小减少70%?

Android减包 - 减少APK大小

如何在 Eclipse 中为 android 调试 javafx 应用程序

如何在Android系统中使用gzip进行数据传递