[英]How to reduce Android Apk size
我正在開發包含以下依賴項的應用程序
模塊級別
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:design:23.3.0'
compile 'com.google.android.gms:play-services:9.0.0' **// for GCM**
compile 'com.android.support:cardview-v7:23.3.0'
compile 'com.squareup.picasso:picasso:2.5.2' **//Rounding and displaying image from URL**
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.github.lecho:hellocharts-library:1.5.8@aar' **// For bar graph**
compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') {
transitive = true;
}
compile 'com.google.firebase:firebase-core:9.0.0' **// Analytics**
}
項目層面
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
classpath 'com.google.gms:google-services:3.0.0'
classpath 'io.realm:realm-gradle-plugin:1.0.1' // Database
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
我的
/ assets / 150kb使用令人敬畏的字體文件。
/ java-644 KB
/ res-740 KB(使用的高分辨率圖片1920 * 1280大小220kb,使用tinypng壓縮)
已應用ProGuard。 刪除未使用的文件和代碼。
題
我的應用程序大小仍然是7.03MB
如何縮小應用程式大小? 我不知道為什么是7.03MB
是否有任何計算可以得出apk中依賴項所使用的大小?
就像Google Play服務在apk中占據了大約200kb。
除了編譯完整的Google Services程序包外,您還可以調用編譯所需的程序包。 下面有一個鏈接,請檢查相同的https://developers.google.com/android/guides/setup
在使用GCM之前,我建議您使用Firebase Cloud Messaging,因為google正在將其基礎從gcm轉移到firebase。
Firebase Cloud消息傳遞的鏈接:-
https://firebase.google.com/docs/cloud-messaging/android/client
可以幫助您的要點:-
您可以在設計中使用FontAwesome Icons而不是圖像,這對應用程序大小有很大的影響。 為每次重新布置在dimen.xml中為每個布局提供一個特定的大小。
如果使用的是圖像,則必須確保沒有為不同的屏幕插入相同的圖像。 嘗試盡可能使用android的內置圖標
在6.5之前的Google Play服務版本中,您必須將整個API包編譯到您的應用中。 在某些情況下,這樣做會使將應用程序中的方法數量(包括框架API,庫方法和您自己的代碼)保持在65,536個限制以下變得更加困難。
從6.5版開始,您可以選擇將Google Play服務API編譯到您的應用中。 例如,要僅包含Google Fit和Android Wear API,請在build.gradle文件中替換以下行:
更換
compile 'com.google.android.gms:play-services:9.6.1' //or the version you are using
使用特定的api,您需要:
com.google.android.gms:play-services-gcm:9.6.1
// and other if you need
特定GMS api的依賴項列表可以在此處找到。
您可能會缺少兩種有用的技術
與Proguard一起優化Dex和資源
這會導致代碼更小,因此應僅在發行版中使用。 否則會導致調試困難。 可以通過以下方式實現:
android {
buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }
您還需要集中精力從相關的SDK中刪除未使用的字符串。
諸如支持/ Google Play服務之類的許多庫都帶有可翻譯成多種語言的字符串資源。 您可能不打算全力支持。 使用以下方式,您可以控制大小:
android {
defaultConfig {
...
resConfigs "en"
}
}
這將刪除所有非英語資源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.