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 пользователям понравился пост

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


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

Ну. Поехали потихоньку...

 

Что бы отучить LenovoSafeCenter самовосстанавливатся после удаления, нужно удалить файл system/bin/nac_server

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

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


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

Что бы LenovoWeatherApp начал искать русские города, нужно в build.prop добавить строки

ro.lenovo.region=rowro.lenovo.device=phonero.lenovo.operator=open
10 пользователям понравился пост

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


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

Что бы научить Центр Тем искать темы в сети, нужно:

Разобрать  LenovoThemeCenter с помощью ApkTool

Найти файл AdapterUtils.smali

Заменить в файле все "row" на "xakep" ... ;)

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

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


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

Все что описано ниже выполняется в разобранном файле с помощью ApkTool NotificationCenter.apk

Чтобы добавить кнопку блокировки и выключения в статус бар нужно в файле  lenovo_gemini_status_bar.xml который находится по пути \NotificationCenter\res\layout вставить вот эту строку:

            <com.android.systemui.statusbar.policy.KeyButtonView android:id="@id/back" android:paddingLeft="4.0dip" android:paddingRight="0.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/ic_sysbar_lock" android:layout_toRightOf="@id/recent_apps" android:contentDescription="@string/accessibility_back" systemui:keyCode="26" systemui:glowBackground="@drawable/ic_sysbar_highlight" />

к примеру после этой:

            <com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:gravity="left|center" android:id="@id/clock" android:tag="@string/lenovo_clock_type_show_am_pm" android:paddingLeft="6.0dip" android:paddingRight="2.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" />

И закинуть картинку с именем ic_sysbar_lock.png по пути \NotificationCenter\res\drawable-hdpi. Вот картинка для примера post-19-0-22582000-1391767793.png. Размер картинки изменяете на свой, как вам больше нравится но желательно не больше ширины вашего статус бара. Я сделал себе к примеру 38х38.

 

 

post-19-0-01471700-1391768047_thumb.jpeg

 

Собрать файл и прошить\заменить.

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

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


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

Добавляем пункт USB tethering в выпадающее окошко при подключении USB кабеля.

 

Разбираем Settings.apk с помощью ApkTool

Находим файл UsbSettings.smali

Находим метод .method private createPreferenceHierarchy()Landroid/preference/PreferenceScreen

Находим в методе текст

    check-cast v7, Landroid/preference/CheckBoxPreference;    iput-object v7, p0, Lcom/android/settings/deviceinfo/UsbSettings;->mUsbTether:Landroid/preference/CheckBoxPreference;    .line 340    invoke-virtual {p0}, Landroid/preference/PreferenceFragment;->getPreferenceScreen()Landroid/preference/PreferenceScreen;    move-result-object v7    invoke-virtual {v7, v6}, Landroid/preference/PreferenceGroup;->removePreference(Landroid/preference/Preference;)Z    .line 342    const-string v7, "usb_select"

И комментируем 4 строки.

    check-cast v7, Landroid/preference/CheckBoxPreference;    iput-object v7, p0, Lcom/android/settings/deviceinfo/UsbSettings;->mUsbTether:Landroid/preference/CheckBoxPreference;    .line 340    # invoke-virtual {p0}, Landroid/preference/PreferenceFragment;->getPreferenceScreen()Landroid/preference/PreferenceScreen;    # move-result-object v7    # invoke-virtual {v7, v6}, Landroid/preference/PreferenceGroup;->removePreference(Landroid/preference/Preference;)Z    # .line 342    const-string v7, "usb_select"

Закомментированные строки в зависимости от версии прошивки могут немного отличатся.

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

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


Ссылка на сообщение
Поделиться на другие сайты
Добавляем сортировку по Фамилии или Имени в контакты.

 

Разбираем lenovoadapter.jar с помощью ApkTool

Находим файл LenovoAdapter.smali

Находим метод .method public static getOperator()Lcom/LenovoFramework/adapter/LenovoAdapter$Operaters;

Находим в методе текст

     sget-object v0, Lcom/LenovoFramework/adapter/LenovoAdapter$Operaters;->OPEN:Lcom/LenovoFramework/adapter/LenovoAdapter$Operaters;

