国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android APK體積優(yōu)化(瘦身)

這篇具有很好參考價(jià)值的文章主要介紹了Android APK體積優(yōu)化(瘦身)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1、基礎(chǔ)知識(shí):

1.1 apk結(jié)構(gòu)

lib :存放so文件,對(duì)應(yīng)不同的cpu架構(gòu)
res :資源文件,layout、drawable等,經(jīng)過(guò)aapt編譯
assets :資源文件,不經(jīng)過(guò)aapt編譯
classes.dex :dx編譯后的java文件,可執(zhí)行文件,可以直接在Android系統(tǒng)中運(yùn)行
resources.arsc :二進(jìn)制資源文件,經(jīng)過(guò)aapt打包res目錄下的文件后生成的文件
META-INF :簽名信息相關(guān)文件
CERT.RSA :簽名文件,存放公鑰和加密算法描述
CERT.SF :摘要加密,存放加密文件,是使用私鑰對(duì)摘要明文加密后得到的密文信息,只有使用與私鑰配對(duì)的公鑰才能解密該文件
MANIFEST.MF :文件摘要,存放程序清單文件,包含包中所有文件的摘要明文
AndroidManifest.xml :清單文件,包含組件的聲明和配置
kotlin :編譯后的kotlin文件
Android APK體積優(yōu)化(瘦身),android,apk,瘦身

1.2 apk打包流程

精簡(jiǎn):資源文件、Java文件 > dex文件 > APK
Android APK體積優(yōu)化(瘦身),android,apk,瘦身

2、優(yōu)化方案

2.1 常規(guī)操作

2.1.1 圖片體積壓縮

1)tinypng壓縮工具,在線壓縮、AS插件
2)Webp格式,png格式轉(zhuǎn)Webp格式,AS支持一鍵轉(zhuǎn)換

Android APK體積優(yōu)化(瘦身),android,apk,瘦身
3)圖片著色器
針對(duì)相同圖片不同顏色的處理,原本使用兩個(gè)icon切換,可以使用android:tint=""代替

<ImageView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:src="@drawable/img_fallback"
    android:tint="@color/color_000000_FFFFFF"/>

2.1.2 開啟混淆

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

注意:minifyEnabled true 默認(rèn)啟用R8代碼縮減功能,慎用R8,會(huì)忽略視圖修改默認(rèn)優(yōu)化行為的所有ProGuard規(guī)則,如:-optimizations 和 -optimizationpasses

解決方案:開啟混淆,但不啟用R8

android.enableR8=false
android.enableR8.libraries=false

2.1.3 資源縮減

1)Lint檢測(cè)工具

  • 檢測(cè)無(wú)用的資源文件

AS Analyze -> Run Inspection by Name -> Unused resources

注意:這種方式不一定準(zhǔn)確,如:有些圖片,SDK有引用,但是在本地代碼中檢測(cè)不出來(lái)引用的地方。
Android APK體積優(yōu)化(瘦身),android,apk,瘦身
Android APK體積優(yōu)化(瘦身),android,apk,瘦身
檢測(cè)結(jié)果:
Android APK體積優(yōu)化(瘦身),android,apk,瘦身

  • 檢測(cè)

2)資源文件縮減

假如一些資源文件不確實(shí)是否還在使用,或者不確定需求是否變更,不敢刪除,先留著。這情況可以使用shrinkResources來(lái)縮減資源。

buildTypes {
    release {
        minifyEnabled true // 開啟混淆
        shrinkResources true // 資源縮減
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

注意:要配合minifyEnabled一起使用,原理:先代碼移除,然后引用的資源變成無(wú)用,才可以進(jìn)一步縮減。

3)so文件縮減
一般集成第三方SDK時(shí),會(huì)提供各種架構(gòu)的so文件,可以做相應(yīng)的剔除

  • 目前市面上手機(jī)cpu架構(gòu)以arm架構(gòu)為主,所以只保留arm的一種so文件即可,armeabi、armeabi-v7a的可直接刪除
  • 如果需要模擬器調(diào)試,可以加上x86架構(gòu)
android {
    defaultConfig {
        ndk {
            abiFilters 'armeabi-v7a'
        }
    }
}

4)移除未使用的備用資源

  • 多語(yǔ)言項(xiàng)目,配置支持的語(yǔ)言
defaultConfig {
    resConfigs("en", "zh", "zh-rCN")
}
  • 資源文件,限制使用的目錄
defaultConfig {
    resConfigs("xxhdpi", "xxxhdpi")
}

