Меню
безкоштовно
Головна  /  навігатори / Розібрати img файл. Кастомний Android: робимо свою прошивку з стокової, що не копаючись в исходниках

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

інтерполяція, інтерполювання - в обчислювальній математиці спосіб знаходження проміжних значень величини за наявним дискретному набору відомих значень.

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

Існує багато кінцево-різницевих методів інтерполяції. найбільш
поширеним є метод Ньютона для інтерполяції «вперед» (метод Ньютона - Грегорі). Інтерполяційний поліном в цьому випадку має вигляд:

Коефіцієнти С знаходимо за формулою:

Реалізація програми на мові C #:
using System; namespace Interpolation (class Program ...

Візуалізація алгоритмів cортіровкі

Програма розділена на два потоки в одному з яких виконується сортування, а в іншому перерисовка графічного інтерфейсу. Після натискання на кнопку «Сортувати», в програмі викликається метод «RunSorting», в якому визначається алгоритм сортування і створюється новий потік з запущеним в ньому процесом сортування.
private void RunSo ...

Качор Бровина на КТ819Г

Сьогодні я хочу показати свій Качор, який я робив на минулих зимових канікулах. Описувати весь процес виготовлення не буду, так як в інтернеті є багато статей. Напишу тільки про основні його параметри.

Нижче кілька фото зроблених під час складання пристрою.

Котушка намотана проводом 0,08 мм приблизно 2000 витків на ПВХ трубі діаметром 50 мм і висотою 200 мм.

Як терміналу була використана пластина з старого жорсткого диска. Все інше збиралося по схемі яка знаходиться в самому низу сторінки.

Перший варіант харчувався від блоку живлення старого комп'ютера, напругою 12 В. Потім же був зроблений окремий блок живлення, напругою в 30 В і з вбудованим охолодженням.

Схема пристрою:

Що таке CORS і як його використовувати

Спільне використання ресурсів (CORS) - це специфікація W3C, яка дозволяє здійснювати междоменной зв'язок в браузері. Створюючи поверх об'єкта XMLHttpRequest, CORS дозволяє розробникам працювати з однаковими ідіомами як запити з одним доменом. Варіант використання для CORS простий. Уявіть, що на сайті alice.com є деякі дані, які сайт bob.com хоче отримати. Цей тип запиту традиційно не допускається відповідно до тієї ж політикою походження браузера. Однак, підтримуючи запити CORS, alice.com може додати кілька спеціальних заголовків відповідей, які дозволяють bob.com отримувати доступ до даних. Як видно з цього прикладу, підтримка CORS вимагає координації між сервером і клієнтом. На щастя, якщо ви займаєтеся розробкою продуктів на стороні клієнта, ви захищені від більшості цих деталей. В іншій частині цієї статті показано, як клієнти можуть виконувати запити з крос-початком і як сервери можуть налаштовувати себе для підтримки CORS. Продовженні ...

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

  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.

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

Розпаковуємо архів з прошивкою в будь-яку папку (наприклад, в 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

Структура каталогів 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.

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

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

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

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

  • стандартні мелодії з різних телефонів і смартфонів Nokia;

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

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

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

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

В образі system є цікавий файлик build.prop, що містить безліч корисної інформації про залозі пристрою та налаштування, що встановлюються за замовчуванням, для різних стічних додатків. Справедливості заради зазначу, що це не завжди так. Наприклад, в Gigaset ME і ME Pro build.prop розділений на дві частини. В одній частині містяться настройки для 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 в нашу прошивку!

Вільне місце

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

$ Adb shell df / 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, так і на ПК (потрібно встановлена \u200b\u200bJava):

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

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

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

установка

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

TWRP

висновки

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

Всі прошивки для планшетів на процесорі Allwinner мають один і той же формат img (IMAGEWTY).

Після довгих пошуків я все-таки знайшов програму, яка дозволяє розібрати і зібрати прошивку для планшетів на базі Allwinner. Називається вона unPacker

Перейдемо безпосередньо до розбирання файлу прошивки.

Розбирання IMG файлу

Для розбирання потрібно:

  • Файл самої прошивки
  • Програма unPacker, яку можна завантажити (Для Allwinner a31s можна використовувати imgRePacker)

Завантажуємо архів і розпаковуємо. Запускаємо програму unPacker.exe

Перетягуємо в це вікно наш файл і чекаємо розпакування.

Після закінчення розпакування з'явиться нова папка назва «прошівкі.img.dump»

В папці out є файл system.fex це файл з системними файлами (папка system). Він то нам і потрібен.

Редагування файлу system.fex

Для редагування цього файлу потрібна nix система і утиліта для конвертації, яку можна завантажити

Створюємо в домашній директорії папку в якій будемо редагувати нашу прошивку. Назвемо її наприклад NEW. Тепер розпаковуємо файли з архіву ext4_utils.zip в папку NEW. Запускаємо термінал і набираємо

Програма скомпілюється і ми отримаємо інструмент для редагування Sim2img. Тепер кладемо в папку NEW наш файл system.fex і перейменовуємо його в sytsem.img

Вводимо в терміналі

./simg2img system.img output.img

Тепер у нас є файл output.img. Тепер створюємо папку наприклад з назвою sys

І монтуємо туди наш файл output

sudo mount output.img sys

Тепер в папці sys знаходяться файли, які можна редагувати. Наприклад можна внести зміни в файл build.prop, які поліпшать роботу системи.

Після редагування починаємо збірку

./mkuserimg.sh -s sys / ./factoryfs_custom.img ext4 ./temp 512M

Отриманий файл factoryfs_custom перейменовуємо в system.fex.iso

примітка: можна аналогічно редагувати і інші файли образів (boot і bootloader)

збірка

Тепер що б зібрати відредаговані файли в необхідний для прошивки формат, потрібно файл system.fex.iso покласти із заміною в папку (на Windows) _iso і перетягнути папку

Хочете спробувати себе в створення, редагування прошивок на Android, тоді програма Samsung Root Firmware Replacer допоможе в створення прошивок!

Коротко про програму Samsung Root Firmware Replacer і її можливості

За допомогою даної програми Ви зможете:

  • Розпаковувати прошивки Samsung
  • Одексіровать прошивку
  • В автоматичному режимі вбудувати Root права
  • Автоматично наповнювати прошивку своїми файлами
  • Заморозити проект, а потім продовжити над ним роботу
  • упакувати прошивку

Необхідні компоненти і умови роботи Samsung Root Firmware Replacer

Огляд і опис функцій Samsung Root Firmware Replacer старт програми

1. Перейдіть в папку з програмою Samsung Root Firmware Replacer, правий клік відкрити в терміналі

2. У терміналі введіть команду

3. Перед Вами відкриється інтерфейс програми

4. Якщо запустили програму вперше то виконайте - конфігурація налаштувань

Робота в програмі Samsung Root Firmware Replacer

пункт Розпакувати прошивку * .tar.md5 - розпаковує прошивку, для цього перемістіть файл в папку unpack_tar_md5, Після чого всі файли розпакуються, а файл factoryfs або system переместяться в input_img

пункт Створення * .img з вашого Android (потрібен Android) - дозволяє створити прошивку з вашого поточного стану Android. Для роботи даного пункту необхідно мати Android підключений до ПК з включеною налагодженням USB.

Даний пункт має підменю

пункт Створення * .img з оригінальною прошивки дозволяє змінювати готові прошивки, для цього перенести будь IMG файл в папку input_img.

Даний пункт також має своє підменю

Приклад використання програми Samsung Root Firmware Replacer

В даному прикладі йде створення прошивки з поточного стану Android

1. Підключити Android до ПК

2. Запустити програму

3. Вибрати пункт Створення * .img з вашого Android (потрібен Android)

4. Вибрати Зняти образ c Android і розпакувати img

5. Вибір розділу з якого буде зніматися образ

6. Почекайте 6-7 хвилин поки зніметься образ і переміститься на ПК.

Важливо! На смартфоні або планшеті, а також ПК, має бути достатньо пам'яті щоб зняти образ. Розмір образу може займати від 2МБ до 2 Гб

7. Після того як зняли образ, можна його модіфіровать, якщо це потрібно (вбудувати Root), можете його назад упакувати, для цього

8. Вибрати пункт Упаковка проекту в img

9. Вкажіть розмір і назва прошивки.

  • Розмір розділу вказувати таким чином, від розміру блоку поділити на 1024 і результату дописати букву M.

  • Назва повинна відповідати назві, який ви використовували для зміни

11. Також не забудьте скопіювати ядро \u200b\u200bз вашого Android, для цього скористайтеся пунктом - Зняти образ c Android - boot.img або zImage

12. Після всіх маніпуляцій необхідно зібрати прошивку в TAR.MD5

13 В головному меню вибрати пункт Запакувати прошивку * .tar.md5

14 Прошивка в програмі Samsung Root Firmware Replacer приготовлена, можете