Paano mag-DIY Port TWRP para sa Android

, maaari mong subukang magtrabaho kasama ang isang mas maliit na puno, tulad nito Minimal Manifest na TWRP . Gayunpaman, maaaring may mga sitwasyon kung saan kakailanganin mo ng maraming mga repos kaysa sa pinapayagan ng manipest na ito.



Pangunahing tala bago i-compile: Kung nagdagdag o nagbago ng anumang mga flag, kakailanganin mong linisin (o gawing clobber) bago muling kumpunihin, kung hindi man ay hindi isasama ang iyong mga pagbabago sa bandila!

Matapos mong magkaroon ng TWRP source code, kailangan naming baguhin ang ilan sa mga build flag para sa iyong tukoy na aparato. Hanapin ang BoardConfig.mk para sa iyong aparato - karaniwang matatagpuan ito sa mga aparato / tagagawa / codename (halimbawa, mga aparato / lge / hammerhead / BoardConfig.mk)



Kailangang isama ng config ng board ang mga setting ng arkitektura at platform - karaniwang kasama na ang mga ito kung gumagamit ka ng config ng aparato ng iba. Ngunit kung lumikha ka ng iyong sarili, kakailanganin mong idagdag ang mga ito. Ito ay dahil kung wala sila, ang recovery boot ay maaaring segfault at i-flash lang nito ang logo ng TeamWin sa iyong screen nang paulit-ulit.



Ang mga watawat ay dapat ilagay sa ilalim ng BoardConfig.mk, sa ilalim ng heading ng #twrp



Para kay lahat mga aparato, kailangan mong turuan ang TWRP kung aling tema ang gagamitin. Ginamit ang watawat na TW_THEME sa halip na ang mas matandang DEVICE_RESOLUTION na bandila, na nangangahulugang gumagamit ng pag-scale ang TWRP upang mabatak ang anumang tema.

Ang iyong mga pagpipilian ay: portrait_hdpi, portrait_mdpi, landscape_hdpi, landscape_mdpi, at watch_mdpi. Para sa portrait mode malamang na gusto mo ang tema ng hdpi ng 720 × 1280 at mas mataas, ngunit para sa mga aparatong pang-landscape ay pumunta sa 1280 × 720 at pataas.

Kaya't ganito ang hitsura ng iyong build flag section + flag ng tema:



#twrp

TW_THEME: = portrait_hdpi

Ang ilang karagdagang mga flag ng build na nais mong isama sa seksyong ito (mga kredito sa mga forum ng XDA):

  • RECOVERY_SDCARD_ON_DATA: = true (nagbibigay-daan ito sa tamang paghawak ng / data / media sa mga aparato na mayroong folder na ito para sa imbakan (karamihan sa Honeycomb at mga aparato na orihinal na naipadala sa ICS tulad ng Galaxy Nexus) Hindi kinakailangan ang flag na ito para sa mga ganitong uri ng mga aparato. Kung ikaw huwag tukuyin ang watawat na ito at hindi rin nagsasama ng anumang mga sanggunian sa / sdcard, / internal_sd, / internal_sdcard, o / emmc sa iyong fstab, pagkatapos ay awtomatiko naming ipalagay na ang aparato ay gumagamit ng tinulad na imbakan.)
  • BOARD_HAS_NO_REAL_SDCARD: = true - hindi pinagana ang mga bagay tulad ng pagkahati ng SD card at maaaring makatipid sa iyo ng ilang puwang kung hindi umaangkop ang TWRP sa iyong patition sa pag-recover
  • TW_NO_BATT_PERCENT: = true - hindi pinagana ang pagpapakita ng porsyento ng baterya para sa mga aparato na hindi suportado ito nang maayos
  • TW_CUSTOM_POWER_BUTTON: = 107 - pasadyang mapa ang power button para sa lockscreen
  • TW_NO_REBOOT_BOOTLOADER: = true - inaalis ang pindutan ng reboot bootloader mula sa reboot menu
  • TW_NO_REBOOT_RECOVERY: = true - aalisin ang pindutan ng pag-recover muli mula sa reboot menu
  • RECOVERY_TOUCHSCREEN_SWAP_XY: = true - nagpapalit ng pagmamapa ng mga pagpindot sa pagitan ng X at Y axis
  • RECOVERY_TOUCHSCREEN_FLIP_Y: = true - i-flip ang mga halaga ng touchscreen ng axis
  • RECOVERY_TOUCHSCREEN_FLIP_X: = totoo - i-flip ang x mga halaga ng touchscreen ng axis
  • TWRP_EVENT_LOGGING: = true - nagbibigay-daan sa pag-log ng kaganapan ng touch upang matulungan ang pag-debug ng mga isyu sa touchscreen (huwag iwanan ito para sa isang paglabas - napupuno nito ang iyong logfile nang napakabilis)
  • BOARD_HAS_FLIPPED_SCREEN: = true - Binaligtad ang screen para sa mga screen na na-mount baligtad

Ang mga karagdagang flag ng build ay matatagpuan sa pamamagitan ng pag-sketch sa pamamagitan ng mga file ng Android.mk sa mapagkukunan ng pagbawi, ngunit karaniwang hindi sila ginagamit kaya't walang point sa pagdodokumento sa kanila.

Paggamit ng Pag-recover.Fstab

Ang TWRP 2.5 at mas mataas ay may suporta para sa mga bagong tampok sa recovery.fstab - kapansin-pansin ang kakayahang pahabain ang mga pag-andar ng backup / ibalik ng TWRP. Hindi mo kailangang magdagdag ng mga flag ng fstab, dahil ang karamihan sa mga pagkahati ay awtomatikong hahawakan.

Sinusuportahan lamang ng TWRP ang mga v2 fstab sa bersyon 3.2.0 at mas mataas - sa mas matandang mga bersyon ng TWRP, kakailanganin mong gamitin ang lumang format ng fstab. Narito ang isang halimbawa ng TWRP fstab para sa isang Galaxy S4:

Upang mapakinabangan ang pagiging tugma sa iyong partikular na build tree, maaari kang lumikha ng isang twrp.fstab at gamitin ang PRODUCT_COPY_FILES upang ilagay sa> atbp> twrp.fstab.

Kapag naglulunsad ang TWRP at nakakita ng twrp.fstab sa ramdisk, papalitan itong pangalan ng> etc> recovery.fstab.bak - karaniwang pinalitan nito ang fstab mula sa iyong aparato gamit ang TWRP fstab, na nagpapalawak ng pagiging tugma.

Halimbawa ng code:

PRODUCT_COPY_FILES + = aparato / lge / hammerhead / twrp.fstab: pagbawi> ugat> atbp> twrp.fstab

Ang fstab sa TWRP ay maaaring maglaman ng ilang mga 'watawat' para sa bawat pagkahati na nakalista sa fstab.

Ang mga watawat na ito ay idinagdag hanggang sa wakas ng listahan ng pagkahati sa fstab, pinaghiwalay ng puting puwang / puwang / tab. Maaapektuhan lamang ng watawat ang pagkahati na iyon, ngunit walang iba. Ang mga watawat ay pinaghihiwalay ng mga semicolon. Narito ang ilang halimbawang code:

Kaya suriin natin ito nang paunti-unti. Ang watawat dito ay magbibigay ng isang ipinapakitang pangalan ng 'Micro SDcard'. Gagampanan ng watawat ng wipeingui ang pagkahati na ito para sa pag-wipe sa menu ng Advanced Wipe. Ipinapahiwatig ng naaalis na watawat na ang pagkahati na ito ay hindi laging naroroon, na pipigilan na maipakita ang mga error sa pag-mount.

