Xakep

VIBE ROM - Русификация и модернизация

В этой теме 59 сообщений

viberom.jpg

 

VIBE ROM - Русификация и модернизация 

 
В общем в связи с тем что данная прошивка набирает популярность на многих аппаратах и многие ромоделы начали ей заниматься.
Решил открыть данную тему для обмена опытом и наработками по русификации и модернизации данной прошивки.
Вместо того что бы каждому ромоделу не приходилось изобретать велосипед по новой и тратить кучу времени на нахождения решения той или иной проблемы. Можно собрать все в единой теме, что думаю благотворно скажется на качестве прошивок и скорости их обновления.
 
Можно обмениваться информацией, идеями, файлами, lang-ами, и т.д. и т.п. ...
 
Для беспрепятственного обмена файлами, учитесь сразу отучать китайские прошивки от Lenovo сертификации и переподписывайте всю прошивку AOSP сертификатами, например с помощью ROM Resigner 
 
Ну и для начала выложу свои lang-и для jBART Vibe_RU_1405_Dev.7z
Чуть позже начну добавлять посты с решениями некоторых проблем.
 
 

Все посты типа "Сделайте пожалуйста фото звонилки на весь экран" пишем в тему: VIBE ROM - Вопросы, просьбы, обсуждения решений.
При нарушении требований пост будет удалятся, а автор поста будет отправлен в режим RO (только чтение) на неделю.
Отредактировал psihipofigist
добавил баннер
20 пользователям понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нравится мне тема мираж в вайб 2.0. Но жутко бесят иконки. Делать было нечего, стал вшивать свои из MIUIv6. Буду обновлять потихоньку. Может кто подхватит эстафету. 

 

post-43920-0-65274400-1426970192_thumb.j

 

Скачать архив, положить по пути темы и выставить права. - res.zip

Путь - system/etc/.LenovoTheme/themesuite/362/content/launcher/content

Отредактировал psihop
8 пользователям понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При очередной попытке портировать vibe 2.0 с аппарата без SD карты на аппарат с картой. Столкнулся с проблемой. В настройках памяти отсуствовал переключатель выбора памяти по умолчанию. Решение нашлось. Настройка просто закрыта разработчиками. 

 

Разбираем LenovoSettings.apk или просто Settings.apk и ищем необходимый смали -  MemoryExts.smali

Задаём поиск по слову - removepref и находим три строчки. Закрываем их решёткой или удаляем совсем. 

    #invoke-virtual {v9, v10}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z

Собираем и заменяем в телефоне. Если есть фаил LenovoSettings.odex. То его необходимо удалить. Оставив только LenovoSettings.apk

 

post-43920-0-06524900-1427139868_thumb.j
Отредактировал psihop
8 пользователям понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем доброго времени суток 

 

Вожусь с родным VIBE браузером ,  перевод и доводка до пользовательского состояния 

 

Есть маленькая не приятность все ни как не могу извабется от нее  если кто знает подсобите 

 

Браузер является системным так что после того как ставите   в папке дада/дата  надо стереть дату  в виде 

com.lenovo.browser 

 

как ставлю браузер с нуля  первый запуск  и тут же  появляется  одна вкладка само-создавающаяся ,  мало того что она не нужна так она еще и на китайщеине , не могу от нее избавится ни как  , все папки перерыл 

думаю либо в смайлах прячется зараза,  либо  в бекапе манифеста 

если кто знает как то плиз ковырните  ее от туда , надо что бы остались только 4 дефотлные  вкладки и те которые  юзер сам будет добавлять 

 

кроме  этого  еще  нужно отредактировать поисковик по умолчанию там китайские стоят  надо наши прописать яндекс ну и гугель 

 

Спасибо за участие 

LenovoBrowser.apk

3 пользователям понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

День недели и дата в шторке. Для VIBE 2.0. Возможно и для 2.5

Протестировано на Lenovo Vibe X2

 

Разбираем system/priv-app/NotificationCenter.apk

 

Редактировать будем все файлы отвечающие за статусную строку. Ибо в каждой прошивке и в зависимости от  количества симок. Файлы отличаются.

Файлы находятся по пути res/layout/

 

1. gemini_status_bar.xml

2. lenovo_com_status_bar.xml

3. lenovo_gemini_status_bar.xml

