Android进阶之路安卓知识总结

Android性能优化 - apk包体优化

2021-01-06  本文已影响0人  进击的包籽

1.了解apk包结构

*AndroidManifest.xml
AndroidManifest.xml 在这里插入图片描述

2.具体优化

2.1 图片优化

SVG下载
使用SVG
调节参数
<!-- android:tint  可以修改颜色 -->
<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:src="@drawable/ic_home"
    android:tint="#2196F3"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#2196F3" android:state_pressed="true"/>
    <item android:color="#E91E63" android:state_pressed="false"/>
</selector>

<!-- android:tint  可以修改颜色 -->
<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:src="@drawable/ic_home"
    android:tint="@color/click_color"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

2.2 Android Size Analyzer插件

2.3 开启压缩

Google官方推荐 使用 R8 压缩您的应用

android {
      buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        debug{
        }
    }
}
<?xml version="1.0" encoding="utf-8"?>
<!-- keep:保留的资源,无论是否使用 -->
<!-- discard:要舍弃掉的资源 -->
<resources
    xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@layout/BaoActivity.xml,@drawable/bao_*.jpg"
    tools:discard="@layout/TestActivity.xml" />

2.4 使用Lint分析器

在这里插入图片描述
   <com.airbnb.lottie.LottieAnimationView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:src="@drawable/playerdetail_detail_like_nor"
                    app:lottie_imageAssetsFolder="images"
                    app:lottie_scale="0.5" />
getResources().getIdentifier("layout_main","layout",getPackageName());

2.5 使用指定语言

android {
    defaultConfig {
        resConfigs "zh-rCN"
    }
}

2.6 动态库打包配置

android {
    defaultConfig {
         ndk{
            abiFilters "arm64-v8a"
        }
    }
}
android {
    flavorDimensions "default"
    productFlavors{
        arm32{
            dimension "default"
            ndk{
                abiFilters "armeabi-v7a"
            }
        }
        arm64{
            dimension "default"
            ndk{
                abiFilters "arm64-v8a"
            }
        }
    }
}
android {
    splits {
        abi {
            enable true
            reset()
            include 'arm64-v8a','armeabi-v7a'
            universalApk true //是否打包一个包含所有so的apk
        }
    }

3. 总结

上一篇下一篇

猜你喜欢

热点阅读