Isang kumpletong listahan ng mga watawat (mga kredito sa TeamWin) :

  • naaalis - Ipinapahiwatig na ang pagkahati ay maaaring hindi naroroon na pumipigil sa mga error sa pag-mount mula sa ipinakita sa panahon ng boot
  • pag-iimbak - Ipinapahiwatig na ang pagkahati ay maaaring magamit bilang imbakan na ginagawang magagamit ang pagkahati bilang imbakan para sa pag-backup, ibalik, i-install ang zip, atbp.
  • settingstorage - isang partisyon lamang ang dapat itakda bilang imbakan ng mga setting, ang pagkahati na ito ay ginagamit bilang lokasyon para sa pag-iimbak ng mga setting ng file ng TWRP
  • canbewiped - Ipinapahiwatig na ang pagkahati ay maaaring punasan ng back-end system, ngunit maaaring hindi nakalista sa GUI para sa pagpahid ng gumagamit
  • userrmrf - Ino-override ang normal na uri ng format ng pagpunas at pinapayagan lamang na maalis ang pagkahati gamit ang utos na rm -rf
  • backup = - dapat na magtagumpay sa pamamagitan ng katumbas na pag-sign, kaya backup = 1 o backup = 0, 1 ay nagpapahiwatig na ang pagkahati ay maaaring nakalista sa backup / ibalik ang listahan habang tinitiyak ng 0 na ang pagkahati na ito ay hindi lalabas sa listahan ng backup.
  • pagpunas - Ginagawa ang pagkahati sa GUI upang payagan ang gumagamit na piliin ito para sa pagpunas sa advanced na menu ng pag-wipe
  • wipeedfactoryreset - Ang pagkahati ay pupunasan sa panahon ng pag-reset ng pabrika
  • ignoreblkid - Ginagamit ang blkid upang matukoy kung anong file system ang ginagamit ng TWRP, ang watawat na ito ay magdudulot sa TWRP na laktawan / huwag pansinin ang mga resulta ng blkid at gamitin ang file system na tinukoy sa fstab lamang
  • retainlayoutversion - sanhi ng TWRP na panatilihin ang .layoutversion file sa / data sa mga aparato tulad ng Sony Xperia S na uri ng paggamit / data / media ngunit mayroon pa ring hiwalay / sdcard na pagkahati
  • symlink = - nagiging sanhi ng TWRP upang magpatakbo ng isang karagdagang utos ng mount kapag tumataas ang pagkahati, karaniwang ginagamit sa / data / media upang lumikha / sdcard
  • ipakita = - nagtatakda ng isang pangalan ng pagpapakita para sa pagkahati para sa listahan sa GUI
  • storagename = - nagtatakda ng isang pangalan ng imbakan para sa pagkahati para sa listahan sa listahan ng imbakan ng GUI
  • backupname = - Nagtatakda ng isang backup na pangalan para sa pagkahati para sa listahan sa listahan ng backup / ibalik ang GUI
    haba = - karaniwang ginagamit upang magreserba ng walang laman na puwang sa dulo ng pagkahati / data para sa pag-iimbak ng decryption key kapag nariyan ang buong pag-encrypt ng aparato ng Android, hindi ang pagtatakda nito ay maaaring humantong sa kawalan ng kakayahang i-encrypt ang aparato
  • canencryptbackup = - 1 o 0 upang paganahin / huwag paganahin, ginagawang naka-encrypt ang TWRP ng backup ng pagkahati na ito kung pipiliin ng gumagamit ang pag-encrypt (nalalapat lamang sa mga pag-backup ng tar, hindi mga imahe)
  • userdataencryptbackup = - 1 o 0 upang paganahin / huwag paganahin, ginagawang naka-encrypt lamang ang TWRP na bahagi ng userdata ng pagkahati na ito, ang ilang mga subfuldes tulad ng / data / app ay hindi ma-encrypt upang makatipid ng oras
  • subpartisyon ng = - Dapat na magtagumpay sa pamamagitan ng katumbas na pag-sign at ang landas ng pagkahati ito ay isang subpartition ng. Ang isang subpartition ay itinuturing na 'bahagi' ng pangunahing pagkahati kaya halimbawa, awtomatikong ginagawang / datadata ng TWRP ang isang subpartisyon ng / data. Nangangahulugan ito na ang / datadata ay hindi lalabas sa mga listahan ng GUI, ngunit / ang datadata ay tatanggalin, mai-back up, maibalik, mai-mount, at hindi ma-install kahit kailan ang mga pagpapatakbo na iyon ay isinasagawa sa / data.

Ang isang mahusay na halimbawa ng paggamit ng mga subpartition ay ang 3x efs na mga partisyon sa LG Optimus G:

Pinagsama nito ang lahat ng 3 mga partisyon sa isang solong entry na 'EFS' sa TWRP GUI na pinapayagan ang lahat na ma-back up at maibalik nang magkasama sa ilalim ng isang solong pagpasok.

