Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Кастомний Android: робимо свою прошивку з стокової, що не копаючись в исходниках

  1. Зміст статті Напевно у тебе як у користувача Android виникало бажання зробити операційну систему...
  2. розпаковуємо system.new.dat
  3. скрипт
  4. ручний спосіб
  5. Структура каталогів Android
  6. Видаляємо і додаємо додатки
  7. Міняємо анімацію завантаження
  8. Змінюємо звукове оформлення
  9. додаємо шрифти
  10. Міняємо системні настройки (build.prop)
  11. Впроваджуємо в прошивку Google Apps
  12. Вільне місце
  13. збірка
  14. Підводні камені
  15. установка
  16. висновки

Зміст статті

Наша взаимовыгодная связь https://banwar.org/

Напевно у тебе як у користувача Android виникало бажання зробити операційну систему краще, додати корисне, прибрати зайве і поділитися своїм творінням з суспільством. Збірка власної прошивки з вихідних - складний процес, що вимагає глибоких знань предмета, однак ніхто не забороняє взяти стандартну прошивку смартфона і адаптувати її під свої потреби. Це не так вже й складно зробити.

Почнемо з того, що тобі потрібен Linux. У Windows ти зможеш тільки розібрати прошивку, але зібрати назад вже не вийде через суто технічні причини. Тепер про прошивці. Зазвичай вони поширюються в вигляді ZIP-архівів, прошиваються через кастомниє рекавери. Саме один з них нам і знадобиться для дослідів. Починати шлях ромодела я рекомендую з якою-небудь максимально наближеною до AOSP кастомной прошивки, тому що в ній часто простіше розібратися, чим в стоці.

Потрібний ZIP можна знайти на XDA Developers або 4PDA . Але май на увазі, що потрібна прошивка конкретно для твоєї моделі апарата, - у того ж Galaxy S7 є кілька модифікацій для різних ринків, не завжди сумісних між собою.

Структура ZIP-файлу з прошивкою

Після завантаження розпакуємо архів за допомогою будь-якого архіватора. Всередині буде наступний набір файлів і папок:

  • META-INF - папка з метаінформацією про прошивці (сертифікат учасника, маніфест зі списком файлів, їх контрольними сумами), скриптом поновлення (updater-script) і інсталятором (update-binary), який виконує команди скрипта з монтування розділів, копіювання файлів і іншим діям з NAND-пам'яттю;
  • boot.img - образ з ядром і RAM-диском (він прошивається в розділ boot);
  • system.new.dat - це, грубо кажучи, і є сама прошивка, а точніше образ розділу system, що містить операційну систему Android за вирахуванням ядра;
  • system.transfer.list - містить список команд, які необхідно виконати, щоб по блоках скопіювати вміст system.new.dat в розділ system при установці прошивки;
  • system.patch.dat - використовується для OTA-оновлення, тобто вибіркового внесення змін до прошивку; якщо прошивка «повна», він має нульовий розмір.

Вміст ZIP-файлу прошивки LineageOS для Nexus 5

розпаковуємо system.new.dat

Файли system.new.dat і system.transfer.list представляють для нас найбільший інтерес. Точніше, не вони, а що міститься в них система. Але дістатися до неї не так просто.

скрипт

Найледачіші можуть розібрати прошивку за допомогою скрипта System_Extractor-Linux .

  1. Розпаковуємо архів з прошивкою в будь-яку папку.
  2. качаємо скрипт за посиланням і разархивируем в будь-яку папку.
  3. Запускаємо файл ext (якщо буде лаятися на відсутність Java, просто пропусти, натиснувши y; Java потрібна тільки для запаковування).
  4. Тепер вибираємо розпакування, натиснувши кнопку 1, а потім Enter.
  5. Нова папка з ім'ям extract_ * з'явиться поруч з файлом ext і папкою tools. Копіюємо в неї файли system.new.dat і system.transfer.list.
  6. Після копіювання файлів натискаємо Enter і чекаємо. Через деякий час потрібно буде знову натиснути Enter, ввести пароль адміністратора і ще раз тапнуть Enter.
  7. Готово. Вміст system в папці extract _ * / output.

