android - 添加大 png 图像 .SO 创建后导致应用程序大小增加
问题描述
我在我的项目中替换了一些 png 图像,但应用程序包没有成功构建,因为 png 文件每个 2-3mb 都太大了。然后我用一些 jpeg 更改了图像,每个文件的大小只有几百 kb。之后,当我构建应用程序时,应用程序的大小从 9mb 变为 27mb。我分析了apk,大部分大小是由于一些lib文件
我删除了构建文件夹以删除所有旧文件,但没有帮助。我排除了所有 .so 文件,但没有它们,apk 无法安装。我尝试制作一个捆绑包,但大小也相同。我应该怎么做才能恢复到旧的 apk 大小。
解决方案
读Add multi-density vector graphics
Android Studio 包含一个名为 Vector Asset Studio 的工具,可帮助您添加材质图标并将可缩放矢量图形 (SVG) 和 Adobe Photoshop 文档 (PSD) 文件作为矢量可绘制资源导入您的项目。使用矢量可绘制对象而不是位图可以减小 APK 的大小,因为可以针对不同的屏幕密度调整相同文件的大小,而不会损失图像质量。
您应该使用 SVG 图像而不是 JPG/PNG。
为了使您的应用程序尽可能小,您应该在发布版本中启用缩小以删除未使用的代码和资源。启用缩小时,您还可以从混淆(缩短应用程序的类和成员的名称)和优化(应用更积极的策略以进一步减小应用程序的大小)中受益。
读Shrink, obfuscate, and optimize your app
android {
buildTypes {
release {
// Enables code shrinking, obfuscation, and optimization for only
// your project's release build type.
minifyEnabled true
// Enables resource shrinking, which is performed by the
// Android Gradle plugin.
shrinkResources true
// Includes the default ProGuard rules files that are packaged with
// the Android Gradle plugin. To learn more, go to the section about
// R8 configuration files.
proguardFiles getDefaultProguardFile(
'proguard-android-optimize.txt'),
'proguard-rules.pro'
}
}
}
推荐阅读
- web-crawler - 如何抓取重定向的 URL?
- angular - 如何在 Angular Google Maps 中使用 API 数据作为 Circles 的中心点
- php - 提高搜索规范化日志表的效率
- batch-file - 批处理脚本中的 FOR 循环无法正常工作
- java - Java IllegalAccessError 无法运行应用程序
- facebook - 使用 Facebook JS SDK 管理权限
- sql - 在 sql server 中使用 On delete 级联时的性能问题
- reactjs - React 状态钩子无法正确处理异步数据
- python - 如何在 python 3.5.3 中修复“`OPENSSL_1_1_0j' not found”
- reactjs - TypeError:this.setState 不是 reactjs 中的函数