shrinkResources true
//包括与打包在一起的默认ProGuard规则文件
//R8配置文件。
proguardFiles getDefaultProguardFile(
‘proguard-android-optimize.txt’),
‘proguard-rules.pro’
}
未启用
启用后
文件优化
====
图片优化
降低图片bit
不需要太精致的图片可以将图中32 bit降至16 bit或者8 bit。
使用 VectorDrawable 图片
UI小姐姐能提供最好不能提供,咱们自己自己造。
Android Studio 中点击 File > New > Vector Asset
Clip Art 项为固有的矢量图,我们直接用即可,而Local file(SVG,PSD)选项,则是我们需要转换的了,剩下的提示进行就可以啦。
使用 webp 格式图片
使用webp格式的图片可以在保持清晰度的情况下减小图片的磁盘大小,是一种比较优秀的,Google推荐的图片格式。
选中图片>右键>选择
图片由.png转为.webp
三方库优化
在 App 中会引入各种三方的库,但是在引入之前最好权衡一下是否需要将其代码全部引入,造成不必要的代码或者资源也被打包到 APK 中。
例如Facebook全家桶,你不可能全部用到仅导入部分即可,如登入和分享
dependencies {
// Facebook Core only (Analytics)
implementation ‘com.facebook.android:facebook-core:11.1.0’
// Facebook Login only
implementation ‘com.facebook.android:facebook-login
:11.1.0’
// Facebook Share only
implementation ‘com.facebook.android:facebook-share:11.1.0’
// Facebook Messenger only
implementation ‘com.facebook.android:facebook-messenger:11.1.0’
// Facebook App Links only
implementation ‘com.facebook.android:facebook-applinks:11.1.0’
// Facebook Android SDK (everything)
implementation ‘com.facebook.android:facebook-android-sdk:11.1.0’
}
仅需导入
dependencies {
implementation ‘com.facebook.android:facebook-login:11.1.0’
implementation ‘com.facebook.android:facebook-share:11.1.0’
}
例如XRecyclerView一个 RecyclerView 实现了 pullrefresh 、loadingmore 和 header featrues。你可能仅用到 loadingmore,那你就可以将关于loadingmore部分截取出来。而不用导入整个包。
关于 App Bundle
=============
这个功能就跟ios一样了,他们就是将所有资源全部打到项目中,然后App Store,根据安装设备的属性,来选取相应资源打包进行下载。
谷歌的 Dynamic Delivery 功能就天然地解决了这个问题,通过 Google Play Store 安装 APK 时,也会根据安装设备的属性,只选取相应的资源打包到 APK 文件中。
如下图,你上传的700MB大小的aab,但是你下载的话会有两套资源打在apk中,但是用户下载仅一套资源700MB。
,也会根据安装设备的属性,只选取相应的资源打包到 APK 文件中。
如下图,你上传的700MB大小的aab,但是你下载的话会有两套资源打在apk中,但是用户下载仅一套资源700MB。