Xakep

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

59 posts in this topic

viberom.jpg

 

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

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

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

Share this post


Link to post
Share on other sites

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

 

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

16 people like this

Share this post


Link to post
Share on other sites

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

ro.lenovo.region=rowro.lenovo.device=phonero.lenovo.operator=open
10 people like this

Share this post


Link to post
Share on other sites

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

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

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

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

13 people like this

Share this post


Link to post
Share on other sites

Все что описано ниже выполняется в разобранном файле с помощью 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 people like this

Share this post


Link to post
Share on other sites

Добавляем пункт 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 people like this

Share this post


Link to post
Share on other sites
Добавляем сортировку по Фамилии или Имени в контакты.

 

Разбираем 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 people like this

Share this post


Link to post
Share on other sites

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

Добавление батарейки на 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 people like this

Share this post


Link to post
Share on other sites

На 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 people like this

Share this post


Link to post
Share on other sites

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

 

Разбираем 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 people like this

Share this post


Link to post
Share on other sites

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

 

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

 

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

 

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

1 person likes this

Share this post


Link to post
Share on other sites

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

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 people like this

Share this post


Link to post
Share on other sites

Меня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 people like this

Share this post


Link to post
Share on other sites

Что бы 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 people like this

Share this post


Link to post
Share on other sites

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

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

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

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

 

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

 

 

 

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

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

1 person likes this

Share this post


Link to post
Share on other sites

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

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

1 person likes this

Share this post


Link to post
Share on other sites

На последней девелоперской сборке 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 people like this

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

Скриптик:

cd /system/fontsrm FangZhengLTH.ttfln -s DroidSansFallback.ttf FangZhengLTH.ttf
9 people like this

Share this post


Link to post
Share on other sites

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

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

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

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

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

post-23-0-33231100-1391859728.jpg
1 person likes this

Share this post


Link to post
Share on other sites

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

7 people like this

Share this post


Link to post
Share on other sites

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

 

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

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

3 people like this

Share this post


Link to post
Share on other sites

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

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

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

3 people like this

Share this post


Link to post
Share on other sites

Заметил интересную фичу в 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

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

Edited by psihipofigist
2 people like this

Share this post


Link to post
Share on other sites

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

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

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

Берите

jBART-1.5.2.7z

Edited by psihipofigist
добавил ссылку
1 person likes this

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.