[英]How to reduce APK file size
有人在采訪中問我如何減少APK文件大小,我的答案是管理資源,管理我正在使用的庫並刪除任何未使用的庫,但他告訴我還有其他方法可以減少APK文件大小
誰能告訴我這些方法是什么?
您可以使用以下方式減少APk大小。
請按照以下步驟減少APK文件大小。
第一步 :
請確保您已在啟用縮小 release
在buildType build.gradle
文件:
buildTypes {
release {
minifyEnabled true
}
}
通過這樣做,您還可以啟用proguard ,因此您需要添加proguard規則以在項目中使用庫。 例如,這是retrofit2的proguard規則:
-dontwarn okio.**
-dontwarn javax.annotation.**
您可以在proguard-rules.pro
文件中添加這兩個規則。
第二步 :
確保在build.gradle
文件中的release
buildType中啟用了資源收縮:
buildTypes {
release {
shrinkResources true
}
}
所以build.gradle
文件中的最終release
范圍應如下所示:
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
第3步 :
您可能在項目中使用的某些庫為不同的國家/地區和語言提供了一些額外的資源。 例如,一個庫可以有兩個string.xml文件,一個用於英語,一個用於日語。 但是你只在你的應用程序中支持英語,所以你不需要那些日語字符串。
要執行此操作,請打開build.gradle文件並添加以下行:
resConfigs "en"
到android范圍下的defaultConfig范圍:
android {
...
defaultConfig {
...
resConfigs "en"
}
}
第四步 :
請按照以下步驟操作,
1.使用.svg格式圖標集
是時候再見巴布亞新幾內亞和歡迎矢量繪畫 。 使用它們有幾個好處。 我們不必擔心不同的設備DPI,它也有助於減少apk大小。 使用Support Library 23.2,我們現在可以使用ImageView的srcCompat屬性而不是android:src來使其向后兼容。 當您從Google的Material Design圖標庫下載系統應用程序圖標集時,請下載.svg格式而不是.pngs。 這有助於我們將應用程序大小減少1 Mb。
2.壓縮PNG
我們使用PNG作為所有屏幕密度的演練屏幕。 PNG的質量和尺寸非常高,只是增加了我們的應用程序大小! 在Weather Stream v1.2中,當我們開始優化我們的應用程序大小時,我們壓縮了我們的演練屏幕和繁榮! 演練屏幕大小是以前的1/10! (是的!1/10)。 太瘋狂了! 我們快速創建了一個構建並檢查了各種屏幕密度的圖像質量,看起來一樣。 快速谷歌搜索將為您提供許多工具,幫助您壓縮您的PNG。 在看到Google Design團隊共享的設備指標后,我們還擺脫了ldpi資源。
3.僅使用特定的Google Play服務庫。
在Google Play Services 6.5之前,我們必須編譯整個軟件包。 但現在我們可以有選擇地將它編譯到我們的應用程 我們現在只使用Google Cloud Messaging,Google Maps和Google Location API。
4.使用Proguard
Proguard用於代碼混淆,它還從依賴項中刪除未使用的Java代碼。 使用Proguard后的結果是較小的apk文件大小,很難進行逆向工程。 要啟用proguard:
的build.gradle
android {
...
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
5.收縮資源
Android Gradle插件支持使用shrinkResources gradle屬性在構建過程中自動排除未使用的資源。 僅此一項就將apk尺寸縮小了約0.5 Mb。 要在發布版本中利用這一點,只需將shrinkResources true添加到您的發布配置中即可。
的build.gradle
android {
...
buildTypes {
release {
shrinkResources true
minifyEnabled true
...
//Other parameters
debuggable false
jniDebuggable false
renderscriptDebuggable false
}
}
}
6. res Confing
“resConfigs”屬性將在構建應用程序時刪除所有其他本地化資源。 在我們的例子中,“防盜鎖屏”僅支持英語。 雖然所有支持庫都可能具有其他語言的本地化文件夾。 我們不需要。 因此,添加以下行以僅允許在APK文件中添加英語資源。
defaultConfig {
//...
//...
//...
//strip other than english resources
resConfigs "en"
}
我只有這些方法! 我希望它可以幫到你
minfyEnabled true
還有3種我能想到的方法:
minifyEnabled true
,代碼的混淆也會縮小你的apk大小 在gradle文件中添加它
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.