Модификация ROM в целом делится на три категории: упрощение, дополнение и улучшение внешнего вида. Здесь в основном обсуждаются два аспекта: упрощение и дополнение, что касается улучшения внешнего вида, каждый может ознакомиться с другими постами.
1. Сначала посмотрим, что именно содержится в ROM:
Открыв прошивочный пакет с помощью WinRAR, вы увидите несколько директорий. Ниже приведены несколько директорий, которые нас интересуют, с пояснениями:
dev_data/apps/ : директория с APK-файлами системных программ, эквивалентная после прошивки "/data/app_s/", программы в этой директории после прошивки не могут быть удалены
dev_data/app/ : директория с APK-файлами пользовательских программ, эквивалентная после прошивки "/data/app/", программы в этой директории после прошивки могут быть удалены. (Только в версиях после 28 октября, в предыдущих версиях эту директорию нужно добавить самому)
META-INF/com/google/android/ : файлы скриптов для прошивки
system/etc/ : хранит некоторые файлы конфигурации
system/etc/permissions/ : относится к разрешениям программ, некоторые патчи нужно добавлять в эту директорию
system/lib/ : место хранения библиотек системных программ
2. Далее познакомимся с файлами скриптов прошивки
При прошивке через recovery процесс прошивки контролируется скриптовыми файлами.
Скриптовый файл — это update-script в директории META-INF/com/google/android в архиве, его можно открыть с помощью текстового редактора.
В скриптовом файле есть несколько строк, которые нас интересуют:
(1)show_progress 0.1 0 : отображает индикатор прогресса.
Он используется для отображения прогресс-бара прошивки, число 0.1 обозначает местоположение индикатора, его можно изменить на другое значение (меньше 1). Значение второй цифры не ясно, в основном все строки, кроме последней, имеют 0, последняя — 10. В некоторых ROM, когда прошивка завершена, индикатор прогресса показывает только половину, можно попробовать изменить последнюю строку на show_progress 0.8 10, и индикатор дойдет до конца.(2) Несколько ключевых слов (A) "SYSTEM:" обозначает каталог системы после прошивки = "/system/" (B) "INTERNAL:" обозначает каталог /data после прошивки = "/data/" (C) "PACKAGE:" обозначает корневой каталог архива, например, "SYSTEM:etc/" соответствует каталогу "/system/etc/" после прошивки, а "PACKAGE:dev_data" соответствует каталогу dev_data в архиве (3) copy_dir PACKAGE:dev_data INTERNAL: copy_dir используется для копирования каталогов, первый параметр — это каталог, который нужно скопировать, второй параметр — место копирования. Например, copy_dir PACKAGE:dev_data INTERNAL: используется, чтобы скопировать содержимое каталога dev_data из архива ROM в каталог "/data/" после прошивки (4) set_perm_recursive 0 2000 0755 0755 SYSTEM:bin Настраивает разрешения для каталогов или файлов, способ использования похож на установку разрешений в Linux (5) delete SYSTEM:app/YouTube.apk Удаляет файл, обычно не используется; если нужно удалить, просто удаляйте. Итак, можно приступать к оптимизации и добавлению программ. 2. Оптимизация системных программ Оптимизация на самом деле подразумевает удаление системных программ, которые нам не нужны. Преимущества удаления этих программ: (1) Некоторые вещи нам не нужны, они отображаются в списке приложений и мешают; если таких программ много, это может замедлить открытие списка приложений. (2) Некоторые программы после запуска занимают память, но мы ими не пользуемся. Например, фильтры SMS. (3) Некоторые программы мы не хотим использовать из оригинальной ROM и хотим заменить их другими, например, если не нравится ADW, использовать LAUNCH PRO и т.д. Способ оптимизации очень простой: откройте ROM через WinRAR, перейдите в dev_data apps, найдите ненужные программы и удалите их. Какие программы можно оптимизировать: этот вопрос обсуждался во многих постах, вы можете поискать в интернете, например, в следующих нескольких постах. 3. Добавление программ Есть два способа добавления программ: первый — добавить программу как системную, второй — как пользовательскую. Преимущество добавления программы как системной в том, что скорость выполнения высокая (так говорят, я особо не ощущал), недостаток — нельзя удалить напрямую, только через инструменты типа RE.На самом деле, при прямом удалении системных программных APK-файлов с помощью RE они не всегда полностью удаляются. Если не верите, посмотрите каталог /data/data/, там для каждой программы есть свой объект, имя каталога совпадает с именем пакета программы (не с XXX.APK, а с самим XXX).
1. Добавление системных программ: Самый простой способ добавить системную программу:
(1) Откройте ROM-архив с помощью WinRAR, перейдите в каталог "dev_data app_s" и скопируйте туда APK-файл программы, которую хотите добавить.
(2) Откройте APK-файл с помощью WinRAR и посмотрите, есть ли файлы с расширением .so в каталоге "lib armeabi". Это библиотеки, необходимые для работы программы. Если они есть, скопируйте их в каталог "system/lib/" в архиве. У многих пользователей программы, добавленные при модификации ROM, не работают, и причина чаще всего именно в этом. Например, новая версия Google Pinyin Input.
2. Добавление пользовательских программ: Добавление пользовательских программ немного сложнее, но после прошивки их можно удалить напрямую. Если используется ROM после 28 октября, просто перетащите APK в каталог "dev_data/app/". Этот шаг очень прост, настоящая сложность возникает, если в APK есть библиотечные файлы. Простейший способ такой же, как шаг 2 при добавлении системных программ; недостаток этого метода в том, что при удалении библиотеки остаются в "system/lib/", однако большинство программ не имеют библиотек, а сохраненные библиотеки редких программ, как правило, не вызывают проблем. Более сложный способ — установка через написание скрипта.
ROM до 28 октября не имели каталога "app" в "dev_data/", можно создать его самостоятельно (клик правой кнопкой в WinRAR и выбрать создать новую папку). После создания каталога нужно настроить его свойства в скрипте прошивки:
В скрипте прошивки найдите следующую часть:
copy_dir PACKAGE:dev_data INTERNAL:
set_perm 1000 1000 0771 INTERNAL:app_s
И добавьте после этого строку:
set_perm 1000 1000 0771 INTERNAL:app
Первая строка копирует все из каталога dev_data из ROM в /data.
Вторая строка устанавливает права для app_s.
Строка, которую мы добавляем, устанавливает права для app.
Далее можно проводить исправления и настраивать ROM.Скрипт firstboot предназначен для более продвинутой настройки ROM, можно использовать скрипт firstboot.sh. Скрипт firstboot.sh находится в каталоге dev_data в ROM. Код в скрипте выполняется при первом запуске после прошивки устройства, с его помощью можно настраивать систему, устанавливать APK и выполнять другие задачи.
Посмотрим фрагмент скрипта в liudidi1028rom:
# System default settings
/system/xbin/sqlite3 "INSERT INTO system (name, value) VALUES ('trackball_wake_screen', 1);"
/system/xbin/sqlite3 "INSERT INTO system (name, value) VALUES ('trackball_unlock_screen', 1);"
/system/xbin/sqlite3 "INSERT INTO system (name, value) VALUES ('lock_home_in_memory', 1);"
Думаю, все могут догадаться о назначении этих трех строк кода. Почему скрипт написан именно так, спрашивать меня не нужно, я тоже не очень в этом разбираюсь, можно изучать вместе.
В скрипте можно использовать команды rm, mv и другие, с их помощью можно напрямую перезаписывать определенные конфигурационные файлы.
Например:
busybox rm /system/etc/какой-либо_файл
busybox mv /system/etc/какой-либо_файл
Конечно, если меняются системные файлы, сперва нужно получить права:
busybox mount -o remount,rw /system
После этого можно снова сделать файловую систему только для чтения:
busybox mount -o remount,ro /system
firstboot.sh очень полезен, было бы здорово, если бы кто-то написал начальный учебник!
[Создание/Модификация ROM Руководство] Создаем свой собственный ROM (1)
Ответы (1)
Слишком длинно, не понимаю
— Все ответы загружены —