2.2 進(jìn)階

2.2.1 resources資源混淆

資源混淆就是將原本冗長(zhǎng)的資源路徑變短,如:res/drawable/abc 變成 r/d/a。開源工具AndResGuard

2.2.2 ReDex

dex文件是打包中的產(chǎn)物,redex是facebook開源的分包優(yōu)化方案。

2.2.3 so動(dòng)態(tài)加載

so文件按需加載,利用插件化的思想。
注意:風(fēng)險(xiǎn)大,要考慮周全,如:下載時(shí)機(jī)、網(wǎng)絡(luò)環(huán)境、加載失敗后的策略。

2.2.4 插件化

按需加載

2.3 高級(jí)

2.3.1 圖片網(wǎng)絡(luò)化

將圖片放到服務(wù)器,通過(guò)動(dòng)態(tài)下載的方式減小apk體積。
弊端:首次加載圖片,依賴網(wǎng)絡(luò)環(huán)境
注意:如果比較在意流量、加載速度,需要權(quán)衡

2.3.2 原生 -> H5

如促銷活動(dòng),需要加載大量圖片,且原生不夠動(dòng)態(tài)化,可以使用H5來(lái)實(shí)現(xiàn)

2.3.3 修改第三方庫(kù),剔除不需要的代碼

對(duì)于引用的第三方庫(kù),往往只是用到了其中某一兩項(xiàng)功能,對(duì)于多余的功能,可以考慮剔除。

注意:版本升級(jí)的時(shí)候,要注意

2.3.4 DebugItem

DebugItem里主要包含兩種信息:

  • 調(diào)試信息,函數(shù)的參數(shù)變量和所以的局部變量
  • 排查問(wèn)題信息,所有的指令集行號(hào)和源文件行號(hào)的對(duì)應(yīng)關(guān)系

注意:去除debug信息和行號(hào)信息,不是極致,不推薦

2.3.5 R Field內(nèi)聯(lián)

可以解決R文件過(guò)多導(dǎo)致MultiDex 65535的問(wèn)題,進(jìn)一步對(duì)代碼瘦身,

參考:字節(jié)的shrink-r-plugin,滴滴的booster

2.3.6 減少ENUM使用

每減少一個(gè)ENUM,大約可以減少1-1.4kb的大小

3、總結(jié)

任重道遠(yuǎn) …文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-643634.html