Скрипт для розпакування system.new.dat в Linux

ручний спосіб

Розпаковуємо архів з прошивкою в будь-яку папку (наприклад, в rom):

$ Mkdir ~ / rom $ unzip путь_до_архіва -d ~ / rom /

Викачуємо потрібні нам інструменти в цю папку:

$ Cd ~ / rom $ wget https://github.com/xpirt/sdat2img/raw/master/sdat2img.py

Запускаємо скрипт:

$ Chmod + x sdat2img.py $ ./sdat2img.py system.transfer.list system.new.dat system.img

Він перетворює файл system.new.dat в raw-образ з ім'ям system.img. Монтуємо образ до підпапці mnt:

$ Mkdir mnt $ sudo mount -t ext4 -o loop system.img ~ / rom / mnt $ Mkdir mnt $ sudo mount -t ext4 -o loop system Вміст способу system

Структура каталогів Android

Після розпакування system з'явиться наступна каталогова структура:

  • app - встановлені додатки зі стандартними привілеями;
  • priv-app - встановлені додатки з підвищеними привілеями, в тому числі деякі компоненти системи;
  • bin - бінарні файли формату ELF, аналог каталогів / bin і / usr / bin в Linux. Містить різні системні компоненти, що використовуються більш високорівневими компонентами системи;
  • etc - файли налаштувань. Повний аналог / etc в Linux, який використовується, однак, тільки тими самими системними компонентами. Додатки Android зберігають індивідуальні настройки в каталогах / data / data /;
  • fonts - шрифти. За замовчуванням містить тільки фірмові шрифти Roboto;
  • framework - бібліотеки Java-класів, які використовуються системою і додатками. Тут же лежить файл framework-res.apk, що містить повний опис інтерфейсу операційної системи, включаючи всі графічні файли;
  • lib і lib64 - Linux-бібліотеки, які використовуються низькорівневими компонентами системи. Аналог каталогів / lib і / usr / lib в Linux, включаючи такі стандартні бібліотеки, як libc, libz, libssl. На пристроях з архітектурою ARMv7 і нижче каталог lib64 буде відсутній;
  • media - мультимедійні дані: рінгтони, звуки сповіщень, звуки інтерфейсу і анімація завантаження ОС;
  • tts - файли, необхідні синтезатору мови;
  • usr - каталог, який зазвичай містить файли, необхідні для роботи додатків з каталогу bin. По суті, аналог / usr / share;
  • vendor - файли, що поставляються виробником пристрою. Зазвичай містить бінарний firmware для різних залізних компонентів, наприклад модуля Wi-Fi;
  • xbin - необов'язковий каталог; кастомниє прошивки використовують його для зберігання таких речей, як інтерпретатор bash, SSH, PowerTOP, BusyBox, і інших корисних інструментів;
  • build.prop - файл, що містить інформацію про збірку, а також різні низькорівневі налаштування;
  • addon.d - містить скрипти, що запускаються після установки прошивки. Сюди ж GApps прописують свій скрипт, завдяки якому відроджуються після переустановлення прошивки.

Ознайомившись з базовою структурою Android, почнемо вносити зміни.

Видаляємо і додаємо додатки

Всі встановлені програми можна знайти в двох папках:

  • / System / app /;
  • / System / priv-app /.

Один від одного вони відрізняються привілеями доступу. Якщо програми з app мають такі ж повноваження, як сторонні програми (наприклад, встановлені з Play Store), то додатки з priv-app можуть використовувати привілейовані API (права privileged). Детальніше про це можна дізнатися з нашій статті .

Для попереднього встановлення додатка в прошивку просто кинь її APK-файл в / system / app /. Можна, звичайно, створити окрему папку, але в нашому випадку в цьому немає сенсу, тому що папка служить для зберігання бібліотек і odex-файлів, яких у нас просто немає. Для видалення просто видали папку з ним.

