Ako DIY port TWRP pre Android

, môžete vyskúšať prácu s menším stromom, ako je tento Minimálny manifest TWRP . Môžu však nastať situácie, keď budete potrebovať viac opakovaní, ako umožňuje tento manifest.



Dôležitá poznámka pred kompiláciou: Ak pridáte alebo zmeníte akékoľvek vlajky, budete musieť pred opätovnou kompiláciou vyčistiť (alebo vytvoriť clobber), inak nebudú vaše zmeny vlajok zahrnuté!

Po získaní zdrojového kódu TWRP musíme zmeniť niektoré príznaky zostavenia pre vaše konkrétne zariadenie. Nájdite BoardConfig.mk pre vaše zariadenie - zvyčajne sa nachádza v zariadenia / výrobca / kódové meno (napríklad zariadenia / lge / hammerhead / BoardConfig.mk)



Konfigurácia dosky musí obsahovať architektúru a nastavenie platformy - tieto sú zvyčajne už zahrnuté ak používate konfiguráciu zariadenia niekoho iného. Ak ste si však vytvorili vlastné, budete ich musieť pridať. Je to tak preto, lebo bez nich môže byť obnovovacie bootovanie predvolené a iba opakovane bliká logo TeamWin na vašej obrazovke.



Vlajky by mali byť umiestnené v spodnej časti BoardConfig.mk pod nadpisom #twrp



Pre všetko zariadeniach, musíte dať TWRP pokyn, ktorá téma sa má použiť. Namiesto staršieho príznaku DEVICE_RESOLUTION sa použije príznak TW_THEME, čo znamená, že TWRP teraz na zväčšenie ľubovoľnej témy používa škálovanie.

Máte tieto možnosti: portrét_hdpi, portrét_mdpi, krajina_hdpi, krajina_mdpi a hodinky_mdpi. V režime na výšku budete pravdepodobne potrebovať tému hdpi s rozlíšením 720 × 1280 a vyšším, ale pre zariadenia na šírku s rozlíšením 1280 × 720 a vyšším.

Takže vaša sekcia príznaku zostavenia + príznak témy by mali vyzerať takto:



#twrp

TW_THEME: = portrét_hdpi

Niektoré ďalšie príznaky zostavenia, ktoré by ste chceli zahrnúť do tejto sekcie (kredity na fórach XDA):

  • RECOVERY_SDCARD_ON_DATA: = true (umožňuje to správne zaobchádzanie s / data / media na zariadeniach, ktoré majú tento priečinok na ukladanie (väčšina plástov a zariadenia, ktoré boli pôvodne dodané s ICS, ako je Galaxy Nexus) Tento príznak sa však nevyžaduje pre tieto typy zariadení. Ak nedefinujte tento príznak a tiež nezahŕňajte žiadne odkazy na / sdcard, / internal_sd, / internal_sdcard alebo / emmc vo vašom fstab, potom budeme automaticky predpokladať, že zariadenie používa emulované úložisko.)
  • BOARD_HAS_NO_REAL_SDCARD: = true - zakáže veci, ako je rozdelenie na SD karty, a môže vám ušetriť miesto, ak TWRP nezapadá do vašej obnovovacej registrácie
  • TW_NO_BATT_PERCENT: = true - zakáže zobrazenie percentuálneho podielu batérie pre zariadenia, ktoré ju nepodporujú správne
  • TW_CUSTOM_POWER_BUTTON: = 107 - vlastné mapuje tlačidlo napájania pre uzamknutú obrazovku
  • TW_NO_REBOOT_BOOTLOADER: = true - odstráni tlačidlo reštartu bootloaderu z ponuky reštartu
  • TW_NO_REBOOT_RECOVERY: = true - odstráni tlačidlo obnovenia reštartu z ponuky reštartu
  • RECOVERY_TOUCHSCREEN_SWAP_XY: = true - zamení mapovanie dotykov medzi osami X a Y
  • RECOVERY_TOUCHSCREEN_FLIP_Y: = true - vyletí hodnoty dotykovej obrazovky v osi y
  • RECOVERY_TOUCHSCREEN_FLIP_X: = true - preklopí hodnoty x na dotykovej obrazovke
  • TWRP_EVENT_LOGGING: = true - umožňuje protokolovanie dotykových udalostí, aby pomohlo ladiť problémy s dotykovou obrazovkou (nenechávajte toto zapnuté pre vydanie - veľmi rýchlo zaplní váš súbor protokolu)
  • BOARD_HAS_FLIPPED_SCREEN: = true - preklopí obrazovku hore nohami pre obrazovky, ktoré boli namontované hore nohami

