Как уменьшить размер Android Apk

69
3

Я разрабатываю приложение, которое содержит ниже зависимости

Уровень модуля

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
}

мой

/Активы/150kb с использованием файла шрифта aweasome.

/java - 644 КБ

/res - 740 KB (используется изображение с высоким разрешением 1920 * 1280 размер 220kb сжимать с tinypng)

Уже применяется ProGuard. удалить неиспользуемый файл и коды.

Вопрос

Еще мой размер приложения составляет 7,03 МБ

Как уменьшить размер приложения? я не знаю, почему это 7,03 МБ

Есть ли какой-либо расчет, который дает размер, который используется зависимостью в apk?

Подобно сервису google play, занятому около 200kb в apk.

спросил(а) 2016-10-03T10:41:00+03:00 3 года, 11 месяцев назад
1
Решение
58

В версиях сервисов Google Play до 6.5 вам пришлось собрать весь пакет API в ваше приложение. В некоторых случаях это затрудняло сохранение количества методов в вашем приложении (включая интерфейсные API, библиотечные методы и собственный код) в соответствии с лимитом 65 536.

Начиная с версии 6.5, вы можете выборочно компилировать API-интерфейсы Google Play в свое приложение. Например, чтобы включить только API Google Fit и Android Wear, замените следующую строку в файле 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 можно найти здесь.

ответил(а) 2016-10-03T10:52:00+03:00 3 года, 11 месяцев назад
69

Вместо того, чтобы компилировать полный пакет услуг google, вы можете просто вызвать пакеты, которые вам нужны для компиляции. Ниже приведена ссылка, любезно проверьте тот же https://developers.google.com/android/guides/setup

Прежде чем использовать GCM, я предлагаю вам использовать Firebase Cloud Messaging, поскольку Google переводит свою базу с gcm на firebase.

Ссылка для Firebase Cloud messaging: -

https://firebase.google.com/docs/cloud-messaging/android/client


Очки, которые могут вам помочь: -

Вы можете использовать FontAwesome Icons в дизайнах вместо изображений, что сильно влияет на размер приложения. Укажите определенный размер для каждого макета в dimen.xml для каждой реконструкции.

Если вы используете изображение, вам необходимо убедиться, что вы не вставляете одно и то же изображение для другого экрана. Постарайтесь использовать встроенные значки андроида как можно больше

ответил(а) 2016-10-03T11:01:00+03:00 3 года, 11 месяцев назад
40

Существует два полезных метода, которые могут отсутствовать

Оптимизация Dex и ресурсов вместе с proguard

Это приводит к уменьшению кода, поэтому его следует использовать только в сборке релизов. В противном случае во время отладки это будет сложно. Его можно достичь следующим образом:

android {

    buildTypes {

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

Вам также необходимо сосредоточиться на удалении неиспользуемой строки из зависимых SDK.

Удаление неиспользуемой конфигурации с помощью ResConfigs

Многие библиотеки, такие как службы поддержки /Google Play, поставляются со строковыми ресурсами, переведенными на слишком много языков. Возможно, вы не намерены поддерживать их всех. Используя следующий способ, вы можете управлять размером:

android {

defaultConfig {
...
resConfigs "en"
}
}

Это позволит удалить все ресурсы, которые не предназначены для английского языка.

ответил(а) 2018-03-30T13:56:00+03:00 2 года, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема