#java #android #methods #dependencies #google-play-services
#java #Android #методы #зависимости #google-play-сервисы
Вопрос:
У меня, как и у многих разработчиков, есть проблемы с печально известным ограничением методов Android 65000. Я уже перенастраиваю свое приложение, но мне бы очень хотелось как-то облегчить его.
Это график методов моего приложения (взятый с помощью плагина dexcount: https://github.com/KeepSafe/dexcount-gradle-plugin ).
Как вы можете видеть, большинство методов поступают из пакета com.google.android.gms. Это список зависимостей из файла build.gradle:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
compile project(':libs:cip-library:cip-library')
compile project(':libs:android-times-square')
compile files('../libs/mobile.connect-android-1.7.6.jar')
compile files('../libs/dtapl-2.1.1.jar')
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.android.support:cardview-v7:24.2.1'
compile 'com.android.support:multidex:1.0.1'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'
compile 'com.nhaarman.listviewanimations:lib-core:3.1.0@aar'
compile 'com.nhaarman.listviewanimations:lib-manipulation:3.1.0@aar'
compile 'com.nhaarman.listviewanimations:lib-core-slh:3.1.0@aar'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.google.code.gson:gson:2.4'
compile 'de.greenrobot:greendao:2.0.0'
compile 'com.pnikosis:materialish-progress:1.5'
compile 'org.adw.library:discrete-seekbar:1.0.0'
compile 'com.android.support:design:24.2.1'
compile 'net.fredericosilva:showTipsView:1.0.4'
compile 'com.google.maps.android:android-maps-utils:0.4.4'
compile 'com.robohorse.gpversionchecker:gpversionchecker:1.0.8'
compile 'net.danlew:android.joda:2.9.4.1'
compile 'com.android.support:support-annotations:24.2.1'
compile('com.crashlytics.sdk.android:crashlytics:2.6.2@aar') {
transitive = true;
}
compile('com.mikepenz:aboutlibraries:5.7.1@aar') {
transitive = true
}
}
Теперь я знаю, что этих зависимостей не мало, но я не понимаю, какая из них — и как — вызывает зависимость от пакетов, таких как com.google.android.gms.internal.games, в то время как мое приложение не является игрой, com.google.android.gms.internal.cast или com.google.android.gms.internal.fitness. И — самое главное — как я мог когда-либо избавиться от этих зависимостей?
Большое вам спасибо, Марко
Комментарии:
1. Запустите отчет о зависимостях Gradle , чтобы определить, откуда берутся ваши неожиданные зависимости.
Ответ №1:
Чтобы понять, откуда берутся определенные зависимости, запустите задачу dependencies
Gradle в модуле вашего приложения. Предположим, вызывается модуль вашего приложения app
, тогда команда будет выглядеть так:
./gradlew -q :app:dependencies
Выходные данные должны содержать все транзитивные зависимости, и должно быть легко увидеть, какие библиотеки перетаскивают материал, от которого вы хотите избавиться.
Комментарии:
1. Спасибо, Егор, это очень помогло!