Ďalšie príznaky zostavenia možno nájsť prehľadávaním súborov Android.mk v zdroji obnovy, ale zvyčajne sa nepoužívajú, takže nemá zmysel ich dokumentovať.

Používanie programu Recovery.Fstab

TWRP 2.5 a vyšší podporuje nové funkcie recovery.fstab - najmä schopnosť rozširovať funkcie zálohovania a obnovy TWRP. Nemusíte pridávať príznaky fstab, pretože s väčšinou oddielov sa bude pracovať automaticky.

TWRP podporuje iba fstab v2 vo verzii 3.2.0 a vyššej - v starších verziách TWRP budete musieť použiť starý formát fstab. Tu je príklad TWRP fstab pre Galaxy S4:

Ak chcete maximalizovať kompatibilitu s konkrétnym zostavovacím stromom, môžete si vytvoriť twrp.fstab a pomocou PRODUCT_COPY_FILES ho umiestniť do> etc> twrp.fstab.

Keď TWRP spustí a nájde v ramdisku twrp.fstab, premenuje ho na> etc> recovery.fstab.bak - v podstate nahradí fstab z vášho zariadenia TWRP fstab, ktorý rozširuje kompatibilitu.

Príklad kódu:

PRODUCT_COPY_FILES + = zariadenie / lge / hammerhead / twrp.fstab: obnovenie> root> atď> twrp.fstab

Fstab v TWRP môže obsahovať nejaké „príznaky“ pre každý oddiel uvedený na fstab.

Tieto príznaky sú pridané do konca zoznamu oblastí na fstab, oddelené bielymi medzerami / medzerami / kartami. Vlajka ovplyvní iba tento oddiel, ale nie iné. Vlajky sú oddelené bodkočiarkami. Tu je príklad kódu:

Poďme to teda preskúmať kúsok po kúsku. Vlajka tu bude mať zobrazovaný názov „Micro SDcard“. Príznak wipeingui sprístupní tento oddiel na utieranie v ponuke Advanced Wipe. Vymeniteľný príznak naznačuje, že tento oddiel nie je vždy prítomný, čo zabráni zobrazeniu chýb pri pripojení.

Kompletný zoznam vlajok (kredity pre TeamWin) :

  • odnímateľný - označuje, že oddiel nemusí byť prítomný, aby zabránil zobrazovaniu chýb pri pripojení počas bootovania
  • skladovanie - označuje, že oddiel je možné použiť ako úložisko, vďaka ktorému je oddiel k dispozícii ako úložisko na zálohovanie, obnovu, inštaláciu zip atď.
  • úložisko nastavení - ako ukladací priestor nastavení by mal byť nastavený iba jeden oddiel, tento oddiel sa používa ako miesto na ukladanie súboru s nastaveniami TWRP
  • možno utrieť - označuje, že oddiel môže byť vymazaný serverovým systémom, ale nemusí byť uvedený v grafickom používateľskom rozhraní na utieranie používateľom
  • userrmrf - potlačí normálny typ utierania a umožní vymazanie iba oddielu pomocou príkazu rm -rf
  • backup = - musí byť nasledovaný znakom rovná sa, takže backup = 1 alebo backup = 0, 1 znamená, že oddiel môže byť uvedený v zozname zálohovanie / obnovenie, zatiaľ čo 0 zaručuje, že sa tento oddiel nebude zobrazovať v zozname záloh.
  • wipeingui - spôsobí, že sa oddiel zobrazí v grafickom používateľskom rozhraní, aby ho používateľ mohol vybrať v ponuke rozšíreného vymazania na vymazanie
  • vymazanie počas obnovy továrne - oddiel bude počas obnovenia továrenských nastavení vymazaný
  • ignoreblkid - blkid sa používa na určenie toho, aký súborový systém používa TWRP, tento príznak spôsobí, že TWRP preskočí / ignoruje výsledky blkid a použije iba súborový systém uvedený vo fstab
  • keeplayoutversion - spôsobí, že TWRP uchová súbor .layoutversion v / dátach na zariadeniach, ako je Sony Xperia S, ktoré používajú / dáta / médiá, ale stále majú samostatný oddiel / sdcard
  • symbolický odkaz = - spôsobí, že TWRP spustí pri pripojení oddielu ďalší príkaz na pripojenie, ktorý sa zvyčajne používa na vytvorenie / sdcard / data / media
  • displej = - nastaví zobrazovaný názov oddielu pre zaradenie do grafického používateľského rozhrania
  • storagename = - nastaví názov úložiska pre oddiel pre zaradenie do zoznamu úložiska GUI
  • nazov zálohy = - nastaví názov zálohy pre oddiel pre zaradenie do zoznamu zálohovania / obnovenia GUI
    length = - zvyčajne sa používa na rezerváciu prázdneho miesta na konci oddielu / data na uloženie dešifrovacieho kľúča, keď je k dispozícii úplné šifrovanie zariadenia Android, toto nastavenie by mohlo viesť k nemožnosti šifrovania zariadenia
  • canencryptbackup = - 1 alebo 0 na povolenie / zakázanie, spôsobí, že TWRP zašifruje zálohu tohto oddielu, ak si užívateľ zvolí šifrovanie (platí iba pre zálohy tar, nie pre obrázky)
  • userdataencryptbackup = - 1 alebo 0 na zapnutie / vypnutie, spôsobí, že TWRP zašifruje iba časť s používateľskými údajmi tohto oddielu, niektoré poddruhy ako / data / app by neboli šifrované, aby sa ušetrila doba
  • pododdiel = - musí byť nasledovaný znamienkom rovnosti a cestou oddielu, ktorého je podčasťou. Podpoddiel sa považuje za „časť“ hlavného oddielu, takže napríklad TWRP automaticky urobí z / datadáta podpodiel / údajov. To znamená, že / datadáta sa nezobrazia v záznamoch grafického používateľského rozhrania, ale / datadáta by boli vymazané, zálohované, obnovené, pripojené a odpojené, kedykoľvek sú tieto operácie vykonané na / data.

