Подготовка.
Для начала нужно скачать инструменты для разбора\сбора прог из самого известного поста
sk0t (естественно тот пост надо выучить на изусть)
Качаем апктул143
ОЙ!Далее в папку с инструментами кидаем фрамворк-рес.апк твфрамворк-рес.апк и наш тачвиз. Перетягиваем мышкой на apktool-if.cmd наши фрамворки после этого разбираем тачвиз перетягивая его мышкой на apktool-d.cmd (дестрой).
Потом читаем и принимаем к сведению инструкции по редактированию Тачвиза сдесь в шапке и здесь
ОЙ!Они нам не подходят, но дают представление о том что Тач он всегда Тач и редактируется всегда примерно одинаково (впрочем как и остальные лаунчеры :D )
Ну будем щитать КМБ пройденым!
Итак в нашем таче нас будут интересовать следущие папки (в разобраный тач заходим и в рес):
valuesЭто папка с общими настройками для всех разрешений и локализаций.
bools.xmlне проверял, но выглядит как фиксация обоев, заменить на true
<bool name="config_fixedWallpaperOffset">false</bool>
убираем надписи о том что перетащить на экран надо что нибудь
<bool name="opt_showHelpTextOnEmptyHomePage">false</bool>
<bool name="opt_showToastWhenNewMenuPageCreated">false</bool>
integers.xmlориентация картинки
<integer name="config_screenOrientation">5</integer>
колво предустановленных экранов
<integer name="config_workspaceDefaultScreenCount">3</integer>
<integer name="config_workspaceDefaultScreenCount_simple">3</integer>
максимальное кол-во экранов
<integer name="config_workspaceMaxScreenCount">9</integer>
домашний экран (отсчет с 0)
<integer name="config_workspaceDefaultHomeScreenIndex">1</integer>
<integer name="config_workspaceDefaultHomeScreenIndex_simple">1</integer>
values-ru-land и
values-ru папки
стринг.хмл - переводим на великий и могучий, если тут нет строк как в основной папке валуес, то копируем их сюда и переводим
Ну и теперь папки с нашим разрешением values-sw399dp и
values-sw399dp-land(ландшафтный режим)
integers.xmlВот поля для сетки на главном экране (если менять то придется править стиль.хмл и dimens.xml в этой же папке)
<integer name="home_cellCountX">5</integer>
<integer name="home_cellCountY">5</integer>
максимальное кол-во раб столов
<integer name="home_pageIndicatorMaxVisible">9</integer>
время анимации при входе в меню прог (надо будет уточнить)
<integer name="page_snap_animation_duration">550</integer>
панель быстрого запуска
<integer name="hotseat_cellCountX">5</integer>
<integer name="hotseat_cellCountY">1</integer>
Поля сетки в меню приложений, важно чтоб общее кол-во ячеек совпадало с ландш. режимом (если его активировали) например 5х6 в простом и 6х5 в ландшафтном = 30 ячеек (если менять то придется править стиль.хмл и dimens.xml в этой же папке)
<integer name="menuAppsGrid_cellCountX">5</integer>
<integer name="menuAppsGrid_cellCountY">6</integer>
Максимальное колво индикаторов экранов
<integer name="menu_pageIndicatorMaxVisible">15</integer>
Кол-во виджетов в меню на странице
<integer name="menuWidgets_cellCountX">2</integer>
<integer name="menuWidgets_cellCountY">3</integer>
А это ряды-ячейки в созданной папке
<integer name="max_folder_visible_rows">4</integer>
<integer name="max_folder_visible_cols">4</integer>
styles.xmlИконки панели быстрого запуска
<style name="HotseatIcon" parent="@style/BaseHotseatIcon">
Иконки меню прог ( правится аналогично с хот, разберу этот - первый по аналогии)
<style name="MenuIcon" parent="@style/BaseMenuIcon">
Размер текста под иконкой, чтоб совсем текст убрать 0 поставить надо. С помощью изменения размера текста можно править размер ячеек (если иконка не влазит)
<item name="android:textSize">11.0dip</item>
Вариант окончания длинного названия ... (есть варианты эклипс и маргинтамчегото)
<item name="android:ellipsize">end</item>
смещение как ни странно в право
<item name="android:paddingLeft">3.0dip</item>
смещение в лево (на самом деле это с права прозрачных пикселей добавить)
<item name="android:paddingRight">3.0dip</item>
Текст в одну строку, если не помещается - текст обрывается
<item name="android:singleLine">true</item>
dimens.xmlВот десь и регулируем размер ячеек сетки, чтоб виджеты не обрезались.
для главного экрана
<dimen name="home_cellWidth_land">100.0dip</dimen>
<dimen name="home_cellHeight_land">72.0dip</dimen>
для меню прог
<dimen name="menuAppsGrid_cellWidth">78.0dip</dimen>
<dimen name="menuAppsGrid_cellHeight">85.0dip</dimen>
меню виджетов (собственно и незачем)
<dimen name="menuWidgets_previewWidth">150.0dip</dimen>
<dimen name="menuWidgets_previewHeight">118.0dip</dimen>
Ну много чего ещё интересного в этом файле - но написано просто, немного подумав любой разберётся.
xml папка
В ней нас интересует файл
default_workspace.xml в нем прописаны предустановленные на экране виджеты, ярлыки прог и проги в панели быстрого запуска.
Название прог если свои вписать охота (сом.тамчегото.ёлы.палы) проще всего смотреть в андроид манифесте в первой строке ткнув рутэксплорером в прогу и потом в андроид манифест.
Так, ну вот, если вам более ничего от лаунчера не нужно, то собираем его перетягивая папку с разобранным лаунчером на apktool-b.cmd
После компиляции открываем дистрибутив лаунчера раром и из папки лаунчер\build\apk переносим с подменой файлы:
classes.dex - если смали правили - степень сжатия обычная
resources.arsc - без сжатия
правленные хмл из папки рес - степень сжатия обычная
графику если меняли - без сжатия.
Ну всё, готово, можно пробовать менять свой на этот мод. Устанавливать любым способом (апдейтом или подменой) тк мы его не подписывали - не меняли сертификат подписи.
Теперь вариант с включением ландшафтного режима (на самом деле методик две или три, я одну расскажу которой пользуюсь)
Для включения ландшафта нужно править андроид манифест (со всеми вытикающими последствиями)
находим (примерно в середине) такое:
android:screenOrientation=" " и меняем значение в кавычках на android:screenOrientation=
"user" усе, ландшафт есть. Но поправив андроид манифест мы будем вынуждены прогу переподписать. Всебы ничего да Тач системная прога...
Отступление про системные проги. Как определить системная прога или нет? Очень просто, в андроид манифесте системных прог в самом начале есть параметр
android:sharedUserId="андроид. ..." Причем системных прог несколько видов:
android:sharedUserId="android.uid.system"
android:sharedUserId="android.uid.phone"
android:sharedUserId="android.uid.share"
android:sharedUserId="android.media"
И подписаны они при сборке производителем разными ключами тесткей, шарекей, медиакей и тд. Эти ключи образуются при компиляции проши из исходников (как говорят, я сам не делал) и соответственно родные ключи взять негде.
Ключи можно сделать самому с помощью входящего в состав JDK keytool и переподписать jarsigner ом - методика на форуме есть. Но гемор это страшный. И все равно прога системной уже не будет. Есть вариант проще.
вобщим мы меняем android:sharedUserId="..." на свой, например android:sharedUserId="4pda" и подписываем прогу перетаскивая ее на Sign.cmd
Все прога не системная, как правило такие проги можно потом и в дата и на флеху устанавливать и на другие телефоны (я тач жене на ЛГ делал)
После этого нужно выявить виджеты тача и переподписать их точно также, чтоб ИД совпадал и сертификат подписи (поэтому я в начале поста и сказал инструменты из одного поста брать - чтоб сертификат у всех один был, а ИД можно договориться и 4pda всем ставить).
Ну вот, в результате переподписывания мы получили отвязанный от системности Тач и его виджеты. Теперь их надо правильно в тел поставить.
Для этого удаляем родные и перезагружаемся - этим очищаем систему от старого ИД. Потом устанавливаем свои любым доступным способом.
кажись усе