Как удалить неиспользуемые значки Google+ из библиотеки Google Play Services

Я перенесла баннерную рекламу AdMobs в Google Play Services в своем проекте Android Studio. Получившийся APK увеличился с 0,7 МБ до более 1,6 МБ. К счастью, ProGuard сбил его чуть более 1 МБ. Я ткнул вокруг APK и заметил, что 280 kB изображений «g +» были добавлены в

res/ drawable-hdpi drawable-mdpi drawable-xhdpi drawable-xxhdpi 

Введите описание изображения здесь

У меня нет планов использовать Google+ в этом приложении. Это утилита, и нет необходимости заниматься социальными сетями. 280kB может звучать как арахис по сравнению с приложениями с несколькими мегабайтами, но, будучи относительно простой утилитой, пользователи хотят, чтобы она была как можно меньше. Он просто чувствует себя грязным, выпустив новую версию, которая взрывается от ~ 700 кБ до более 1000 кБ без каких-либо ощутимых улучшений для пользователя.

В идеале я хотел бы исключить эти значки только для одного проекта, но теперь я мог бы жить с глобальным решением.

Если вы используете Gradle, вы можете использовать параметр shrinkResources в сочетании с ProGuard для исключения ресурсов. Это удаляет как ваши ресурсы, так и ресурсы, которые используют ваши зависимости.

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

По состоянию на апрель 2015 года все еще кажется ошибкой, из-за которой некоторые ресурсы (включая иконки Google Play) не будут удалены. Вы можете обойти это, создав файл keep.xml и указав, какие ресурсы следует удалить. Не забудьте проверить свой APK после этого, потому что удаление необходимых ресурсов может привести к сбою вашего приложения!

 <?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools" tools:discard="@drawable/common_signin_*,@drawable/ic_plusone_*,@drawable/powered_by_google_*"/> 

Удаление этих изображений уменьшает размер APK примерно на 300 КБ.

У меня была эта ошибка:

«… \ Application \ build \ intermediates \ exploded-aar \ com.google.android.gms \ play-services-base \ 7.3.0 \ res \ drawable-xxhdpi \ common_signin_btn_icon_disabled_focus_light.9.png ОШИБКА: невозможно открыть PNG файл "

Студия Android не смогла открыть файл common_signin_btn_icon_disabled_focus_light.9.png.

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

Я использовал «D: \ the_project_folder». Работал для меня. Больше ошибок компиляции.

Благодаря этой ссылке:

https://github.com/googlesamples/android-XYZTouristAttractions/issues/2

Ура!

До сих пор два лучших варианта – добавить крошечные растровые изображения или псевдонимы в проект, названный так же, как и значки g +. Они заменяют значки в библиотеке GPS. Значки находятся в каждом из каталогов drawable- * со следующими именами файлов:

 res/ drawable-hdpi/ drawable-mdpi/ drawable-xhdpi/ drawable-xxhdpi/ common_signin_btn_icon_disabled_dark.9.png common_signin_btn_icon_disabled_focus_dark.9.png common_signin_btn_icon_disabled_focus_light.9.png common_signin_btn_icon_disabled_light.9.png common_signin_btn_icon_focus_dark.9.png common_signin_btn_icon_focus_light.9.png common_signin_btn_icon_normal_dark.9.png common_signin_btn_icon_normal_light.9.png common_signin_btn_icon_pressed_dark.9.png common_signin_btn_icon_pressed_light.9.png common_signin_btn_text_disabled_dark.9.png common_signin_btn_text_disabled_focus_dark.9.png common_signin_btn_text_disabled_focus_light.9.png common_signin_btn_text_disabled_light.9.png common_signin_btn_text_focus_dark.9.png common_signin_btn_text_focus_light.9.png common_signin_btn_text_normal_dark.9.png common_signin_btn_text_normal_light.9.png common_signin_btn_text_pressed_dark.9.png common_signin_btn_text_pressed_light.9.png ic_plusone_medium_off_client.png ic_plusone_small_off_client.png ic_plusone_standard_off_client.png ic_plusone_tall_off_client.png 

Я создал крошечный растровый растровый 9-патч, скопированный и названный как каждый из этих файлов в извлекаемых каталогах. Вы можете видеть это здесь —> Очень крошечный

Альтернативой является создание псевдонимов. Один битовый растровый файл для каждого файла, поэтому вы получаете одинаковое количество файлов. Например:

 res/ drawable/ blank.png drawable-xxhdpi/ common_signin_btn_icon_disabled_dark.9.xml ... 

Каждый из XML-псевдонимов ссылается на крошечный:

 <?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/blank" /> 

Разница в размерах незначительна между крошечным растровым изображением и псевдонимом. Да, это взломать, но пока Google / ProGuard автоматически удалит неиспользуемые растровые изображения, это может быть единственным способом восстановить потерянное пространство. Спасибо CommonsWare за помощь.

В качестве более простой альтернативы просто удалите файлы .png в drawable-xxhdpi, drawable-xhdpi и drawable-hdpi, оставив их в drawable-mdpi. Конечно, убедитесь, что имя файла также существует в drawable-mdpi, во-первых.

Оставляя одно действительное разрешение, безопаснее IMHO, а файлы drawable-mdpi занимают менее 30 КБ, что может быть приемлемым для многих людей.

Intereting Posts
GetWindowVisibleDisplayFrame () дает разные значения в Android 2.2, 2.3 (но не 2.3.3) Использовать Xlint: устаревание с помощью android Где я могу получить функциональный демонстрационный проект Android-приложения Wi-Fi Direct для ADT? Как остановить Диалоговое окно выбора даты, чтобы установить предыдущие даты. Он должен допускать только выше текущей даты текущей системы Сбор объекта не работает? Загрузите изображение с камеры или галереи в WebView Различные значки в виде списка Неопределенные модули при переключении на новую версию android ndk Обнаружение прокрутки вверх и прокрутка вниз в ListView Протокол ответа IoT-запроса Сетевая сеть от iOS до android NineOldAndroids, а не кликабельный вид после вращения или перемещения Android – MediaRecorder выдает недопустимое исключение Eclipse Android AVD Emulator не отображает кнопки для пользовательского разрешения. Android – удаление файлов на SD-карте при удалении