4. lenovo_status_bar.xml

5. status_bar.xml

 

Во всех файлах находим такой кусок кода. Данный кусок отвечает за отображение значков сети. Одной или двух симок.

                <include android:id="@id/signal_cluster" android:layout_width="wrap_content" android:layout_height="wrap_content" layout="@layout/lenovo_gemini_signal_cluster_view" />

Сразу после него, вставляем этот код. Он отвечает за дату и день недели. 

				        <LinearLayout android:gravity="center" android:layout_gravity="center|left" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginLeft="8.0dip" android:layout_marginRight="0.0dip" android:singleLine="false" android:layout_alignParentStart="true">            <RelativeLayout android:gravity="center|left" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginLeft="0.0dip" android:layout_marginRight="0.0dip" android:singleLine="false" android:layout_alignParentLeft="true">                <LinearLayout android:gravity="center|left" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginTop="-14.0dip" android:singleLine="false" android:layout_alignParentLeft="true">                    <TextClock android:textSize="12.0dip" android:textColor="#ffffffff" android:paddingLeft="0.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginTop="8.0dip" android:includeFontPadding="true" android:format24Hour="EEEE" />                </LinearLayout>                <LinearLayout android:gravity="center|left" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginTop="-3.0dip" android:singleLine="false" android:layout_alignParentLeft="true">                    <TextClock android:textSize="12.0dip" android:textColor="#ffffffff" android:paddingLeft="0.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginTop="8.0dip" android:includeFontPadding="true" android:format24Hour="d" />                    <TextClock android:textSize="12.0dip" android:textColor="#ffffffff" android:paddingLeft="2.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginTop="8.0dip" android:includeFontPadding="true" android:format24Hour="MMMM" />                </LinearLayout>            </RelativeLayout>        </LinearLayout>

Код оптимизирован для отображения на экране Lenovo Vibe X2. Прошивка S130 (4.4.2). Как будет на других разрешениях не ясно. Если что, пишем в личку. 

 

android:textSize="12.0dip" - размер шрифта

android:layout_marginLeft="8.0dip" - отступ (размер пробела) между антеннами и датой

 

Далее, собираем и меняем в телефоне. Не забываем выставить права. Делаем рестарт. 

 

post-43920-0-28446000-1437956480_thumb.jpost-43920-0-48341800-1437956481_thumb.j
Отредактировал psihop
4 пользователям понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Анимация любой PNG картинки в прошивке. На примере иконки настроек в шторке.

Для VIBE 2.0. Вероятно и для 2.5

 

Любую картинку в системе можно анимировать. Для этого необходимо выбрать нужную и вместо картинки вставить XML фаил с последовательностью картинок. Которые будут выполнятся с заданным интервалов времени. 

 

Рассмотрю самый простой пример. Иконка - настройки

post-43920-0-83907100-1438031358_thumb.j

 

Далее, разбираем статусную строку - system/priv-app/NotificationCenter.apk

 

С помощью программы total commander или любой другой. Находим и удаляем нужную картинку. Удалить нужно все картинки!

В нашем случае, картинка с иконкой обзывается - ic_notify_settings_normal.png

 

Если хоть одна останется, анимация скорее всего не сможет работать.

 

Удалили!

Далее, берём набор картинок, иконок. Что у вас там... В формате PNG.

post-43920-0-01882400-1438032814.png

И присваиваем им имена как вам удобно. Я использую цифры от 0-30 и тд

 

Создаём одноименный фаил ic_notify_settings_normal.xml

Пихаем его в папку - res/drawable/

И вписываем туда код с именами картинок без расширения PNG. В той последовательности. С которой они будут воспроизводится. 

 

Для редактирования XML файлов. Настоятельно рекомендую использовать программу - Notepad ++. Только она, корректно работает с UTF кодировкой. Стандартные блокноты сохраняют в другой.

 

 

В коде встречаются следующие параметры:

 

<animation-list android:oneshot="false" - воспроизводить по кругу

<animation-list android:oneshot="true" - остановится на последней картинке 

<item android:duration="100" - время воспроизведения в "мс"

 

Потом берём все свои картинки и распихиваем по папкам. Дабы не гадать, какой у вас DPI экрана. Пихаем сразу в три папки:

 

drawable-hdpi

