Яндекс.Метрика

WizIconizer: замена иконок в Samsung TouchWiz


 
# 7146
# Ленинград
Как поменять иконки в тачвизе (самсунг TouchWiz)

Чем рано или поздно начинает утомлять тачвиз - это своими иконками. В новых его версиях можно менять темы, и иконки могут быть изменены вместе с темой, но иконпаки отдельно применить - нет. К тому же в темах иконок не так много, как хотелось бы, и в результате получается вообще бред: несколько основных иконок из темы, а остальные - стандартные от приложений.

Особенно тачвизовские иконки напрягают в моём Note Edge, потому что даже если установить сторонний лончер и к нему - выбранный иконпак, то значки в боковой панели всё равно остаются стоковые. То есть, туда иконпак не применяется.

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

Плюсы: 1) можно выбрать для тачвиза любой сторонний иконпак, 2) значки применятся даже в тех местах, куда обычно иконпаки не дотягиваются - в менюшках "Отправить через" и т.п., или, как в Note Edge, на боковом экране тоже.

Минусы: 1) кривизна иконпаков и устаревшие данные в них не обрабатываются, поэтому кое-какие иконки вообще не применятся, кое-какие применятся некорректно (см. что делать), 2) нет возможности изменять иконки, выбрав из иконпака, можно только вручную, что, впрочем, несложно, 3) самый главный недостаток для обычного пользователя - нужен ROOT, чтобы эта штука работала.

Пара скриншотов, как это действует:

Это в самом тачвизе. Как уже говорил, применятся стандартные иконки, но многое зависит от иконпака - редко который из них полностью поддерживает весь самсунговский софт. А некоторые не применятся, так что придётся, если хочется идеала, править ручками.

Screenshot_2016-03-14-12-45-20.png

Screenshot_2016-03-14-12-45-35.png


Это в разных открывашках типа "Отправить через". Тут многих значков (типа иконки блютуза, видео, некоторых иных сервисов) замена не коснётся, но основное - будет. Хотя и сервисные при желании, думаю, можно добавить вручную.

Screenshot_2016-03-14-11-37-52.png

Screenshot_2016-03-14-11-40-48.png


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

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

Ссылка на тему в 4PDA и само приложение:
Вот он: WizIconizer
wiziconizer_1_08_Beta.apk
(1.53 MiB) Скачиваний: 601

а, может быть, осталось добрых ангелов мало,
вот и случилось так, что сердце моё стало
камнем, камнем...


 
# 7146
# Ленинград
Проблема WizIconizer'а

Недостаток многих (полагаю, почти всех) наборов значков: после применения визиконайзером некоторые иконки расставляются не совсем корректно. Например, может быть выставлена одна и та же иконка для телефона и контактов. Всё это связано с айдишниками приложений, не очень аккуратно прописанных в иконпаках. Некоторые приложения, например, поменяли список активити, а в иконпаке указан старый. Визиконайзер сканирует иконпак и берёт оттуда данные, а сам ничего не привносит. Впрочем, это поправимо руками при некотором терпении (см. ниже по теме).

beluk.JPG
Значки, отсутствующие в иконпаке + различное отображение иконки для Google Documents


В общем, в иконпаках есть свои косяки, а есть и некоторые общие. Например, приложения google drive, google documents, google sheets и google slides будут иметь одну и ту же иконку. Дело в том, что для тачвиза (ну, по крайней мере, для него) гугловское разбиение приложения Google Drive на четыре - drive, docs, sheets и slides - выглядит как одно приложение, потому что конструкции вида "com.google.android.apps.docs.editors.docs/com.google.android.apps.docs.app.NewMainProxyActivity" он понимать не желает, а разбивание этой конструкции на две "com.google.android.apps.docs.editors.docs" и "com.google.android.apps.docs.app.NewMainProxyActivity" для каждого из этих приложений приводят к тому, что для всех четырёх берётся одна иконка, которую система последней прочитает из списка. При этом каждый базовый apk получит таки свою иконку, но в самом лончере это будет одно и то же изображение для всех.

beluk-3.jpg


Думаю, та же беда будет в некоторых телефонах с такими приложениями как контакты-телефон, где это на самом деле одно и то же приложение, имеющее два ярлыка. А иногда и целых три - контакты-телефон-сообщения. И с этим, пожалуй, ничего не попишешь - ну, по крайней мере, я способа не нашёл пока.

beluk-1.JPG


Хотя тема по оформлению больше напоминает то, что самсунг ввёл для новых аппаратов в 5.1.1, а для старых - в 6.0.1, это всяко лучше, чем чехарда размеров: иконки самсунга от значков почти всех сторонних приложений весьма заметно отличаются по размеру. Конечно, в сторонних лончерах можно настроить значки вообще "как угодно, когда угодно и кто угодно" (с) Но при этом не изменятся системные их отображения - в меню Share, в списке установленных приложений, в меню "Открыть с помощью..." и так далее.

beluk-2.JPG


А в визиконайзере это сделать можно. К тому же, сторонние лончеры иногда надоедают и хочется поработать с тачвизом. Особенно на Note Edge, где работа боковой грани в тачвизе существенно отличается от всего остального. Хотя, автору визиконайзера ещё работать и работать над улучшением подстановки значков. А в идеале - добавить бы визуальный метод для ручной замены.
а, может быть, осталось добрых ангелов мало,
вот и случилось так, что сердце моё стало
камнем, камнем...


 
# 7146
# Ленинград
Как работает WizIconizer