И правим на

    sget-object v0, Lcom/LenovoFramework/adapter/LenovoAdapter$Operaters;->OVERSEA:Lcom/LenovoFramework/adapter/LenovoAdapter$Operaters;
7 пользователям понравился пост

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


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

Везде по разному.

Добавление батарейки на K900:

1. Добавляем картинку батарейки: \Settings\res\drawable-xxhdpi\ic_settings_battery.png

3430299.png

2. Добавляем в \Settings\res\xml\settings_headers.xml после

<header android:icon="@drawable/ic_settings_storage" android:id="@id/storage_settings" android:title="@string/storage_settings" android:fragment="com.android.settings.deviceinfo.Memory" />

строку

<header android:icon="@drawable/ic_settings_battery" android:id="@id/battery_settings" android:title="@string/power_usage_summary_title" android:fragment="com.android.settings.fuelgauge.PowerUsageSummary" />

3. В \Settings\res\values\ids.xml добавляем в самый конец.

<item type="id" name="battery_settings">false</item>

4. В \Settings\res\values\public.xml"0x7f080239" либо посчитать, либо можно не считать и 4-й пункт опустить. Он и сам сгенерируется.

<public type="id" name="battery_settings" id="0x7f080239" />
4 пользователям понравился пост

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


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

На A830 открыть батарейку проще.

Ищем в \Settings\res\values\public.xml id: battery_settings

Находим

<public type="id" name="battery_settings" id="0x7f080280" />

Ищем строку 7f080280 в

\Settings\smali\com\android\settings\AllSettings.smali

Было:

.line 472    
.end local v4           
#netManager:Landroid/os/INetworkManagementService;    
:cond_81    const v5, 0x7f080280    
if-ne v3, v5, 
:cond_8a    
.line 473    
invoke-interface {v9, v0}, Ljava/util/List;->remove(Ljava/lang/Object;)Z    
goto :goto_22

Комментируем строку со словом "remove":

.line 472    
.end local v4           
#netManager:Landroid/os/INetworkManagementService;    
:cond_81    
const v5, 0x7f080280    
if-ne v3, v5, 
:cond_8a    
.line 473   
# invoke-interface {v9, v0}, Ljava/util/List;->remove(Ljava/lang/Object;)Z    
goto :goto_22
6 пользователям понравился пост

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


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

Ну и еще один способ "Батареи".

 

Разбираем Settings.apk с помощью ApkTool

Находим settings_headers.xml

Находим в нем текст

<header android:id="@id/display_settings" android:title="@string/display_settings" android:fragment="com.android.settings.DisplaySettings" />    <header android:id="@id/storage_settings" android:title="@string/storage_settings" android:fragment="com.android.settings.deviceinfo.Memory" />

И добавляем одну строку, в результате должно получиться вот так.

<header android:id="@id/display_settings" android:title="@string/display_settings" android:fragment="com.android.settings.DisplaySettings" />    <header android:layout="@layout/power_usage_details" android:title="@string/battery_info_punkt" android:fragment="com.android.settings.fuelgauge.PowerUsageSummary" />    <header android:id="@id/storage_settings" android:title="@string/storage_settings" android:fragment="com.android.settings.deviceinfo.Memory" />

Потом открываем res\values\strings.xml и добавляем строку

<string name="battery_info_punkt">Battery</string>

Потом открываем res\values-ru\strings.xml и добавляем строку

<string name="battery_info_punkt">Батарея</string>

 

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

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


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

\Settings\smali\com\android\settings\AllSettings.smali

 

Сейчас все сделал, все получилось. Только у меня путь такой  \Settings\smali\com\android\settings\tabsettings\AllSettings.smali

 

post-19-0-22253500-1391775799_thumb.jpeg

 

П.С. Может кому пригодиться чтобы не искать.

1 пользователю понравился пост

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


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

Раз пошла такая пьянка, то и я чуть добавлю из сегодняшнего:

Settings\smali\com\android\settings\ApplicationSettings.smali

Метод .method public onCreate(Landroid/os/Bundle;)V , комментируем удаление через все тот же removePreference

Интересный вид приобретают настройки:

52f4d126923f9_A1.png   52f4d131a1601_A2.png   52f4d13a1cc91_A3.png   52f4d1450c152_A4.png   52f4d1510c5d1_A5.png

 

В Vibe на 930-м то же самое. Там же чуть ниже выбор места установки, но почему-то не запоминает выбранное значение - вероятно, не используют и всегда идет по выбору системы?

    .line 51    const-string v1, "toggle_advanced_settings"    invoke-virtual {v3, v1}, Lcom/android/settings/ApplicationSettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;    move-result-object v1    check-cast v1, Landroid/preference/CheckBoxPreference;    iput-object v1, v3, Lcom/android/settings/ApplicationSettings;->mToggleAdvancedSettings:Landroid/preference/CheckBoxPreference;    .line 53    iget-object v1, v3, Lcom/android/settings/ApplicationSettings;->mToggleAdvancedSettings:Landroid/preference/CheckBoxPreference;    invoke-direct {v3}, Lcom/android/settings/ApplicationSettings;->isAdvancedSettingsEnabled()Z    move-result v2    invoke-virtual {v1, v2}, Landroid/preference/CheckBoxPreference;->setChecked(Z)V    .line 54    invoke-virtual {v3}, Lcom/android/settings/ApplicationSettings;->getPreferenceScreen()Landroid/preference/PreferenceScreen;    move-result-object v1    iget-object v2, v3, Lcom/android/settings/ApplicationSettings;->mToggleAdvancedSettings:Landroid/preference/CheckBoxPreference;#####    invoke-virtual {v1, v2}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z 
6 пользователям понравился пост

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


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

Меняtм китайский LenovoSafeCenter на русифицированый SECUREit 

 

Удаляем из system/app файлы LenovoSafeBox.apk LenovoSafeCenter.apk

Разбираем services.jar с помощью ApkTool

Находим ServerThread.smali

В нем находим строку

invoke-virtual {v7}, Lcom/android/server/am/ActivityManagerService;->checkSystemSafeApp()V

И комментируем ее

# invoke-virtual {v7}, Lcom/android/server/am/ActivityManagerService;->checkSystemSafeApp()V

Качаем zip.gif  SECUREit_4.2.6&AV_for_recovery.zip   6,13МБ

И раскладываем все по папкам прошивки.

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

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


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

Что бы LenovoWeatherApp начал искать русские города, нужно в build.prop добавить строки

Ещё один способ. Проверен на K900 и K910SS (спасибо за проверку djking)

Ищем в build.prop строчку ro.build.display.id=

И в конце дописываем _ROW.

К примеру было: 

JDQ39.VIBEROM_V1.0_1351_4_ST_K900
Стало:

JDQ39.VIBEROM_V1.0_1351_4_ST_K900_ROW
Ну и для ленивых sed-ничек:

sed -i "/^ro.build.display.id/{s/_ROW//;s/$/_ROW/}" /system/build.prop
10 пользователям понравился пост

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


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

А попробуй заменить на мой. LenovoThemeCenter.7z

Ток не забудь lib-ы из АРК кинуть в папку lib

И переподписать АРК своим сертификатом (а то у меня пока что все под Testkey подписано).

Ну и возможно придется удалить папку data\data\com.lenovo.themecenter\ что бы она по новой пересоздалась.

 

И SafeCenter можешь попытаться поменять на тот что в GooglePlay.

 

 

 

Или я чего-то не понял?

В Vibe в Настройках не показываются значки на пунктах... 

1 пользователю понравился пост

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


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

Там в DeveloperSettings.jar надо закомментировать все вызовы removepreference.

А по сервисному коду выводится то же самое ограниченное меню разработчика

1 пользователю понравился пост

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


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

На последней девелоперской сборке VIBEROM_V1.0_1405_2_DEV_P780_NK_CAA4 столкнулся с тем что framework-res.apk и lenovo-res.apk после перепаковки оказываются не рабочими. 
Объяснять долго, но, симптомы точно такие же с какими мы сталкивались на Lewa с lewa-res.apk...
 
В общем как и в прошлый раз, собрал утилиту для перевода framework-res.apk и lenovo-res.apk в один дубль клик. 
 
Скачать: Localization_lenovo_framework_res_apk.exe
 