Sa TWRP 3.2.0 at mas mataas na gumagamit ng V2 Fstab, ikaw hindi kailangang magdagdag ng anumang mga flag ng build . Ang suporta ng V2 Fstab ay awtomatiko. Sinusuportahan din ng V2 Fstab ang mga wildcard (ang * simbolo) na maaaring maging kapaki-pakinabang para sa USB OTG at mga micro-SD card na may maraming partisyon. Maaari mo ring magpatuloy na gamitin ang format na V1 Fstab, at ganap na posible na gamitin ang parehong mga uri ng V1 at V2 sa parehong Fstab.

Halimbawa, narito ang isang linya ng V1 Fstab na may wildcard na nilalayon para sa isang USB OTG:

Narito ang isang linya ng V2 Fstab para sa parehong aparato na nakakamit ang parehong resulta:

Bilang karagdagan maaari mong isama ang iba pa twrp.flags na gumagamit ng format na V1 Fstab, at maaari silang magamit upang madagdagan ang V2 Fstab na may mga flag na TWRP, mga karagdagang partisyon na hindi kasama sa V2 Fstab, o mga overriding setting sa V2 Fstab.

Halimbawa, ang isang aparato na Huawei ay maaaring magkaroon ng V2 fstab na ito sa etc recovery.fstab:

Maaari rin itong may kasamang mga flag na ito:

Kaya narito, ang unang dalawang linya sa TWRP. Mga Larawan ay idaragdag ang Boot at ang mga partisyon ng Pag-recover, kung saan ay hindi naroroon sa V2 Fstab. Pagkatapos, ang linya ng / cust sa TWRP.flags ay magtuturo sa TWRP na payagan ang end-user na i-backup ang (cust) partition, at bigyan ito ng isang display name.

Ang partisyon ng / misc ay naroroon sa twrp.flags, at ang / oeminfo na pagkahati ay nagtuturo sa TWRP na payagan din ang pag-back up at bigyan ito ng isang display name.

Kailangan namin ang linya ng / data dahil maraming mga aparato ng Huawei ang naka-encrypt, ngunit gumagamit ng mga espesyal na Huawei binary - sa gayon, ginagamit namin ang mga binary ng Huawei upang awtomatikong mai-decrypt ang aparato sa Recovery Mode. Kaya narito ang linya ng / data ay magtuturo sa TWRP na gumamit / dev / block / dm -0, at hindi / dev / block / bootdevice / by-name / userdata, na karaniwang ginagamit para sa 'tamang' pag-mounting '.

Panghuli mayroong / system_image, upang ang TWRP ay magsasama ng isang pagpipilian upang lumikha ng isang imahe ng system sa mga menu ng Pag-backup at Ibalik.

Ang opisyal na TeamWin github ay dapat ding maglaman ng pinakabagong mga halimbawa ng mga puno ng aparato para sa mga aparato na may isang opisyal na port ng TWRP. Ang TeamWin github ay maaaring matagpuan DITO .

Matapos ma-sync ang Omni o CM, at na-set up mo ang iyong mga flag na TWRP, dapat kang bumuo ng isang mapagkukunan ./ build/envsetup.sh

At gugustuhin mong 'tanghalian' ang aparato, upang magagawa mo ang isang bagay tulad ng 'tanghalian omni_hammerhead.eng'.

Matapos ang isang matagumpay na tanghalian, ang karamihan sa mga aparato ay gagamit ng utos na ito:

Kailangan mong palitan ang # in –j # ng pangunahing bilang ng +1. Kaya't kung mayroon kang isang dalawahang pangunahing ito ay –j3, isang quadcore ay magiging –j5, atbp. Palitan ang # sa pangunahing bilang ng +1, kaya't kung mayroon kang isang dalawahang pangunahing ito ay -j3 at isang quad core ay magiging -j5, atbp.

Gayundin, kakailanganin ito ng mga tipikal na aparato ng Samsung:

Ito ay dahil ang karamihan sa mga aparatong Samsung ay may kasamang pagbawi bilang isang labis na ramdisk sa boot, sa halip na sa isang hiwalay na pagkahati ng pagbawi (na ginagamit ng karamihan sa iba pang mga aparato).

Sa ngayon, dapat ay mayroon kang TWRP na naipon para sa iyong aparato at sana ay gumana ito sa isang emulator environment. Dapat mong palaging subukan ang iyong port sa TWRP sa isang emulator na kapaligiran, upang hindi mo ipagsapalaran ang pag-borking ng iyong aparato.
I-download ang hanay ng mga file ng pagsasaayos ng aparato.