Можна піти далі і поміняти стокові додатки на аналоги. Наприклад, для заміни календаря видаляємо папку Calendar і копіюємо в / system / app наш улюблений com.rpagyc.simplecalendar.apk. А можна і не копіювати. Тоді прошивка буде без календаря.

Головне, пам'ятай: стокові програми можуть бути пов'язані між собою. Тому видалення однієї проги цілком може привести до повної непрацездатності інший (наприклад, CalendarProvider і Calendar: видаливши перший, ти зробиш непрацездатним не тільки стоковий, але і будь-який інший календар). На щастя, в чистих AOSP-прошивках взаємозв'язків не так багато.

Міняємо анімацію завантаження

Анімація зберігається у вигляді PNG-картинок, упакованих в архів /system/media/bootanimation.zip без стиснення. Всередині архіву знаходяться:

  • desc.txt - файл, що описує анімацію;
  • part0 - папка з файлами анімацій, які відтворюються першими;
  • part1 - папка з файлами анімацій, які відтворюються другими;
  • ...
  • part? - крайня папка, зображення з якої відтворюються в кінці.

Файл desc.txt може містити щось на зразок

1920 1080 60 p 1 0 part0 p 0 0 part1

Призначення цих рядків інтуїтивно зрозуміло: 1920 × 1080 - дозвіл картинки, 60 - число кадрів в секунду. Part0 і part1 вказують на папки, з яких буде відтворюватися анімація, і послідовність відтворення. Взагалі, може бути як одна частина, так і кілька (три і більше).

Зображення, що знаходяться в папках part, пронумеровані п'ятьма цифрами в порядку відтворення: 00000.png, 00001.png, 00002.png ... Ці зображення можна поміняти на свої, тим самим створивши оригінальну анімацію. А можна просто видалити файл bootanimation.zip. Тоді девайс буде показувати анімацію з стандартного Android. або скористатися вже готової колекцією анімацій на 4PDA .

Чотири частини в bootanimation.zip для LineageOS

Змінюємо звукове оформлення

Фактично всі звуки, які відтворює система, зберігаються в папці / system / media / audio. Всередині неї ти знайдеш такі папки:

  • alarms - мелодії будильника;
  • notifications - звуки повідомлень;
  • ringtones - мелодія дзвінка;
  • ui - системні звуки, наприклад низький заряд батареї, фокусування камери, вибір елементів інтерфейсу.

У alarms, notifications, ringtones можна накидати скільки завгодно будь-яких мелодій. Взяти їх можна, наприклад, тут:

І маленький лайфхак: видалення файлів з папки ui призведе не до збоїв і помилок, а до зникнення системних звуків. Тому ти можеш легко відключити звук створення знімка з камери, зняття скріншота, просто потерши містять ці звуки файли (їх імена інтуїтивно зрозумілі).

додаємо шрифти

Шрифти зберігаються в fonts. Знайти архіви з файлами шрифтів можна на 4PDA і XDA . Для установки достатньо скопіювати з заміною ttf-файли з архіву в папку fonts.

Міняємо системні настройки (build.prop)

В образі system є цікавий файлик build.prop, що містить безліч корисної інформації про залозі пристрою та налаштування, що встановлюються за замовчуванням, для різних стічних додатків. Справедливості заради зазначу, що це не завжди так. Наприклад, в Gigaset ME і ME Pro build.prop розділений на дві частини. В одній частині містяться настройки для Gigaset ME, а для ME Pro деякі рядки продубльовані, але ключі (назва смартфона і так далі) в них інші. Це було зроблено, щоб забезпечити більш-менш коректну працездатність однієї і тієї ж прошивки на різних апаратах.

Це було зроблено, щоб забезпечити більш-менш коректну працездатність однієї і тієї ж прошивки на різних апаратах

Додатковий файл для Gigaset ME і ME Pro

Build.prop містить (або може містити) величезна кількість налаштувань. Деякі з них нічого не змінюють, деякі покращують одне за рахунок погіршення іншого, але є ті, які дійсно корисні:

  • ro.product.model і ro.product.manufacturer - модель смартфона і ім'я виробника. За допомогою заміни цих рядків можна змусити Play Store думати, ніби в тебе інший смартфон, що відкриє доступ до більшої кількості софту. Для будь-яких маловідомих китайських смартфонів ці рядки можуть стати рятівними;
  • hw.qemu.mainkeys - приймає тільки два значення: 0 - показати наекранной клавіші навігації, 1 - не показувати кнопки. Відсутність рядка відповідає 0;
  • debug.sf.nobootanimation - значення 1 відключає анімацію завантаження, що трохи піднімає її швидкість. Установка 0 або видалення рядка повертає анімацію на місце;
  • ro.telephony.default_network - говорить системі, в якій режим повинна бути переключена мобільна мережа при завантаженні;
  • ro.sf.lcd_density - DPI дисплея, найбільш точне значення для дисплея можна порахувати через зручний сайт . Але ніхто не забороняє поставити і більше чи менше значення за своїм смаком: більш високі значення роблять елементи інтерфейсу крупніше, низькі - менше;
  • ro.config.vc_call_vol_steps - кількість кроків гучності під час розмови (за замовчуванням 8);
  • ro.config.media_vol_steps - кількість кроків гучності мультимедіа (за замовчуванням 15).

Впроваджуємо в прошивку Google Apps

У більшості випадків кастомниє прошивки поставляються без сервісів Google і магазину додатків. Розробники пропонують нам встановити їх окремо за допомогою пакета GApps. Однак його можна інтегрувати прямо в прошивку.

Для початку необхідно завантажити пакет GApps. Я рекомендую брати архіви Open GApps . Вибираєш версію Android, архітектуру процесора і варіант комплектації (Pico, Nano, Stock ...), який визначає, скільки різних додатків Google містить архів. Я рекомендую завантажити версію Pico. Вона містить тільки Play Store і набір необхідних для його роботи бібліотек.

Інтеграція GApps в прошивку виконується так:

  1. Розпаковуємо ZIP-архів GApps за допомогою будь-якого архіватора.
  2. Переходимо в папку Core.
  3. Бачимо безліч архівів з розширенням .tar.lz. Витягуємо з допомогою lzip.
  4. Після розпакування копіюємо файли з папок у відповідні папки в system. Що куди кидати, неважко здогадатися по структурі каталогів в архіві. Наприклад, configupdater (зі скріншота) потрібно кидати в папку priv-app.
  5. Переходимо в папку GApps (знаходиться поруч з Core) і проробляємо пункти 3 і 4 для файлів в ній.
  6. Все, ми інтегрували GApps в нашу прошивку!

Структура каталогів configupdater-all.tar.lz

Вільне місце

Необхідно розуміти, що місце для установки прошивок обмежено. Не можна встановити прошивку, розмір якої переважує розмір розділу system пристрою. Подивитися його значення можна, використовуючи ADB :

$ Adb shell df / system $ Adb shell df / system   Інфа про розподіл system Інфа про розподіл system

Другий варіант: поставити на пристрій термінал і набрати команду

$ Df / system

Розмір розділу в байтах можна дізнатися, встановивши на смартфон BusyBox і виконавши в терміналі команду

$ Busybox df -B 1 / system

Або те ж саме за допомогою ADB:

$ Adb shell busybox df -B 1 / system

Місце, займане прошивкою, буде приблизно дорівнює розміру system в розпакованому вигляді. Взагалі, при створенні прошивки необхідно враховувати, що юзер також може прошити поверх неї різні модифікації (SuperSU, Xposed) або перенести додатки в розділ system. Наприклад, мінімальний пакет додатків Google (Pico) вимагає мінімум 150 Мбайт додаткового простору для установки.