drawable-xhdpi

drawable-xxhdpi

 

Всё это собираем и меняем в телефоне. 

 

Архив с моим конфигом и картинками. Можно просто заменить в вашем АПК файле

ic_settings_animation.zip

 

Результат моей работы на видео

<?xml version="1.0" encoding="utf-8"?><animation-list android:oneshot="false"  xmlns:android="http://schemas.android.com/apk/res/android">    <item android:duration="100" android:drawable="@drawable/ic_notify_settings_normal30" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal29" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal28" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal27" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal26" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal25" /><item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal24" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal23" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal22" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal21" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal20" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal19" /><item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal18" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal17" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal16" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal15" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal14" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal13" /><item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal12" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal11" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal10" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal9" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal8" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal7" /><item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal6" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal5" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal4" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal3" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal2" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal1" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal00" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal01" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal02" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal03" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal04" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal05" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal06" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal07" />   <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal00" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal01" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal02" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal03" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal04" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal05" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal06" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal07" />   <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal00" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal01" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal02" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal03" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal04" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal05" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal06" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal07" />   <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal00" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal01" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal02" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal03" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal04" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal05" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal06" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal07" />   <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal00" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal01" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal02" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal03" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal04" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal05" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal06" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal07" />   <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal00" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal01" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal02" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal03" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal04" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal05" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal06" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal07" />   <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal00" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal01" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal02" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal03" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal04" />    <item android:duration="50" android:drawable="@drawable/ic_notify_settings_normal05" />    <item android:duration="100" android:drawable="@drawable/ic_notify_settings_normal06" />    <item android:duration="1000" android:drawable="@drawable/ic_notify_settings_normal07" />    <item android:duration="100" android:drawable="@drawable/ic_notify_settings_normal001" /><item android:duration="100" android:drawable="@drawable/ic_notify_settings_normal002" /><item android:duration="100" android:drawable="@drawable/ic_notify_settings_normal003" /><item android:duration="100" android:drawable="@drawable/ic_notify_settings_normal004" />   <item android:duration="100" android:drawable="@drawable/ic_notify_settings_normal003" /><item android:duration="100" android:drawable="@drawable/ic_notify_settings_normal002" /><item android:duration="100" android:drawable="@drawable/ic_notify_settings_normal001" /><item android:duration="100" android:drawable="@drawable/ic_notify_settings_normal002" />   <item android:duration="100" android:drawable="@drawable/ic_notify_settings_normal003" /><item android:duration="100" android:drawable="@drawable/ic_notify_settings_normal004" /><item android:duration="100" android:drawable="@drawable/ic_notify_settings_normal003" /><item android:duration="100" android:drawable="@drawable/ic_notify_settings_normal002" />   <item android:duration="100" android:drawable="@drawable/ic_notify_settings_normal001" /><item android:duration="100" android:drawable="@drawable/ic_notify_settings_normal002" /><item android:duration="100" android:drawable="@drawable/ic_notify_settings_normal003" /><item android:duration="100" android:drawable="@drawable/ic_notify_settings_normal004" />   <item android:duration="100" android:drawable="@drawable/ic_notify_settings_normal003" /><item android:duration="100" android:drawable="@drawable/ic_notify_settings_normal002" /><item android:duration="1000" android:drawable="@drawable/ic_notify_settings_normal001" /></animation-list>

Отредактировал psihop
9 пользователям понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще один пример анимации. Мигание батарейки при заряде 15 и менее процентов. Для привлечения внимания. 

 

Значения при которых будет мигать. Можно сделать самому. Заменив нужную иконку по аналогии 

Мои файлы для замены - bat_15_blink.zip

 

Видео, как это смотрится. Инструкция как и выше. Только в этом примере. Я удалял две картинки и создавал два XML файла. Смотрите внутри архива!

Отредактировал psihop
9 пользователям понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уменьшение количества тайлов в шторке + Увеличение количества тайлов в один ряд.

Для VibeUI 2.5 и выше. Android 5.0

 

Необходимо вытащить и разобрать - system/preiv-app/NotificationCenter/NotificationCenter.apk

 

Весь список тайлов, который выводится в шторке. Лежит в smali. По пути:

NotificationCenter\smali\com\android\systemui\qs\tiles\

 

Ориентируясь на название тайла по смыслу. Находим нужный.