Dobrým príkladom použitia pod oddielov sú oddiely 3x efs na LG Optimus G:

Toto zhlukuje všetky 3 oddiely do jedného záznamu „EFS“ v grafickom používateľskom rozhraní TWRP, čo umožňuje všetky tri zálohovať a obnoviť spoločne pod jedným záznamom.

S TWRP 3.2.0 a novším, ktorý používa V2 Fstab, ste vy nemusíte pridávať žiadne príznaky zostavenia . Podpora V2 Fstab je automatická. V2 Fstab podporuje aj zástupné znaky (symbol *), ktoré môžu byť užitočné pre karty USB OTG a micro-SD s viacerými oddielmi. Môžete tiež naďalej používať formát V1 Fstab a je úplne možné použiť typy V1 aj V2 v rovnakom Fstab.

Napríklad tu je linka V1 Fstab so zástupným znakom určeným pre USB OTG:

Tu je linka V2 Fstab pre rovnaké zariadenie, ktorá dosahuje rovnaký výsledok:

Ďalej môžete zahrnúť atď. Twrp.flags, ktoré používajú formát V1 Fstab, a môžu byť použité na doplnenie V2 Fstab s príznakmi TWRP, ďalšími oddielmi, ktoré nie sú obsiahnuté vo V2 Fstab, alebo prepísaním nastavení vo V2 Fstab.

Napríklad zariadenie Huawei môže mať tento fstab V2 v etc recovery.fstab:

Môže obsahovať aj tieto príznaky:

Takže tu prvé dva riadky v TWRP.Flags pridajú oddiely Boot a Recovery, ktoré neboli prítomní vo V2 Fstab. Potom riadok / cust v TWRP.flags dá TWRP pokyn, aby umožnil koncovému používateľovi zálohovať oddiel (cust) a pridelil mu zobrazovaný názov.

Oddiel / misc je prítomný v twrp.flags a oddiel / oeminfo dáva pokyn TWRP, aby tiež umožnil zálohovanie a dal mu zobrazovaný názov.

Potrebujeme dátovú linku /, pretože veľa zariadení Huawei je šifrovaných, ale používajú špeciálne binárne súbory Huawei - preto používame binárne súbory Huawei na automatické dešifrovanie zariadenia v režime obnovenia. Takže tu / dátový riadok dá TWRP pokyn, aby použil / dev / block / dm -0, a nie / dev / block / bootdevice / by-name / userdata, ktoré sa zvyčajne používajú na „správne“ pripojenie “.

Nakoniec existuje / system_image, takže TWRP zahrnie možnosť vytvorenia obrazu systému v ponukách Zálohovanie a obnovenie.

