//在android studio项目的app下的build.gradle里,设置如下的项目
android {
defaultConfig {
//只支持英文,中文(指定支持的语言,减少apk体积)(不需要国际化的同学可以只设置中文"zh-rCN")
resConfigs "en-rUS", "zh-rCN"
ndk {
//设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
//这里需要谨慎使用,armeabi架构虽然是万金油,但是有一些第三方依赖会用到其他架构,按需选择
// abiFilters "armeabi", "armeabi-v7a", "arm64-v8a"
abiFilters "armeabi"
}
}
buildTypes {
release {
minifyEnabled true //打开混淆(详细的混淆配置按需操作)
//你添加到代码中的library库可能包含无用的资源,如果你启用了shrinkResources,那么Gradle 会自动帮你移除这些无用的资源。
shrinkResources true
// 建议应该设置zipAlignEnabled为true,像Google Play强制要求开发者上传的应用必须是经过zipAlign的,
// zipAlign可以让安装包中的资源按4字节对齐,这样可以减少应用在运行时的内存消耗。
zipAlignEnabled true //排列压缩apk
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
这时候你做完了上述的操作,会发现apk的体积减少了很多(将近一半)
接下来需要的就是进行资源优化了
1.使用字体图标替换多数按钮和纯色图片
2.尽量使用anim和drawable来解决动画问题(代码实现)
3.必需的图片资源优化方案需要和设计沟通解决(按需确定方案)
这里使用iconfont举个字体图标的栗子:
使用iconfont需要先创建一个自己的项目,然后选择自己需要的图标加入购物车,最后添加到项目中.
在项目里下载字体图标压缩包资源后,把压缩包内的文件`iconfont.ttf`,拷贝至项目app/src/main/java/assets文件夹下
没有assets文件夹的创建一个
# 然后在资源文件夹res/values/string里命名你的图标,例如:
# <string name="tb_xe"></string>
# "tb_xe"是你的命名,是你引入的图标代码标识
# 使用的时候用<IconView/>来添加资源(IconView只是额外添加了init资源的方法),例如:
<com.xxx.utils.view.IconView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/guanbi_xe62c"
android:textColor="@color/textColorHint"
android:textSize="30dp" />
# "textSize"用来控制图标大小,"text"用来导入图标,"textColor"设置图标颜色
//自定义IconView
public class IconView extends AppCompatTextView {
public IconView(Context context) {
super(context);
init(context);
}
public IconView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public IconView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
private void init(Context context) {
// 设置字体图标
this.setTypeface(Typeface.createFromAsset(context.getAssets(), "icons/iconfont.ttf"));
}
}
字体图标可以有效的减小app对图标资源的依赖,并且设置属性方便,还没有适配问题
但是,字体图标只能使用纯色,有使用限制.并且项目重构麻烦,因为要重新更换所有字体图标
便捷的优化方向就是这些了