Например! Хотим убрать тайл - режим полёта.

Смотрим и видим. Тайл с таким именем - SwitchAirplaneModeTile.smali

 

Открываем его и находим значение -     iput-boolean v2, p1, Lcom/android/systemui/qs/QSTile$BooleanState;->visible:Z

Меняем значение на - visible:I

 

visible:Z - видимый

visible:I - скрытый

 

Аналогично и в других тайлах...

 

Далее! Меняем количество тайлов в одной строке. По умолчанию у нас стоит 5шт. Я хочу сделать 7шт

Редактируем - NotificationCenter\res\values\integers.xml

 

Находим строчку -     <integer name="quick_settings_num_columns">5</integer>

Заменяем значение -     <integer name="quick_settings_num_columns">7</integer>

 

post-43920-0-70077900-1440367484_thumb.jpost-43920-0-91021100-1440367485_thumb.j

 

ПС: Я еще укорачивал текст под тайлами. Но это на любителя и не обязательно... 

8 пользователям понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Инструкция по включению UMS (USB Mass Storage)

 
Подопытный Lenovo K3 Note Vibe2.5/android 5.0
BatchApkTool332
\Settings\smali\com\android\settings\deviceinfo\UsbSettings.smali
находим примерно такие строки

.line 630    .local v3, "config":Ljava/lang/String;    const-string v7, "mtp,mass_storage"    invoke-virtual {v3, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z    move-result v7    if-eqz v7, :cond_3    invoke-static {}, Lcom/lenovo/settings/storage/StorageUtils;->isSomeStorageEmulated()Z    move-result v7    if-eqz v7, :cond_4    invoke-direct {p0}, Lcom/android/settings/deviceinfo/UsbSettings;->hasExternalStorage()Z    move-result v7    if-nez v7, :cond_4    .line 636    :cond_3    iget-object v7, p0, Lcom/android/settings/deviceinfo/UsbSettings;->mUms:Lcom/android/settings/deviceinfo/CheckButtonPreferenceEx;    invoke-virtual {v7, v9}, Lcom/android/settings/deviceinfo/CheckButtonPreferenceEx;->setEnabled(Z)V    .line 637    iget-object v7, p0, Lcom/android/settings/deviceinfo/UsbSettings;->mUms:Lcom/android/settings/deviceinfo/CheckButtonPreferenceEx;    invoke-virtual {v7, v13}, Lcom/android/settings/deviceinfo/CheckButtonPreferenceEx;->setSummary(I)V    .line 644    :cond_4    iget-object v7, p0, Lcom/android/settings/deviceinfo/UsbSettings;->mUms:Lcom/android/settings/deviceinfo/CheckButtonPreferenceEx;    if-eqz v7, :cond_5    .line 649    iget-object v7, p0, Lcom/android/settings/deviceinfo/UsbSettings;->mDefaultWriteCategory:Landroid/preference/PreferenceCategory;    iget-object v8, p0, Lcom/android/settings/deviceinfo/UsbSettings;->mUms:Lcom/android/settings/deviceinfo/CheckButtonPreferenceEx;    invoke-virtual {v7, v8}, Landroid/preference/PreferenceCategory;->removePreference(Landroid/preference/Preference;)Z
и удаляем последнюю строку или комментируем его


#invoke-virtual {v7, v8}, Landroid/preference/PreferenceCategory;->removePreference(Landroid/preference/Preference;)Z
Собираем и закидываем.

 
P.S. на всякий проверяем строку в build.prop чтобы было так

ro.sys.usb.storage.type=adb,mtp,mass_storage
или так


ro.sys.usb.storage.type=mtp,mass_storage
Порядок должен соответствовать

 
2015-09-14_225719.png?0023a1432597228555%C1%E5%E7%FB%EC%FF%ED%ED%FB%E9.png?0023a
Отредактировал daradan
4 пользователям понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может кто подхватит эстафету.

 

для drawable-xxhdpi

некоторые изменил на другие иконки

добавил иконки для:

  • com_adobe_flashplayer
  • com_adobe_reader
  • com_alensw_PicFolder
  • com_instagram_android
  • com_opera_browser
  • com_whatsapp
  • org_adaway
  • pro_burgerz_weather
и поменял фон на HL2
3 пользователям понравился пост

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу