Android 瘦身

参考Awesome-Android-Interview

Demo:Advanced

 

Android App包瘦身优化实践

 

lib/:包含特定于处理器软件层的编译代码。该目录包含了每种平台的子目录,像armeabi,armeabi-v7a, arm64-v8a,x86,x86_64,和mips。大多数情况下我们可以只用一种armeabi-v7a,后面会讲到原因。

assets/:包含应用可以使用AssetManager对象检索的应用资源。

res/:包含未编译到的资源 resources.arsc,主要有图片资源文件。

META-INF/:包含CERT.SF和 CERT.RSA签名文件以及MANIFEST.MF 清单文件。

resources.arsc:包含已编译的资源。该文件包含res/values/ 文件夹所有配置中的XML内容。打包工具提取此XML内容,将其编译为二进制格式,并将内容归档。此内容包括语言字符串和样式,以及直接包含在resources.arsc文件中的内容路径 ,例如布局文件和图像。

classes.dex:包含以Dalvik / ART虚拟机可理解的DEX文件格式编译的类。

AndroidManifest.xml:包含核心Android清单文件。该文件列出应用程序的名称,版本,访问权限和引用的库文件。该文件使用Android的二进制XML格式。



作者:aserbao
链接:https://www.jianshu.com/p/fee82949ff84
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

资源混淆

Lint,取720p的资源,放到xhdpi目录。

Refactor、Remove All Unused Resources,删除所有的无用资源。

增加shrinkResources资源压缩功能,当然minifyEnabled混淆自然要打开。

        android {
            ...
            buildTypes {
                release {
                    shrinkResources true
                    minifyEnabled true
                }
            }
        }

 

图片尽量采用使用webp格式,没有,使用jpg格式。

使用tinypng等图片压缩工具对图片进行压缩。

动画方面

 

删除x86包下的so。

    abiFilters "armeabi-v7a"

重新编译so文件,用更小的库代替。

 

 

使用provided可以保证实际打包中并不引用此第三方库,实现了控制APP大小的目标。

纯色的渐变的圆角的图片都可以用shape实现。

 

国内应用只支持中文,可设置

        android {
            defaultConfig {
                resConfigs "zh"
            }
        }
 

 

尝试使用动态加载so库文件,插件化开发。

将大资源文件放到服务端,启动后自动下载使用。

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值