Oficiálny gitHub TeamWin by mal obsahovať aj najnovšie ukážky stromov zariadení pre zariadenia, ktoré majú oficiálny port TWRP. GitHub TeamWin nájdete TU .

Po synchronizácii Omni alebo CM a nastavení vlajok TWRP by ste mali vytvoriť zdroj ./build/envsetup.sh

A budete chcieť zariadenie „obedovať“, aby ste mohli robiť napríklad „obed omni_hammerhead.eng“.

Po úspešnom obede bude väčšina zariadení používať tento príkaz:

Musíte nahradiť # in –j # počtom jadier +1. Takže ak máte dvojjadro, je to –j3, štvorjadro bude –j5 atď. Nahraďte # číslom jadra +1, takže ak máte dvojjadro, je to -j3 a štvorjadro sa stáva -j5 atď.

Toto budú vyžadovať aj typické zariadenia Samsung:

Je to tak preto, lebo väčšina zariadení Samsung obsahuje obnovu ako ďalší disk Ramdisk v batožinovom priestore, namiesto samostatného oddielu na obnovenie (ktorý používa väčšina ostatných zariadení).

Odteraz by ste mali mať pre svoje zariadenie zostavený TWRP a dúfajme, že to bude fungovať v prostredí emulátora. Najskôr by ste mali vždy otestovať svoj port TWRP v prostredí emulátora, aby ste neriskovali znehodnotenie zariadenia.
Stiahnite si túto sadu konfiguračných súborov zariadenia.

Zostavte obraz obnovy pomocou týchto súborov zariadenia. V súprave Android SDK kliknite na Nástroje -> Spravovať AVD. Kliknite na Nový. Nastavte to takto:

Potom kliknite na tlačidlo OK.

Keď máte AVD a obraz na obnovenie, môžete v emulátore zaviesť TWRP prehľadaním do priečinka android-sdk / tools a spustiť tento príkaz:

Upozorňujeme, že ADB nefunguje okamžite. Asi 10 až 15 sekúnd po dokončení bootovania TWRP bude ADB online. ADB začíname cez init.rc, takže aj keď sa TWRP nepodarí zaviesť kvôli nejakej chybe kódu, ktorú ste mohli urobiť, ADB by mala stále fungovať. Užite si to!

Zariadenia TWRP a A / B (kredity pre TeamWin):

Z hľadiska TWRP sa A / B zariadenia príliš nelíšia od bežných zariadení, zdá sa však, že vývojári sa pri práci na týchto zariadeniach ostýchajú. Pokúsim sa vniesť do tejto veci trochu svetla a dúfam, že to poslúži ako pomôcka pri prenose TWRP na A / B zariadenia.

Po prvé, poďme pochopiť, čo je A / B zariadenie a v čom je iný. Zariadenia A / B majú duplikáty mnohých oddielov v zariadení. A / B zariadenie má 2x systémové oddiely, 2x zavádzacie oddiely, 2x oddiely dodávateľov, 2x modemové / firmvérové ​​oddiely atď. Súčasne sa používa iba jeden slot. Počas skorého bootovania prvé fázy bootloaderu načítajú malé množstvo dát nazývaných BCB alebo Bootloader Control Block a rozhodnú sa, či sa majú bootovať oddiely A alebo B. Keď je k dispozícii aktualizácia OTA, údaje z aktívneho slotu sa skopírujú z neaktívneho slotu a opravia / aktualizujú. Napríklad, ak ste práve v zásuvke A, vaše zariadenie stiahne aktualizáciu a skopíruje existujúci systémový oddiel zo zásuvky A a opraví ju / aktualizuje novými aktualizáciami do zásuvky B. Po dokončení kopírovania a aktualizácie bude BCB sa aktualizuje a zariadenie sa reštartuje pomocou slotu B. Nabudúce, keď bude k dispozícii aktualizácia, systémový oddiel v slote B sa skopíruje do slotu A a aktualizuje sa, BCB sa aktualizuje a my sa reštartujeme do slotu A. Pri prezeraní oddielov v zariadení uvidíte niečo také:

Vo vyššie uvedenom zozname si pozrite oddiely s duálnym bootovaním, systémový systém a server dodávateľa, ale iba jeden oddiel užívateľských údajov.