Bumuo ng isang recoveryimage gamit ang mga file ng aparato. Sa Android SDK, mag-click sa Mga Tool -> Pamahalaan ang mga AVD. Mag-click Bago. I-set up ito bilang sumusunod:

Pagkatapos i-click ang OK.

Kapag mayroon ka ng iyong AVD at iyong recoveryimage, maaari kang mag-boot ng TWRP sa emulator sa pamamagitan ng pag-browse sa iyong android-sdk / mga folder ng tool at patakbuhin ang utos na ito:

Tandaan na hindi gumana kaagad ang ADB. Mga 10 hanggang 15 segundo matapos matapos ang pag-boot ng TWRP, online ang ADB. Sinimulan namin ang ADB sa pamamagitan ng init.rc kaya kahit na nabigo ang TWRP na mag-boot dahil sa ilang uri ng error sa code na maaaring nagawa mo, dapat pa ring gumana ang ADB. Mag-enjoy!

Mga aparatong TWRP at A / B (mga kredito sa TeamWin):

Mula sa pananaw sa TWRP, ang mga A / B na aparato ay hindi gaanong naiiba mula sa mga regular na aparato, ngunit tila nahihiya ang mga developer sa pagtatrabaho sa mga aparatong ito. Susubukan kong magbigay ng ilaw sa paksang ito at inaasahan kong magsilbing gabay ito sa paglipat ng TWRP sa mga A / B device.

Una, unawain natin kung ano ang isang A / B aparato at kung paano ito naiiba. Ang mga A / B na aparato ay may mga duplicate ng maraming mga pagkahati sa aparato. Ang isang A / B aparato ay mayroong 2x systempartitions, 2x boot partitions, 2x vendor partitions, 2x modem / firmware partitions, atbp. Isang slot lamang ang ginagamit nang paisa-isa. Sa panahon ng maagang pag-boot, ang mga unang yugto ng bootloader ay nagbasa ng ilang maliit na halaga ng data na tinatawag na BCB o Bootloader Control Block at magpasya kung i-boot ang mga A na partisyon o mga partisyon ng B. Kung magagamit ang isang pag-update ng OTA, ang data mula sa aktibong puwang ay nakopya mula sa hindi aktibong puwang at na-patch / na-update. Halimbawa, kung kasalukuyan kang nasa slot A, i-download ng iyong aparato ang pag-update at kopyahin ang umiiral na pagkahati ng system mula sa slot A at i-patch / i-update ito sa mga bagong update sa puwang B. Kapag nakumpleto ang pagkopya at pag-update, ang BCB ay na-update at ang aparato ay nag-reboot gamit ang slot B. Sa susunod na magagamit ang isang pag-update, ang pagkahati ng system sa puwang B ay kinopya sa slot A at na-update, na-update ang BCB, at nag-reboot kami sa puwang A. Kapag tinitingnan ang mga partisyon sa aparato, makakakita ka ng tulad nito:

Tandaan ang mga partisyon ng dalawahang boot, system at vendor sa listahan sa itaas, ngunit isang partisyon lamang ng userdata.

Habang walang teknikal na kinakailangan na alam ko, lahat ng mga aparato ng A / B na naipadala sa ngayon ay walang hiwalay na partisyon ng pagbawi. Sa halip, naglalaman ang imahe ng boot ng pagbawi sa ramdisk nito. Ang mahalagang bagay ay alam na ang imahe ng boot ay naglalaman din ng pagbawi. Para sa pagkakumpleto, ang pagkahati ng system ay isang buong root file system. Sa panahon ng pag-boot, kung sinabi sa kernel na mag-boot hanggang sa mabawi, aalisin nito ang ramdisk sa boot na pagkahati. Kung ang kernel ay hindi sinabi ng bootloader na mag-boot sa pagbawi, kung gayon ang kernel ay mai-mount ang naaangkop na pagkahati ng system (A o B) dahil ang pagkahati ng system ay isang buong root file system. Nangangahulugan ito na ang pagkahati ng system sa mga aparatong ito ay naka-mount sa / sa halip na sa / system at ang pagkahati ng system ay naglalaman ng lahat ng mga file na normal na nasa boot image ramdisk at isang / system subfolder.

