APK瘦身

作者: 飞马_6886 | 来源:发表于2019-11-04 09:19 被阅读0次

SVG矢量图的使用 用于200*200以下的图片
多个SVG转换为Android的Vector,可以通过第三方工具svg2vector批量转换,命令:
java -jar svg2vector-cli-1.0.0.jar -d . -o a -h 20 -w 20
-d 指定svg所在的目录
-o 输出目录
-h 设置转换后的高
-w 设置转换后的宽

Tint着色器--点击变色

创建两个选择器,然后正常使用即可
//  drawable 选择器  放Drawable文件夹下  back_arrow_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_arrow_back_black_24dp" android:state_pressed="true"></item>
    <item android:drawable="@drawable/ic_arrow_back_black_24dp"></item>
</selector>
//color 选择器  放res-> color文件夹下 tint_color_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/colorAccent" android:state_pressed="true"></item>
    <item android:color="@color/colorPrimary"></item>
</selector>
使用
        <ImageView
            android:id="@+id/back_img"
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:clickable="true"
            android:src="@drawable/back_arrow_selector"
            android:tint="@color/tint_color_selector" />

移除无用资源 2种方案 Refactor -> removeUnused
Tint移除

国际化资源配置

配置国际化  resConfig 'en','cn'
android{
    defaultConfig{
        // 只适配英语
        resConfigs 'en','cn'
    }
}

动态库打包

android{
    defaultConfig{
        ndk{
            abiFilters "armeabi-v7a"
        }
    }
}

压缩代码

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

压缩资源

    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

压缩资源
shrinkResources true(与上面配置配合使用)
默认情况未启用严格模式,如需启动则需设置 shrinkMode,创建keep.xml,如下
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/tools"
tools:shrinkMode="strick"
/>
将该文件保存在项目资源中,例如,保存在 res/raw/keep.xml。构建不会将该文件打包到 APK 之中。

如果你有想要保留或舍弃的特定资源,则可以创建如下的 xml 文件,然后在 tools:keep 属性中指定每个要保留的资源,在 tools:discard 属性中指定每个要舍弃的资源。

image.png

资源混淆

resource.arsc -- > Android Resource
R文件中资源的整型数格式为:0xpptteeee(16进制,p代表的是package,t代表的是type,e代表的是entry

  • Package ID 包ID,系统为0x01,应用程序资源为0x7f。
  • Type ID 资源的类型ID,资源的类型有animator、anim、color等等,每一种都会被赋予一个ID。
  • Entry ID 资源在其所属的资源类型中所出现的次序。
image.png
混淆步骤

1.解压待混淆APK,记录APK内文件存储方式(结合强制压缩文件列表,/config/compressData.txt)解析 arsc 文件(ZIP中存储文件两种方式:DEFLATED(压缩)/STORED(仅存储),对于APK文件来说某些资源不允许压缩(如:SoudPool加载raw下的mp3),而有些资源可以压缩但是AS打包APK时却没有压缩(如png/jpg等)。)
2.混淆 arsc 文件数据中对应的资源名与文件路径字节数据
3.输出混淆后的 arsc 文件至 app 目录
4.将 apk 中其他文件拷贝到 app 目录,并根据混淆修改 res/ 目录下文件名
5.打包、对齐并签名

字符串池格式
字符串池格式
混淆ARSC文件

相关文章

  • APK瘦身 减小APP体积

    APK dex瘦身 APK res瘦身 APK减小语言包 APK 重新打包 PNG转JPG tiny处理png w...

  • Drawable 着色的后向兼容方案

    Drawable 着色的后向兼容方案(APK瘦身实践APK瘦身实践)[http://www.cnblogs.com...

  • Android性能优化

    Apk瘦身实用总结 Apk瘦身 Apk的大小对于用户是否选择下载应用起着至关重要的影响下面是对于减小Apk大小的一...

  • Android性能优化:实战讲解包体积优化(上)

    一、瘦身优化及 Apk 分析方案介绍 1、瘦身优势 我们首先来介绍下,为什么我们需要做 APK 的瘦身优化? AP...

  • app性能优化

    Android冷启动时间优化 Android开发——避免内存泄露 APK瘦身实践 APK瘦身记,如何实现高达53%...

  • apk瘦身

    Android性能优化之APK瘦身详解(瘦身73%) - 简书

  • android apk瘦身

    apk瘦身会带来哪些好处,本文就不赘述了,会依照下面的目录来对apk瘦身进行总结 目录 apk都有啥? 从资源下手...

  • Android apk瘦身实践

    写在前面 最近刚做了一波apk瘦身优化,瘦身后apk大小降低了19%左右。打铁要趁热,赶紧记录一下先。 APK A...

  • ipa和apk简易瘦身

    Material Design风格apk 瘦身ipa 瘦身 一、起因 新版本发布后发现安装包apk和ipa各增加了...

  • 【转】APK瘦身实践

    本文转自:Apk瘦身实践作者:杰风居 转载序:Android开发中,apk瘦身还是很有必要,尤其现在的APP动辄十...

网友评论

      本文标题:APK瘦身

      本文链接:https://www.haomeiwen.com/subject/lfhkyctx.html