2017-08-26 231 views
1

我正試圖減少我的即時應用程序的大小。我設法將主模塊分成幾個較小的模塊(功能和庫)。一旦應用程序建立,apk文件的大小(啓用縮小):4.9 MB(基本功能),5 MB(UI功能 - 活動,片段,接收器等)和1.3MB(項目詳細信息功能)。問題是,我不知道我還能從模塊中刪除什麼,因爲使用最多大小的包是... com.google.android.gms.internal(下面的屏幕)。如何減少apk中的GMS大小

BaseFeature: enter image description here

UI功能: ui feature

恐怕即使我分裂這些模塊多,與此庫的問題依然存在。我真的很接近完成我的應用程序的即時應用程序,但由於尺寸太大,我無法上傳這些文件。任何人都可以知道如何解決這個問題?

+1

如果沒有看到Proguard配置,很難給出建議。確保你1)使用短包名稱(一個符號左右)啓用重新打包('-repackageclasses')2)去掉所有可能的調試屬性(例如,默認的google proguard config保留所有註釋:'-keepattribute * Annotation * ',但你可能可以沒有他們的生活)。 3)不要有一些braindead庫或Proguard配置文件,它可以讓很多代碼不被proguard處理。後者尤其重要:手動檢查已編譯的jar文件並確保將類最小化。 – user1643723

+0

看起來您在「Base」和「UI」功能中都有com.google.android.gms。*的副本。這不應該是必要的,因爲基本特徵中定義的任何類或資源都可以從其他特徵訪問。 – dchai

回答

1

通常,您可以對reduce APK size執行以下操作。

在文檔範圍內的方法。

  1. Reduce resource count and size

    其中一個簡單的方法,讓您的APK小是降低它包含了資源的 數量和規模。特別是,您可以刪除您的應用不再使用的資源,並且可以使用 可伸縮的Drawable對象代替圖像文件。

    • 刪除未使用的資源
    • 最小化從圖書館資源利用
    • 只支持特定密度
    • 使用拖拉的對象
    • 重用資源
    • 從代碼渲染
    • 緊縮PNG文件
    • C ompress PNG和JPEG文件
    • 使用WebP的文件格式
    • 使用矢量圖形
    • 使用矢量圖形的動畫圖像
  2. Reduce native and Java code

    • 刪除不必要的生成代碼
    • 避免枚舉
    • Reduce本機二進制文件的大小
    • 刪除調試符號
    • ,避免提取本地庫
  3. Maintain multiple lean APKs

您的APK包含用戶下載,但從來沒有使用內容,如 區域或語言信息。要爲您的用戶創建最小的 下載,您可以將您的應用分成幾個APK,並通過諸如屏幕尺寸或GPU紋理支持等因素區分 。

另一個參考Shrink Your Code and Resources

爲了使您的APK文件儘可能小,應該啓用 萎縮,除去在發佈版本無用的代碼和資源。 本頁面描述瞭如何做到這一點,以及如何指定在構建期間保留或放棄哪些代碼和 資源。