Apk圧縮とダイエット)

2562 ワード


Apk圧縮とダイエット
最近私は会社の业务员のために1セットのCRMシステムを开発して、自分の人は使って、ものの内容は多くなくて、できるだけすべてApkをダイエットするのが少し小さくて、何気なくいくつかApkのダイエット方法を见て、ここで记录します.
1.TinyPNG
私のApk debugモードの8 MBぐらい、署名を混同したrelease版の5 MBぐらい、みんなはApkの大きい主な原因が私达のコードではないことを知っていて、结局1つの类は数KBしかなくて、しかし1枚のピクチャーは少なくとも数十KBになって、だから私达のしなければならない第1歩はピクチャーにダイエットして、解像度を下げてユーザーの体験に影响して、これは取ってはいけないので、それでは私达はどのようにしますか?このTinyPNGは、無損圧縮方式を採用しています.具体的には公式サイトを見てもいいですよ->パンダTinyクリックしてリンクを開けてください
2.armable-v 7パッケージのSoファイルを削除する
armable-v 7はグラフィックレンダリングに大きな改良がありますが、圧縮のためにarmableを保持すればよいので、ビジネスに影響はありません.
3.微信AndResGuard資源混同AndResGuardはAPKサイズを縮小するのに役立つツールです.彼の原理はJava Proguardに似ていますが、リソースのみです.彼はもともと冗長なリソースパスを短くし、例えばres/drawable/wechatr/d/aに変更します.AndResGuardはコンパイルプロセスに関与せず、1つのapk(署名の有無にかかわらず、debug版、release版であっても、処理中に元の署名を直接削除することができる)を入力するだけで、リソース混同を実現したapk(プロファイルに署名情報を入力すると、自動的に再署名して整列し、直接公開可能なapkを得ることができる)と、リソースIDに対応するmappingファイルを得ることができる.
apply plugin: 'AndResGuard'

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.6'
    }
}


andResGuard {
    // mappingFile = file("./resource_mapping.txt")
    mappingFile = null
    //     v2     ,7zip        。
    use7zip = true
    useSign = true
    //       , keep          ,        
    keepRoot = false
    whiteList = [
        // for your icon
        "R.drawable.icon",
        // for fabric
        "R.string.com.crashlytics.*",
        // for google-services
        "R.string.google_app_id",
        "R.string.gcm_defaultSenderId",
        "R.string.default_web_client_id",
        "R.string.ga_trackingId",
        "R.string.firebase_database_url",
        "R.string.google_api_key",
        "R.string.google_crash_reporting_api_key"
    ]
    compressFilePattern = [
        "*.png",
        "*.jpg",
        "*.jpeg",
        "*.gif",
        "resources.arsc"
    ]
    sevenzip {
         artifact = 'com.tencent.mm:SevenZip:1.2.6'
         //path = "/usr/local/bin/7za"
    }

    /**
    *   :            assemble   apk
    **/
    finalApkBackupPath = "${project.rootDir}/final.apk"

    /**
    *   :   v1     jar       
    *     “SHA1”
    **/
    digestalg = "SHA256"
}

しかし、この手にも悪いところがあり、V 2署名で梱包することはできません.
もちろんそれ以外にも、無駄なライブラリを取り除き、より小さなライブラリを使って痩せることもできますので、ここに記録しておきましょう.