Принцип действия прост:
Рядом с Localization_lenovo_framework_res_apk.exe положите оба файла framework-res.apk и lenovo-res.apk.
Запустите Localization_lenovo_framework_res_apk.exe и дождитесь окончания работы.
Оба файла framework-res.apk и lenovo-res.apk которые вы положили рядом с Localization_lenovo_framework_res_apk.exe будут уже переведенные.

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

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


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

Разряжённый шрифт в интерфейсе. Как-то исправляется?

 http://lenovo-forums.ru/topic/4469-x-vibe-rom-for-lenovo-p780-by-xakep/page-7#entry116011

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


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

Да всё просто.

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

Заходим в папку /system/fonts

Ищем там шрифт со странным названием и большого размер ~9MB. Вот это он зловред.

Удаляем его, делаем симлинк на DroidSansFallback.ttf.

Скриптик:

cd /system/fontsrm FangZhengLTH.ttfln -s DroidSansFallback.ttf FangZhengLTH.ttf
9 пользователям понравился пост

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


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

там ещё в адресной строке стандартного браузера поиск baidu.

А ты что стандартный браузер оставляешь в прошивке?  :blink:

Я его сразу выкидываю еще на стадии русификации, а за место его ложу UCBrowser из маркета последний. Ток ложу в Vendor...app.

Потом в etc закидываю lenovo_profile.7z (честно спер из прошивки Javum и немного модифицировал).

И при первом запуске системы имею вот такой вид:

post-23-0-33231100-1391859728.jpg
1 пользователю понравился пост

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


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

А что его спирать? Настраиваешь у себя, как хочешь, делаешь бэкап и в папке .ideaDesktop забираешь файл с цифровым именем и расширением lbk
Переименовать и засунуть в прошивку как /system/etc/lenovo_profile.lbk

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

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


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

Мне обычно хватает четырех вариантов при портировании

 

  • замена всего init.rc
  • редактирование init.rc (бутлкасспатч)
  • перенос всей папки ram
  • перенос kernel от оригинала в порт

Не было еще случая, что-бы хоть один вариант да не сработал...

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

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


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

Я позавчера ISO-шник с драйверами удалил из прошивки (по привычке). А вчера весь день вылавливал багу - При вкл\выкл USB-Tethering аппарат напрочь забывал что он подключен к USB и не воспринимал его до перезагрузки, и при этом программы начинали впадать в глубокую кому...

Оригинальный образ ПО Lenovo под серию VIBE S650/S930/S960 iAmCdRom.iso

И минимальная версия (только драйвера) для тех кто не хочет перегружать прошивку iAmCdRom.7z

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

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


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

Заметил интересную фичу в Vibe. Если на экране блокировки удерживать кнопку меню, включается фонарик :rolleyes:

И да, кстати, чтобы в приложении LenovoThemeCenter.apk, шла онлайн подкачка тем и прочего, я просто оставил в build.prop строку ro.lenovo.region=prc без изменений. Как только правится на ro.lenovo.region=row, вся кухня прикрывается.

Это на китайских Vibe фонарик на кнопке? На 930-м ROW не работает А если просто взять LenovoWeather из русской ROW?

да, я юзаю Lenovo S898T и к примеру при нажатии на кнопку громкости, просыпается экран блокировки, и жму среднюю клавишу (может я не правильно выразился) запускается приложение фонарик и светит, отпустил - всё потухло. По погоде, всё стоит китайчатское, просто правил build.prop и всё. Там только строку ro.build.display.id и зменить на row (дописать)

psihop

А на русском языке пробовали город писать? Я в начале тож писал на инглише и ничего, а по-русски заработало.

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

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


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

Я и пользуюсь AFT, как и linerty. Мы подправили батники версии 2.3 для работы с apktool 2.*, и теперь нормально собирает и разбирает последние фреймворки

Где я ошибся или куда пихать бекап?

Переименуй бэкап в lenovo_profile.lbk и размести в /system/etc

Берите

jBART-1.5.2.7z

Отредактировал psihipofigist
добавил ссылку
1 пользователю понравился пост

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


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

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

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

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

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


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

Войти

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


Войти

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

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