到了這里,關(guān)于Android APK體積優(yōu)化(瘦身)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Android 10.0 開機(jī)啟動(dòng)時(shí)PMS掃描apk耗時(shí)相關(guān)功能優(yōu)化

    ? 在android10.0的系統(tǒng)rom定制化開發(fā)中,在系統(tǒng)中開發(fā)產(chǎn)品時(shí),會(huì)根據(jù)客戶要求內(nèi)置第三方app,這時(shí)如果內(nèi)置app過(guò)多,或者安裝的app過(guò)多,在系統(tǒng)開機(jī)的過(guò)程中 在pms掃描安裝app的時(shí)候,就會(huì)比較耗時(shí),這時(shí)候就需要優(yōu)化下pms掃描安裝app這塊的功能代碼,用多線程來(lái)實(shí)現(xiàn)pms掃描安裝

    2024年02月04日
    瀏覽(26)
  • 安卓apk修改(Android反編譯apk)

    最近因?yàn)轫?xiàng)目需要,需要將Android手機(jī)系統(tǒng)自帶的某個(gè)系統(tǒng)軟件反編譯并更改里面某個(gè)資源,并重新打包,簽名生成新的自定義的apk,下面我來(lái)介紹一下我的實(shí)現(xiàn)過(guò)程。APK修改,分為以下幾步: 反編譯解包,修改, 重打包 , 修改簽名等步驟。 1. 系統(tǒng)配置好Java JDK環(huán)境變量 2. 需要

    2024年02月01日
    瀏覽(16)
  • Android APK 簽名打包原理分析(一)【APK結(jié)構(gòu)分析】

    最近在看AOSP Apk安裝的相關(guān)源碼時(shí),發(fā)現(xiàn)自己對(duì)這塊知識(shí)一直停留到用的層面,并未有深入的了解,例如打包的具體過(guò)程、簽名的具體過(guò)程、渠道打包,最重要的,自己這幾年在做系統(tǒng)方面的應(yīng)用時(shí),也解決過(guò)很多apk 安裝的問(wèn)題,修改過(guò)部分的系統(tǒng)源碼,可是沒有把這塊知識(shí)

    2024年02月02日
    瀏覽(26)
  • Android下載apk并安裝apk(用于軟件版本升級(jí)用途)

    Android下載apk并安裝apk(用于軟件版本升級(jí)用途)

    軟件版本更新是每個(gè)應(yīng)用必不可少的功能,基本實(shí)現(xiàn)方案是請(qǐng)求服務(wù)器最新的版本號(hào)與本地的版本號(hào)對(duì)比,有新版本則下載apk并執(zhí)行安裝。請(qǐng)求服務(wù)器版本號(hào)與本地對(duì)比很容易,本文就不過(guò)多講解,主要講解下載apk到安裝apk的內(nèi)容。 (1)讀寫外部存儲(chǔ)的權(quán)限需要?jiǎng)討B(tài)申請(qǐng),

    2024年02月01日
    瀏覽(32)
  • Android APK加固原理

    Android APK加固原理

    一、前言 Android作為開源框架,開放之余,所要面臨的就是安全問(wèn)題,世間之事,有正就有邪,有攻就有守,作為開發(fā)者雖然不需要進(jìn)入專業(yè)安全領(lǐng)域,但還是需要掌握基本的安全常識(shí)和原理。 二、加殼 加殼最初用于windows平臺(tái)可執(zhí)行程序,后被Andriod平臺(tái)采用用于apk加固,可

    2024年02月07日
    瀏覽(36)
  • Android項(xiàng)目導(dǎo)出apk

    Android項(xiàng)目導(dǎo)出apk

    1.基本步驟如下。 第1步:選擇“構(gòu)建”,設(shè)置生成apk。 第2步:勾選apk。 第3步:點(diǎn)擊生成一個(gè)新的密鑰。 第4步:輸入密鑰的相關(guān)信息,隨便輸入。 第5步:上一步完成之后會(huì)自動(dòng)填寫如下圖所示的內(nèi)容。選中記住密碼。 第6步:選擇如下圖所示的。 第7步:等一會(huì)可以生成一

    2024年02月11日
    瀏覽(19)
  • Android APK文件筆記

    APK文件其實(shí)是一個(gè)zip壓縮包 APK的常見文件結(jié)構(gòu)如下: AndroidManifest.xml 聲明四大組件、權(quán)限等信息。解壓是無(wú)法直接打開的,可以使用apktool等工具解密 lib 存放各種架構(gòu)下的so文件的文件夾 存放的so文件可以使用IDA工具進(jìn)行修改。 重打包手段:替換/data/app/packagename/lib下的so為你

    2024年02月15日
    瀏覽(14)
  • Android apk逆向脫殼

    Android apk逆向脫殼

    步驟一:下載逆向相關(guān)軟件和apk 1、Android模擬器:雷電模擬器,我這Android系統(tǒng)是7.1.2【推薦使用模擬器,已經(jīng)有Root權(quán)限】 2、下載安裝Xposed框架 3、下載安裝‘反射大師’apk 4、jadx反編譯 5、配置Xposed ? ?顯示如下圖即安裝成功 模塊選擇反射大師 ? ? 步驟二:脫殼 在模擬器中

    2024年02月14日
    瀏覽(18)
  • 【Android】使用Android Studio打包APK文件

    【Android】使用Android Studio打包APK文件

    打包APK之前,首先需要新建項(xiàng)目,有基礎(chǔ)的可以跳過(guò)。 無(wú)基礎(chǔ)的可以參考:使用Android Studio運(yùn)行Hello World項(xiàng)目 1.找到Build - Generate Signed Bundle or APK - 勾選APK 2.首次需要?jiǎng)?chuàng)建證書,后續(xù)可以使用已創(chuàng)建好的證書 3.填寫證書信息 選擇密鑰庫(kù)存放路徑,并填寫密碼 填寫密鑰名稱、密

    2024年02月19日
    瀏覽(23)
  • Android 對(duì)apk進(jìn)行簽名

    Android 對(duì)apk進(jìn)行簽名

    生成簽名文件: 1.使用jarsigner(僅限V1簽名): 2.使用apksigner(默認(rèn)V1和V2簽名),Android11以上不包含V2簽名會(huì)裝不上 Notice:? ? v1簽名后再對(duì)齊,v2要簽名前對(duì)齊。 對(duì)齊apk: 查看apk是否對(duì)齊: 1.查看apk是否簽名(V1) 2.查看apk是否簽名V1、V2、V3、V4 3.查看簽名文件?

    2024年02月16日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包