溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android開發(fā)優(yōu)化之Apk怎么優(yōu)化

發(fā)布時間:2022-05-18 09:16:26 來源:億速云 閱讀:189 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細介紹“Android開發(fā)優(yōu)化之Apk怎么優(yōu)化”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“Android開發(fā)優(yōu)化之Apk怎么優(yōu)化”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

了解APK結(jié)構(gòu)

在討論如何縮減應(yīng)用的大小之前,需要了解應(yīng)用APK的結(jié)構(gòu)。APK文件是由一個Zip壓縮文件組成,其中包含構(gòu)成應(yīng)用的所有文件。其中包括Java類文件、資源文件及已編譯資源的文件。

APK 包含以下目錄:

  • META-INF/ :包含 CERT.SF 和 CERT.RSA 簽名文件,以及 MANIFEST.MF 清單文件。

  • assets/ :包含應(yīng)用的資源;應(yīng)用可以使用 AssetManager 對象檢索這些資源。

  • res/ :包含未編譯到 resources.arsc 中的資源(圖片、音視頻等)。

  • lib/ :包含特定于處理器軟件層的已編譯代碼。此目錄包含每種平臺類型的子目錄,如 armeabi 、armeabi-v7a 、 arm64-v8a 、 x86 、 x86_64 和 mips 。

APK 還包含以下文件。在這些文件中,只有 AndroidManifest.xml 是必需的。

  • resources.arsc :包含已編譯的資源。此文件包含 res/values/ 文件夾的所有配置中的 XML 內(nèi)容。打包工具會提取此 XML 內(nèi)容,將其編譯為二進制文件形式,并壓縮內(nèi)容。此內(nèi)容包括語言字符串和樣式,以及未直接包含在 resources.arsc 文件中的內(nèi)容(例如布局文件和圖片)的路徑。

  • classes.dex :包含以 Dalvik/ART 虛擬機可理解的 DEX 文件格式編譯的類。

  • AndroidManifest.xml :包含核心 Android 清單文件。此文件列出了應(yīng)用的名稱、版本、訪問權(quán)限和引用的庫文件。該文件使用 Android的二進制XML文件

Android Size Analyzer

Android Size Analyzer 工具可輕松地發(fā)現(xiàn)和實施多種縮減應(yīng)用大小的策略。

首先在 Android Studio 中的插件市場下載安裝 Android Size Analyzer 插件。安裝插件后,從菜單欄中依次選擇 Analyze > Analyze App Size,對當前項目運行應(yīng)用大小分析。分析了項目后,系統(tǒng)會顯示一個工具窗口,其中包含有關(guān)如何縮減應(yīng)用大小的建議。

移除未使用的資源

APK瘦身關(guān)鍵就在一個字:刪!沒用的就刪了。

啟用資源縮減 (不打包)

如果在應(yīng)用的 build.gradle 文件中啟用了資源縮減: shrinkResources ,則 Gradle 在打包APK時可以自動忽略未使用資源。 資源縮減只有在與代碼縮減: minifyEnabled 配合使用時才能發(fā)揮作用。在代碼縮減器移除所有不使用的代碼后,資源縮減器便可確定應(yīng)用仍要使用的資源 。

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

動態(tài)庫打包配置

so文件是由ndk編譯出來的動態(tài)庫,是 c/c++ 寫的,所以不是跨平臺的。ABI 是應(yīng)用程序二進制接口簡稱(Application Binary Interface),定義了二進制文件(尤其是.so文件)如何運行在相應(yīng)的系統(tǒng)平臺上,從使用的指令集,內(nèi)存對齊到可用的系統(tǒng)函數(shù)庫。在Android 系統(tǒng)中,每一個CPU架構(gòu)對應(yīng)一個ABI,目前支持的有:armeabi-v7a,arm64- v8a,x86,x86_64。目前市面上手機設(shè)備基本上都是arm架構(gòu), armeabi-v7a 幾乎能兼容所有設(shè)備。因此可以配置:

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

對于第三方服務(wù),如百度地圖、Bugly等會提供全平臺的cpu架構(gòu)。進行了上面的配置之后,表示只會把armeabi-v7a打包進入Apk。從而減少APK大小。

讀到這里,這篇“Android開發(fā)優(yōu)化之Apk怎么優(yōu)化”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI