APP优化 总概

一.APK瘦身

 

首先,我们可以把APK包 拖到AndroidStudio中打开。

那么我们可以怎么做到APK瘦身呢?

 

1.图片资源操作

<1> 压缩图片,我们的切图放到项目中。最好压缩一下。

<2> 鉴于目前,手机设备的改变。我们可以在项目中只添加一套最大的图片,比如xxxdpi。图片在小的设备上会自己缩放图片显示。这样只放一套图片资源,APK体积会减少很多。Android设备图片适配规则如下。

 

 

 

2.so文件操作

为了减少APK的体积,我们可以选择只编译指定平台的SO文件。详情如下

https://blog.csdn.net/weixin_37730482/article/details/72866775

 

 

3.代码混淆

因为代码混淆 提供了压缩(shrinker)、优化(optimizer)、混淆(obfuscator)、预校验(preverifier)四大功能。所以为了减小APK体积。我们需要代码混淆。详情如下

https://blog.csdn.net/weixin_37730482/article/details/73614142

 

 

4.指定语言

项目中如果没有特殊的语音要求,我们可以只指定中文的语言。执行配置

android {
    defaultConfig {
        ...
        //仅支持中文
        resConfigs "zh" 
    }
}

 

 

 

 

 

 

 

二.稳定性

 

提升我们APK的稳定性也是一件很重要的事情。比如降低闪退率。但是有一些闪退,查看闪退日志比较麻烦。我们可以全局铺货。

 

1.自定义CrashManager类

public class CrashManager implements Thread.UncaughtExceptionHandler {

    private final Thread.UncaughtExceptionHandler mDefaultHandler;

    public CrashManager() {
        //获取系统默认的UncaughtExceptionHandler
        mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();
    }

    @Override
    public void uncaughtException(Thread t, Throwable e) {
        if (null == e||null==mDefaultHandler) return;
        Log.d("CrashManager", "e.toString()----:" + e.toString());
        Log.d("CrashManager", "e.getLocalizedMessage()----:" + e.getLocalizedMessage());
        Log.d("CrashManager", "e.getMessage()----:" + e.getMessage());
        mDefaultHandler.uncaughtException(t, e);
    }
}

 

2.Application类注册

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        // 捕获全局异常
        Thread.setDefaultUncaughtExceptionHandler(new CrashManager());
    }
}

 

3.写空指针测试

public class MainActivity extends AppCompatActivity {

    private String mName;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        boolean b = mName.isEmpty();
        Log.d("MainActivity", "b----:" + b);

    }


}

 

4.结果

D/CrashManager: e.toString()----:java.lang.RuntimeException: 

Unable to start activity ComponentInfo{com.wjn.networkdemo/com.wjn.networkdemo.MainActivity}: 

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.isEmpty()' on a null object reference





D/CrashManager: e.getLocalizedMessage()----:

Unable to start activity ComponentInfo{com.wjn.networkdemo/com.wjn.networkdemo.MainActivity}:

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.isEmpty()' on a null object reference




D/CrashManager: e.getMessage()----:

Unable to start activity ComponentInfo{com.wjn.networkdemo/com.wjn.networkdemo.MainActivity}: 


java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.isEmpty()' on a null object reference

 

 

 

 

 

 

 

三.内存的优化

 

Android Studio 里面的Profiler工具,可以帮助我们分析APP的内存使用问题。

详细使用,官网有详细的介绍

https://developer.android.google.cn/studio/profile/memory-profiler?hl=zh-cn

 

 

 

 

 

 

四.布局优化

https://blog.csdn.net/weixin_37730482/article/details/76157085

 

 

 

 

 

 

五.启动速度优化

https://blog.csdn.net/weixin_37730482/article/details/73614214

 

 

 

 

 

六.MultiDex优化

https://blog.csdn.net/weixin_37730482/article/details/72822850

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值