Mula sa isang pananaw sa TWRP, mayroong 3 mga bagay na dapat mong gawin para sa isang A / B aparato. Una, kailangan mong magtakda

Code:

Panghuli, kapag nakapasok ka sa TWRP, malamang na gugustuhin mong tiyakin na ang bootctl hal-info ay tumutugon nang tama nang walang mga error. Karaniwan ang bootctl binary ay nangangailangan ng isang pagmamay-ari na silid-aklatan o kahit na isang pares ng mga serbisyo upang gumana nang tama. Kung ang bootctl ay hindi gumagana nang tama, kung gayon hindi mo magagawang lumipat ng tama ang mga puwang sa loob ng TWRP.

Bilang karagdagan sa setting

Code:

AB_OTA_UPDATER: = totoo

maaari mo ring itakda:

Code:

BOARD_USES_RECOVERY_AS_BOOT: = totoo

BOARD_BUILD_SYSTEM_ROOT_IMAGE: = totoo

Kung magtakda ka

Code:

BOARD_USES_RECOVERY_AS_BOOT: = totoo

pagkatapos ay gumawa ng recoveryimage ay hindi na gagana at sa halip ay kailangan mong gumawa ng bootimage. Hindi ko inirerekumenda ang pagtatakda ng alinman sa mga watawat na ito para sa mga gagawing puno lamang na TWRP. Ang mga watawat na ito ay marahil ay kinakailangan para sa mga developer na nagtatayo ng buong mga ROM para sa mga A / B na aparato.

Pag-install / Flashing TWRP sa mga A / B device:

Dahil ang lahat ng mga kilalang aparato ng A / B ay walang magkakahiwalay na pagkahati ng pagbawi, sa huli ay kailangan mong i-flash ang TWRP sa boot na pagkahati. Sa Pixel 1 at 2, gumagamit kami ng fastboot boot upang pansamantalang mag-boot ng TWRP nang hindi flashing ang TWRP. Kami ay pagkatapos ay nagbibigay ng isang zip upang payagan ang mga gumagamit na i-flash ang TWRP sa parehong mga puwang. Maaari mong i-download ang isa sa mga zip mula sa aming website at i-update ang zip kung kinakailangan upang suportahan ang iyong mga aparato. Sa paglaon ay magdaragdag kami ng mga tool sa TWRP upang payagan ang mga gumagamit na mag-flash ng mga recovering sa mga aparatong ito nang hindi nangangailangan na gumamit ng mga zip.

Kamakailan, nagtrabaho ako sa Razer Phone. Sa kasamaang palad ay hindi sinusuportahan ng Razer Phone ang fastboot boot. Sa halip, kailangang matukoy ng mga gumagamit ang kanilang kasalukuyang aktibong slot ng boot na ginagamit

Code:

upang makapasok sa TWRP. Kapag sa TWRP maaari silang pumunta sa pahina ng pag-reboot at baguhin pabalik sa kanilang orihinal na aktibong puwang, gumawa ng isang backup, pagkatapos ay i-install ang TWRP. Ang paggamit ng hindi aktibong puwang ay nagbibigay-daan sa mga gumagamit na makakuha ng isang mahusay, hindi nabagong pag-backup ng kanilang aparato bago i-install ang TWRP.

Mga karagdagang tala:

Kung nais mong makakuha ng TWRP opisyal na suportado para sa iyong aparato upang maaari itong awtomatikong mai-install sa TWRP app, at talagang nais mong gawin ito upang ang iba pang mga may-ari ng parehong aparato ay maaaring masiyahan sa opisyal na suporta sa TWRP at ito ang magandang gawin, kakailanganin mong ipadala ang sumusunod na impormasyon sa TeamWin:

  1. Ang mga file ng pagsasaayos ng aparato upang mag-ipon ng TWRP mula sa pinagmulan para sa iyong aparato - huwag i-repack ang isang pagbawi.img sa pamamagitan ng kamay , kailangan nilang ipunin ito mula sa pinagmulan.
  2. Matapos buuin ng TeamWin ang isang kopya ng TWRP, ipapadala nila ito sa iyo para sa pagpapatunay - sa sandaling napatunayan mo ito, bubuo ang TeamWin ng gumaganang imahe para sa iyong aparato, at idagdag ito sa opisyal na TWRP app.
13 minuto basahin