Что делает WizIconizer? Честно говоря, он пользуется системной (!) возможностью менять иконки. То есть, он берёт выбранную тему значков, переименовывает в CSCAppResource.apk и кладёт в /system/csc/appresource. Затем сканирует, получает оттуда список значков (из /assets/appfilter.xml или /assets/appmap.xml и смотрит их id-шники в /values/public.xml) и создаёт рядом CSCAppResource.xml, в котором собраны эти айдишники. Система это подхватывает после перезагрузки. То есть, визиконайзер для дальнейшего существования применённого иконпака вообще не нужен. Всё, что делает визиконайзер, можно вообще сделать вручную, но с ним - быстрее, так как он сам просканирует тему и создаст нужный для системы xml-файл.

01-06-2016 9-50-01.png


Почему некоторые значки не применяются или применяются некорректно... Во-первых, некоторых (и даже очень многих) иконок в иконпаке может просто не быть. Во-вторых, иконпак может быть устаревшим с точки зрения прописанных в нём активити приложений (да и самих названий). Всё, однако, поправимо руками за пару-тройку минут.
а, может быть, осталось добрых ангелов мало,
вот и случилось так, что сердце моё стало
камнем, камнем...


 
# 7146
# Ленинград
Как установить свою собственную иконку в тачвизе для любого приложения

Что делать, если нужной иконки или нужного соответствия в выбранном иконпаке нет? Всё оказалось не сложно и почти примитивно. Во-первых, иконка может и присутствовать, но относиться к приложению с немного иным названием. Во-вторых, иконпаки обычно содержат порядка 1500-4000 иконок, и любую неиспользуемую можно "заточить" под свои надобности.

Мне захотелось перенести все приложения из списка скрытых (скрыты они потому, что имеют не назначенные иконки, и не смотрятся ни фига в общем списке) в общий список приложений в меню. Итак, было:

raiffeisen-001.jpg


Для примера поменяю иконку банка Raiffeisen. Первое, что нужно сделать, это перекинуть к себе на комп файл иконпака CSCAppResource.app из /system/csc/appresource. На ПК его нужно разобрать с помощью APKTOOL (Android: разбираем и собираем приложения с помощью APKTOOL) - просто переименовать в ZIP и посмотреть сами иконки, конечно, можно, но таким образом мы не доберёмся до файла /values/public.xml, в котором указаны нужные нам ID иконок, которые мы выберем.

В разобранном файле смотрим в папку с иконками, выбираем подходящую. Я для банка выбрал себе вот эту:

07-06-2016 11-35-51.png


Теперь по её названию (по имени файла иконки) нужно найти её ID в /values/public.xml:

07-06-2016 11-37-40.png


Дальше есть два способа: добавить нужную строчку в CSCAppResource.xml или подредактировать уже существующие строки, созданные WizIconizer'ом в процессе сканирования иконпака. Любой вариант прокатит, но нужно сначала узнать названия компонентов, с которыми надо будет сопоставить выбранную иконку. Для этого идём в /data/data/, ищем там папку приложения, для которого меняем иконку, заходим в неё и смотрим:

raiffeisen-002.jpg


Потом ищем в файле /system/csc/appresource/CSCAppResource.xml строки, в которых проставлен ID 7f020158, найденный в /values/public.xml. Строки эти редактируем в соответствии с названиями компонентов приложения:

07-06-2016 11-49-17.png


После этого заливаем отредактированный файл в /system/csc/appresource/, выставляем ему 644-root-root, перезагружаем телефон. И получаем то, чего хотелось: иконку приложения можно отображать в общем списке, так как она теперь в одном стиле с остальными. Всё это, конечно, перфекционизм))) Но вот как-то бесят меня разностилевые картинки в одном окне.

raiffeisen-003.jpg


Я, особо не вникая в детали и не залезая в дебри, изменения в файле CSCAppResource.xml сделал по образцу других приложений. Если указаны всякие там активити и прочая лабудень, которая мне, как человеку, не программирующему под андроид, не интересна, значит, зачем-то это надо. Например, для отображения правильной иконки в других местах - в списках, в запущенном, в шарах и так далее. Для приложения, на котором построен пример замены, вроде бы, иконка поменялась во всех местах, куда я заглянул.

raiffeisen-004.jpg


По аналогии с этим приложением можно поменять и другие. С какими-то, возможно, будут проблемы. Кроме того, я вообще не смотрел в сторону замены чего-то из системных иконок (ну, типа блютуса, wifi или nfc), которые используются в разных местах (например, в Share with...).

(!!!) Очень важно! В самих иконпаках полно ошибок и устаревших данных. Кроме того, в иконпаке может присутствовать нужная иконка, но прописана она будет для приложения другого региона (например, настоящая иконка банка Raiffeisen в этом паке, как оказалось, присутствует) или для другой версии (не-про, не-бета, не-альфа и так далее). Ну, а с прогами типа гугл-драйв, гугл-докс и т.п. придётся, видимо, обломаться: у всех будет одна и та же иконка.

В любом случае, проверять файл CSCAppResource.xml, сличая то, что там указано, с содержимым /data/data, а также внимательно просматривать набор представленных иконок очень даже желательно.


И, конечно, для каждого иконпака файл CSCAppResource.xml будет новый, и ID-шники приложений будут другие, и названия иконок будут другие - и так далее. Смена иконпака - все эти действия нужно будет выполнять заново.
а, может быть, осталось добрых ангелов мало,
вот и случилось так, что сердце моё стало
камнем, камнем...

x.y.z.
 
# 377
потом получи мемори лики и бэттэри капут.


 
# 7146
# Ленинград
По какой причине? Возможность таким образом выставлять иконки - системная. Визиконайзер, по сути, вообще не нужен, если не лень руками прописать конфиг для системы.
а, может быть, осталось добрых ангелов мало,
вот и случилось так, что сердце моё стало
камнем, камнем...


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron