简单有效的减少android项目中的apk大小

//在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">&#xe62c;</string>
         #   "tb_xe"是你的命名,&#xe62c;是你引入的图标代码标识

         #   使用的时候用<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对图标资源的依赖,并且设置属性方便,还没有适配问题
但是,字体图标只能使用纯色,有使用限制.并且项目重构麻烦,因为要重新更换所有字体图标



便捷的优化方向就是这些了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值