2014-04-09 3 views
3

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

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

enter image description here

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

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

+0

«Я мог бы жить с глобальным решением на данный момент» - замените значки крошечными в своей копии проектов библиотеки, поэтому проблем с компиляцией нет, но они занимают меньше места. Или замените их с помощью псевдонимов на некоторые одноразовые. – CommonsWare

+0

Интересно. У моего build.gradle есть «компиляция» com.google.android.gms: play-services: 4.3.23 ». Должен ли я скопировать это в мой проект dir и изменить ссылку depdency? Обнаружение того, что библиотека оказывается более жесткой, чем я думал ... – pmont

+1

«Найти, что библиотека оказывается более жесткой, чем я думал» - она ​​находится в вашей установке SDK, если вы установили ее из диспетчера SDK. «Должен ли я скопировать это в мой проект и изменить ссылку на reldency?» - тактично, да. Я думаю, что могут возникнуть некоторые долгосрочные решения этой проблемы, которые станут частью плагина Gradle for Android. И, пройдя этот маршрут, вы добавляете головную боль обслуживания, имея дело с обновлениями в библиотеке самостоятельно. Могут быть способы вырвать изображения после компиляции, но я этого не пробовал. – CommonsWare

ответ

1

Пока что два лучших варианта - добавить крошечные растровые изображения или псевдонимы в проект, названный так же, как и значки 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-патч растровый скопированный и имя, как каждый из этих файлов в рисуемых директориях. Здесь вы почти не видите это ---> very tiny

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

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

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

разницы
<?xml version="1.0" encoding="utf-8"?> 
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
    android:src="@drawable/blank" /> 

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

1

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

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

+1

Я попробовал это, но сгенерированный APK все еще имеет все растровые изображения. Похоже, что gradle (?) Вытаскивает собранную библиотеку GPS, поэтому мне нужно будет ее изменить. Однако не повезло. – pmont

+0

Хмм, я использую только плагин Eclipse ADT, извините, я не могу вам помочь. Было бы полезно, если бы вы могли опубликовать последующие сообщения позже. –

2

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

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

По состоянию на апрель 2015 года все еще кажется bug из-за которых некоторые ресурсы (включая 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 КБ.

2

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

"... \ Application \ сборка \ промежуточных \ разобранной-AAR \ com.google.android.gms \ плей-сервисы базы \ 7.3.0 \ рес \ drawable- xxhdpi \ common_signin_btn_icon_disabled_focus_light.9.png ОШИБКА: невозможно открыть файл PNG «

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

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

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

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

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

Приветствия!

+0

Я не уверен, что это действительно отвечает на вопрос. –