2

Я только что добавил информацию о местоположении в свое приложение, основываясь на простой функции «получить последнее известное местоположение», описанном here, в котором используется поставщик плавного доступа.Google Play Services (поставщик плавного доступа) значительно увеличивает размер приложения?

Я стараюсь, чтобы мое приложение было как можно более легким, поэтому неутешительно, что в процессе добавления простого определения местоположения размер моего apk изменился с 185K до 2.1M. Фактически сам код, конечно же, не увеличился на эту сумму, поэтому я предполагаю, что он где-то тянет большую библиотеку.

Любая идея, как я могу уменьшить размер apk снова?

Спасибо.

+0

Библиотека игровых сервисов google продолжает расти и расти, и это, безусловно, увеличит размер вашего приложения. Включить proguard, как предлагает @Mike, но чем больше классов из Google Play Services вы используете, тем больше будет ваше приложение. – rupps

ответ

3

Пара вещей может помочь:

  1. Используйте ProGuard, чтобы вырезать неиспользуемый код - большинство людей оставляют это отключенным для сборки разработки, чтобы избежать дополнительного времени сборки и включить для выпуска сборок.

  2. Использовать новое гранулированное управление зависимостями introduced in Play Services 6.5. Вы можете выбрать, какой из компонентов Службы воспроизведения вам нужен, и исключить остальные. Из документации:

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

В версии 6.5 вы можете выборочно скомпилировать API-интерфейс службы Google Play в свое приложение.

Список отдельных API-интерфейсов, которые вы можете включить, могут быть найдены here.

+0

Отличный ответ. Сначала я попробовал (2), заменив «compile» com.google.android.gms: play-services: 6.5. + '»С« compile »com.google.android.gms: play-services-location: 6.5. +' "в части зависимостей моего файла build.gradle. Это уменьшило sdk до 1.5M ... хорошее, но не блестящее. Затем я попробовал (1), заменив «minifyEnabled false» на «minifyEnabled true» в buildTypes> Release part of build.gradle. Это взяло размер sdk до 880K. Все еще намного больше, чем у моего оригинального 185K, но намного лучше, чем 2.1M. Благодаря! Я думаю, это примерно так же низко, как я могу идти? – drmrbrewer

+0

Думаю, да. В SO есть еще один открытый вопрос, который указывает, что в том числе Play Services, а затем * not *, используя любой из API, по-прежнему не позволяет ProGuard лишить весь код Служебных услуг. Я не знаю, почему это так. – stkent

2

Эта проблема должна быть решена, если вы используете proGuard, прежде чем публиковать APP. Какой я и андроид настоятельно рекомендую вам. proGuard поставляется с SDK android and obfuscates (чтобы сделать его труднее читать после обратного проектирования вашего приложения) и сжимает ваш код. Это означает, что он убивает мертвый код, который вы не используете, и вы используете right now всего лишь небольшую часть сервиса Google Play. Чем больше занятий вы используете, тем больше будет ваше приложение. Proguard может логически отключать неиспользуемый код. Надеюсь, что это помогает

Вы можете прочитать больше о том, как использовать ProGuard в Android здесь: http://developer.android.com/tools/help/proguard.html

И что он делает вообще здесь: http://proguard.sourceforge.net/

+0

Спасибо за этот ответ. Это место, и мне плохо, что я могу только отметить один ответ как «правильный», но ответ Стекента имел два предложения, оба из которых помогли уменьшить размер в их собственном праве. – drmrbrewer

+0

Но я был на час быстрее, чем он ..... И я думаю, что вы все равно будете использовать proguard, поэтому другое предложение на самом деле не очень важно, потому что оно делает то, что делает proguard автоматически .... они только «работали» «потому что вы сделали второй первый.Если вы прямо использовали proguard, вы бы логически пришли бы на тот же размер, что и сейчас, так что теперь я чувствую себя плохо;) @drmrbrewer – Mike

+0

Использование гранулярных зависимостей может спасти вас от необходимости включения ProGuard для отладочных сборников - иначе , это будет принудительно, когда вы нажмете ограничение на метод 64k, что ускорит процесс сборки во время разработки, поэтому использование обоих методов вместе имеет преимущество. – stkent