如何减小Android应用程序的大小?

3

首先,我正在使用Android Studio进行Android应用开发。我已经使用Tesseract库构建了一个OCR Android应用。该应用目前运行良好,提供了期望的输出,但我的问题在于其大小。该构建应用的大小为30 MB,与其他可用的OCR应用相比较高。我已经尝试了“minifyenabled = true”,但它只能减少300 kb的大小。那么我的问题是如何缩小我的应用程序的大小?

6个回答

3
你可以使用APK分割构建针对特定设备架构的较小版本应用。例如,可以参考San Angeles演示项目
如果你的应用不需要libpngt.so/libjpgt.so文件,可以通过删除这些文件进一步减少应用大小。
使用ProGuard也可能有所帮助。

谢谢Robert,针对不同CPU架构拆分APK确实奏效了。但是,在Playstore上维护所有的apk会不会很困难呢? - Rahul Bhavani
多个APK仍属于Play商店上的单个列表,但是确实需要进行多次上传,为每个应用程序处理versionCode,并存在出错的机会。最小化此问题的一种方法是使用Developer Console Publisher API脚本化APK上传过程。 - rmtheis
谢谢Robert的回复,我会尝试的。 - Rahul Bhavani
@rmtheis 我假设文件libpngt.so/libjpgt.so只在通过JNI使用Android Studio构建Tess Two时使用?此外,我如何在Tess Two中仅使用数学字符?我有eng训练数据文件。 - i_o

2

关于tesseract库的大小问题,请查看tesseract本身提供的选项。相关说明在文章less is better中。请注意,其中一些选项是实验性的,请检查您的OCR质量。


谢谢您的回复。但我不知道在哪里应用这些命令。您知道吗? - Rahul Bhavani
你如何构建Tesseract? - user898678
使用ndk-build。哦,我明白了,谢谢你的回复。 - Rahul Bhavani

1

训练数据文件已移至GitHub并仅适用于最新版本。 - Rahul Bhavani
旧版本仍可在tesseract-ocr替代下载网站找到。 - nguyenq
谢谢,这很有帮助。从30MB缩小到22MB。但与其他OCR应用相比,22MB仍然较大。 - Rahul Bhavani
如果您不需要它们,可以尝试从trainddata(解压缩并合并)中删除字典。字典对OCR质量只有部分影响,因此如果您需要它们,请进行测试... - user898678
应该会更多。eng.traineddata 的大小仅为3MB,而3.01版本相比之下,3.02版本的大小为21MB。 - nguyenq
显示剩余3条评论

0

在应用程序开发中,Android 应用程序的大小在设备使用按字节计费计划时起着决定性作用。因此,以下是减小 Android 应用程序大小的几种方法。

  1. 避免使用 PNG(使用矢量图像)。 使用 pngcrush 压缩 PNG。 网址:https://pmt.sourceforge.io/pngcrush/
  2. 尽可能从服务器获取大部分图像,而不是将它们保存在源代码中。
  3. 使用动态交付概念,在运行时加载按需功能。
  4. 避免使用第三方库,这可以通过几行代码简单地完成。
  5. "Android Size Analyzer" 这个插件通过给出建议来帮助您减小应用程序的大小。
  6. 在发布应用程序或发布更新时,切换到 Android 应用程序包(Bundles)而不是 APK。这样,应用程序基于设备的 CPU 架构(ABI)、语言和屏幕密度构建。 文档:https://developer.android.com/studio/build/configure-apk-splits
  7. 重要提示: 在 gradle 中将 minifyEnabled 和 shrinkResources 设置为 true。

如果您想阅读更多内容,可以访问我的LinkedIn个人主页。 链接:https://www.linkedin.com/posts/abhishek-gupta-9b32b816b_android-app-development-activity-6609095411581972480-heF8


0

阅读 https://dev59.com/2l8f5IYBdhLWcg3wB-7E 中的答案,您将得到解决方案。并且为了记录,始终尝试减少重复代码。


0

应用程序的大小主要由第三方库和图像引起的增加。请查看您使用的所有图像,并尝试在可能的情况下减小它们的大小。

您还可以使用Lint检查未使用的资源并删除它们(如果有)。

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

然后输入未使用的资源。


除了一个单独的XML文件外,没有未使用的资源。 - Rahul Bhavani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接