美文网首页
APK体积减少攻略

APK体积减少攻略

作者: jackzhoud | 来源:发表于2017-10-09 16:56 被阅读0次

    APK体积减少攻略

    整体7zip压缩

    1. 将APK包解压到文件夹
    2. 全选所有文件,右键“添加到压缩包”
      3.“压缩格式”必须“zip”
      4.“压缩等级”选择“极限压缩”
      5.“压缩方法”必须“Deflate”(试了Deflate64,BZip2,LZMA,PPMd都无法正常安装)
      6.“单词大小”选择“256”
    3. 将后缀改为APK即可

    apksigner签名

    原理:
    jarsigner是对apk文件里面的每一个路径都会签名,而apksigner只对整体文件签名,并将结果保存到METF中

    制作jks签名文件

    cmd 命令 C:\Program Files\Java\jre1.8.0_111\bin>keytool -genkeypair -alias shy_debug.jks
    -keyalg RSA -validity 7 -keystore shy_debug.jks

    keytool: 是一个Java数据证书的管理工具,keytool 将密钥(key)和证书(certificates)
    存在一个keystore的文件中,或者是jks的文件

    keystore:其中包含密钥和公钥,指定导出的证书位置和名称

    genkey: 在用户目录中创建一个默认.keystore文件

    alias:指定别名名称,不区分大小写

    keyalg: 指定密钥算法,例如:RSA、DSA等。默认采用DSA

    validity:指定证书有效期多少天

    keysize:指定密钥长度

    storepass:指定密钥库的密码(获取keystroe信息所需的密码)

    keypass:指定别名条目的密码(私钥的密码)

    dname:证书拥有者的信息。可以不用在命令中注明,会提示你输入

    list:显示密钥库中的证书信息

    v:显示密钥库中的证书详细信息

    export:将别名指定的证书导出到文件

    file:指定导出到文件的文件名称

    deltete:删除密钥库中的某条目

    printcert:查看导出的信息
    例子

    keytool -genkey -alias fanle -keypass 123456 -keyalg RSA -keysize 1024 -validity 3650 -keystore D:\fanle.jks -storepass 123456 -dname "CN=fanle, OU=xx, O=xx, L=xx, ST=xx, C=xx"
    

    签名

    java -jar /Users/sever1/shell/third/apksigner.jar sign  --ks /Users/sever1/shell/third/boxing.jks  --ks-key-alias jackzhous  --ks-pass pass:wsdyi100  --key-pass pass:wsdyi100  --out out.apk input.apk
    

    刚刚试了一把,发现apk少了5M

    删除部分R文件

    随着项目越来越大,资源文件R会越来越大,大家都知道Android读取资源文件时java里面都是通过R.x.x读取的,再到R.java里面得到资源对应的ID,再回通过ID去resource.asrc里面找到我们的资源显示即可;看看这个读取过程,其实我们可
    以省去java的R.x.x读取方式,直接在Java里面用ID读取,这里我们可以用Python自己写个脚本完成;现在Android studio新版本应该是做了脚本这一步,我们所需要做的就是拿到打好的apk,然后完成以下几步

    • apktool解包
    • 解开包后,删除掉smali目录下R文件除R.smali R$style.smali R$stleable.smali之外的其他几个R文件
    • apktool和包签名即可
    delete_r.png

    最后,能减小apk不少的体积

    其它资源策略

    1.首先考虑能否不用图片,比如使用shape代码实现。

    2.其次如果用图片的话,能否优先使用.9图来简化图片。

    3.采用svg矢量图和VectorDrawable类来替换传统的图片。

    4.如果图片只是旋转角度或者颜色不同,可以用代码实现变换。

    相关文章

      网友评论

          本文标题:APK体积减少攻略

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