Aj keď si myslím, že technicky neexistujú žiadne požiadavky, všetky doteraz dodávané zariadenia A / B nemajú žiadny samostatný oddiel na obnovenie. Namiesto toho bootovací obraz obsahuje obnovu na svojom ramdisku. Dôležité je vedieť, že bootovací obraz teraz obsahuje aj obnovu. Pre úplnosť je systémový oddiel úplným koreňovým súborovým systémom. Ak sa počas bootovania hovorí, že jadro má bootovať z obnovy, rozbalí ramdisk v bootovacej oblasti. Ak bootloader nehovorí jadru o zavedení na zotavenie, potom jadro pripojí príslušný systémový oddiel (A alebo B), pretože systémový oddiel je úplným koreňovým súborovým systémom. To znamená, že systémový oddiel na týchto zariadeniach je pripojený k / namiesto k / system a systémový oddiel obsahuje všetky súbory, ktoré by sa normálne nachádzali v zavádzacom obraze ramdisk a v podpriečinku / system.

Z hľadiska TWRP existujú 3 veci, ktoré musíte urobiť pre A / B zariadenie. Najprv musíte nastaviť

Kód:

Nakoniec, akonáhle sa dostanete do TWRP, pravdepodobne sa budete chcieť ubezpečiť, že bootctl hal-info reaguje správne bez chýb. Na správne fungovanie binárny súbor bootctl zvyčajne vyžaduje vlastnú knižnicu alebo dokonca niekoľko služieb. Ak bootctl nefunguje správne, nebudete tiež môcť správne prepínať sloty v TWRP.

Okrem nastavenia

Kód:

AB_OTA_UPDATER: = pravda

možno budete chcieť nastaviť:

Kód:

BOARD_USES_RECOVERY_AS_BOOT: = pravda

BOARD_BUILD_SYSTEM_ROOT_IMAGE: = pravda

Ak nastavíte

Kód:

BOARD_USES_RECOVERY_AS_BOOT: = pravda

potom make recoveryimage už nebude fungovať a namiesto toho budete musieť urobiť bootimage. Neodporúčam nastavovať žiadny z týchto príznakov pre stromy vytvárania iba pre TWRP. Tieto príznaky sa pravdepodobne budú vyžadovať u vývojárov, ktorí vytvárajú úplné pamäte ROM pre A / B zariadenia.

Inštalácia / blikanie TWRP na A / B zariadeniach:

Pretože všetky známe zariadenia A / B nemajú samostatný oddiel na obnovenie, budete nakoniec musieť do bootovacieho oddielu prebliknúť TWRP. Na zariadeniach Pixel 1 a 2 používame rýchle spustenie na dočasné spustenie TWRP bez blikania TWRP. Potom dodávame zips, ktorý používateľom umožní blesk TWRP do oboch slotov. Jeden z týchto zipov si môžete stiahnuť z našej webovej stránky a podľa potreby aktualizovať zip, aby podporoval vaše zariadenia. Nakoniec do TWRP pridáme nástroje, ktoré používateľom umožnia bleskové zotavenie na týchto zariadeniach bez potreby použitia zipsov.

Nedávno som pracoval na telefóne Razer Phone. Telefón Razer bohužiaľ nepodporuje rýchle spustenie systému. Namiesto toho musia používatelia určiť svoj aktuálne aktívny bootovací slot pomocou

Kód:

dostať sa do TWRP. Po získaní TWRP potom môžu prejsť na stránku reštartu a vrátiť sa späť na svoj pôvodne aktívny slot, vytvoriť zálohu a potom nainštalovať TWRP. Používanie neaktívneho slotu umožňuje používateľom získať dobrú a neupravenú zálohu svojho zariadenia pred inštaláciou TWRP.

Doplňujúce Poznámky:

Ak chcete získať TWRP oficiálne podporované pre vaše zariadenie aby ho bolo možné automaticky nainštalovať pomocou aplikácie TWRP, a naozaj to chcete urobiť, aby si ostatní vlastníci toho istého zariadenia mohli vychutnať oficiálnu podporu TWRP, a je to príjemné, musíte nasledujúce informácie poslať na adresu TeamWin:

  1. Konfiguračné súbory zariadenia na kompiláciu TWRP zo zdroja pre vaše zariadenie - znovu nezabalte súbor recovery.img ručne , musia ho zostaviť zo zdroja.
  2. Keď TeamWin vytvorí kópiu TWRP, zašle vám ju na overenie - po overení vytvorí TeamWin funkčný obraz pre vaše zariadenie a pridá ho do oficiálnej aplikácie TWRP.
13 minút prečítania