При необхідності розмір файлу прошивки можна зменшити, видаливши не тільки непотрібні програми з / system / app (/ system / priv-app) і звуки виклику з system / media / audio і bootanimation.zip, а й:

  • / system / tts / lang_pico - мови примітивного голосового движка Pico TTS, голосовий движок Google це не торкнеться;
  • / system / usr / srec / config / - офлайн-мови. Можна буде скачати потім онлайн, якщо знадобиться.

збірка

Після внесення змін потрібно зібрати все назад. Спочатку запакуємо розділ system в system.new.dat. Викачуємо потрібні нам інструменти:

$ Wget https://github.com/xpirt/img2sdat/raw/master/img2sdat.py $ wget https://github.com/xpirt/img2sdat/raw/master/blockimgdiff.py $ wget https: // github. com / xpirt / img2sdat / raw / master / common.py $ wget https://github.com/xpirt/img2sdat/raw/master/rangelib.py $ wget https://github.com/xpirt/img2sdat/raw/ master / sparse_img.py $ sudo apt-get install android-tools-fsutils

Перетворюємо нашу папку назад в RAW-образ. Назвемо його system_new.img:

$ Sudo make_ext4fs -T 0 -S file_contexts -l 1073741824 -a system system_new.img output /

1073741824 міняємо на розмір розділу system в байтах. Бажано навіть зробити його трохи менше. Робимо з RAW-образу sparse-образ:

$ Img2simg system_new.img system_snew.img

Перетворимо наш образ в system.transfer.list і system.new.dat, які і потрібно кидати в архів з прошивкою, але спочатку видалимо старі файли:

$ Rm -rf system.transfer.list $ rm -rf system.new.dat $ rm -rf system.patch.dat $ chmod + x img2sdat.py $ ./img2sdat.py system_snew.img

Відділимо файли прошивки від зайвої лушпиння (файлів, які ми завантажували для роботи. Для цього зручно користуватися архівом з прошивкою). Видалили? Тепер потрібно запакувати прошивку в ZIP-архів (будь-яким архіватором).

Залишилося підписати архів. Зробити це можна як на самому Android за допомогою ZipSigner , Так і на ПК (потрібно встановлена ​​Java):

$ Wget https://github.com/appium/sign/raw/master/dist/sign.jar $ java -jar файл.zip

Підводні камені

Під час складання system.new.dat ти можеш зіткнутися з декількома проблемами, викликаними постійними змінами в механізмах формування прошивок Android. Описаний вище спосіб повинен добре спрацювати в разі заснованої на Android 5.1 прошивки, в новіших можуть виникнути складності, так що буде потрібно використовувати інші версії інструментів збирання. На жаль, ми не можемо описати всі нюанси збірки, тому, можливо, доведеться погуглити.

установка

Для установки кастомной прошивки необхідний кастомний рекавери TWRP, що дозволяє встановлювати непідписані або підписані тестовим ключем прошивки (саме таку ми створили). У журналі ми неодноразово описували процес його установки, так і в гілках форуму, присвячених твоєму пристрою, зазвичай є достатньо інформації для того, щоб це зробити.

У журналі ми неодноразово описували процес його установки, так і в гілках форуму, присвячених твоєму пристрою, зазвичай є достатньо інформації для того, щоб це зробити

TWRP

висновки

Ця стаття описує лише верхівку величезного айсберга під назвою «модифікація прошивок». «Серйозні» прошивки не тільки доповнюють ядро ​​і саму прошивку з стічними додатками безліччю функцій (які часто вирвані з інших ядер і прошивок), організовуючи або навіть міняючи принципи їх взаємодії, а й цілком можуть кардинально міняти принципи роботи ОС. Правда, така саморобка - це вже не Android, а окрема ОС, навіть якщо Play-сервіси вийде туди поставити (до речі, такі дії, м'яко кажучи, не заохочуються Google). Ну і не забуваємо: все оболонки від виробників - TouchWiz, ZenUI, HTC Sense і так далі - всього лише звичайні кастоми, максимально прив'язані до заліза пристрої і один до одного.

Part?
Видалили?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: