Показать сообщение отдельно
Старый 25.06.2014, 17:22   #8818
scalbert
Долгожитель
 
Аватар для scalbert
Доп. информация
По умолчанию

Перенос пользовательских программ в системные

Для чего это делается.
Как известно, ГУ S150, изначально, было основано на системе Андроид v. 2.3.4
Но, при использовании данной версии имеется один очень большой косяк.
Это СЛËТ УСТАНОВЛЕННЫХ ПОЛЬЗОВАТЕЛЬСКИХ ПРОГРАММ.
Я считаю, что это самый главный и неоправданный пробел разработчиков программного обеспечения.
Ну да ладно, пока разработкой устройств будут заниматься маркетологи и торгаши, а не инженеры, этого не избежать.
Данный неприятный факт, происходит из-за некорректного включения\выключения питания в автомобиле. Как вы знаете, разработчики пошли (непонятно почему) по пути полной загрузки/выгрузки системы, с заботой о сохранности заряда аккумуляторной батареи автомобиля.
Хотя, если бы сделали переход в режим СНА (как работают все устройства на андроиде) то и проблем было бы меньше, да и скорость включения/выключения была бы секунды.
Но, имеем то, что имеем.
В процессе анализа слëта программ, выяснилось, что крашатся не сами программы, а их данные.
В случае возникновения нештатной ситуации при выключении ГУ, при запуске происходит сброс данных всех приложений, в том числе и системных. Причем если на штатных системных программах этого мы не замечаем, так как никаких пользовательских настроек в них нет, то при сбросе установленных сторонних программ это приводит к полной неработоспособности этих программ.

Почему перестают работать именно установленные программы, разберемся....
Что происходит, рассмотрим структуру расположения файлов установленных программ.
Из чего состоят программы на андроиде...
1. Сама программа, (*.apk)
2. Библиотеки ( *.so)
3. Другие файлы (настройки и т.д)
Так вот, при установке стороннего приложения, основной .apk файл устанавливается в корневую папку /data/app, а остальные сопровождающие файлы в папку /data/data.
В папку /data/data/имя/lib устанавливаются рабочие библиотеки, относящиеся к конкретным программам.
При некорректном отключении питания на ГУ происходит несанкционируемый "РЕСЕТ".
При сбросе происходит очистка всех данных в папке /data/data, в том числе и уничтожение ФАЙЛОВ БИБЛИОТЕК всех установленных программ. Вот в этом и кроется причина неработоспособности программ
Компоненты же системных программ расположены в другом месте, а именно файл. apk находится в папке /system/app, библиотеки в папке /system/lib, а вот остальные компоненты располагаются в злосчастной папке data/data.
Исходя из вышеописанного и пришлось немного повозиться, чтобы минимизировать проблему слета прграмм. Так как количество программ, необходимых для использования в автомобиле небольшое, то и было принято решение сделать все программы системными.

Как сделать стороннее приложение системным?

Что для этого нужно.
1.Необходим root доступ.
2.Специальная программа TitaniumBackup (как оказалось он немного некорректно обрабатывает перенос библиотек программ на нашем ГУ, вернее не в то место, поэтому используем ручной перенос)
3. Менеджер файлов, работающий с корневой системой, я пользуюсь TotalCommander (именно им и делается вся процедура переноса)
4. Небольшие знания и навык

Итак приступим.
1. Простым перемещением в менеджере файлов переносим файл. apk рограммы из папки /data/app в папку /system/app
2. С помощью того же менеджера устанавливаем права доступа на этот файл, а именно 644
3. Смотрим папку /data/data/имя программы/lib и если в этой папке присутствуют файлы библиотек *.so,
то переносим все эти файлы в папку /system/lib, не забыв при этом установить права доступа на каждый файл 644.
4.Делаем аналогичные процедуры со всеми установленными программами.
5.Перегружаем устройство.
6.Запускаем Titanium, и с его помощью одексируем все приложения.
Используем команду в пункте ХРАНИЛИЩЕ-Интеграция sysDalvik в ROM.
Этим мы одексируем программы.
Для чего это нужно, в папке /system/app рядом с основным файлом имя.apk появляется файл имя.odex.
Это файл, который является кодом исходной программы, но адаптированный к командам процессора данного устройства.
7. С помощью того же Titaniuma выполяем команду ХРАНИЛИЩЕ-очистка Dalvik-кеш, тем самым мы очищаем внутренню память.

Мы все помним, как быстро загружается система после прошивки, когда не установлены дополнительные программы и как увеличивается время загрузки потом. Так вот, после выполнения пунктов 7 и 8 мы опять возвращаемся к заявленной производителем скорости загрузки ~20 секунд.

После всех манипуляций, делаем с помощью Titanium бекап ДАННЫХ всех установленных системных программ, сами программы бекапить не нужно.
И при крахе системы теперь все программы остаются работоспособными, только с девственно чистыми настройками.
Вот их и восстанавливаем с помощью Titanium, опять же секунд за 20.

Мои установленные проги:
1.PowerAMP Pro (аудио проигрыватель)
2.MX Player Pro (видео проигрыватель)
3.Viper4 (эквалайзер)
4.Opera (Yandex) (браузер)
5.TotalComander (роот файлменеджер)
6.MapCam (спидкам, предупреждения)
7.GeoNet (навигация)
8.YandexNavi (навигация)
9.Torque (ELM WIFI) (OBD сканер)
10.Sdmaid (очистка системы)
11.PixelPhone (звонилка)
12.Titanium Pro (инструментище)
13.SmartKeyboard Pro (клавиатура)
14.Navitel 8.7.150
Почти весь ненужный хлам из системы удален.

Написал много, но думаю это отведет множество бесконечных вопросов.
Изменения и дополнения приветствуются, добавлю и исправлю.

Комментарий модератора
Nikitoz78:
Информация добавлена в шапку темы.
__________________
KIA Ceed JD, что-то типа CarPad 3, прошивка 4.xз-v.2.8.9, mcu 4.3.11
scalbert вне форума  
37 пользователя(ей) сказали cпасибо:
 
Время генерации страницы 0.10614 секунды с 10 запросами