[TUTORIAL] Extended Power Menu - DXLE1 (EPeeM)

Extended Power Menu adalah manu tambahan di dalam pop up yang nongol saat kita tekan agak lama tombol power. di firmware lama kita punya 4 menu, tapi tidak di DXLE1, hanya 3 menu (ini yang bawaan stockrom). setelah 2 hari nyelemin smail yang gak saia pahami (trial error is the best answer) akibat tutor yang betebaran di dunia maya berbeda untuk DXLE1 galaxy young...

keseluruhan menu adalah sebagai berikut :
  • silent mode on/off
  • airplane mode on/of
  • data mode on/off
  • reboot
  • reboot recovery
  • reboot download mode (useless di galaxy young, sama dengan reboot hasilnya)
  • power off
langsung ajah tutornya :


BAHAN :
  • alat compile dan decompile apk (tutor gak ada di mari, cari di dokumen lain)
  • alat baksmali dan smali (tutor gak ada di mari, cari di dokumen lain)
  • notepad++ , gedit or aplikasi sejenis
  • framework-res.apk
  • android.policy.jar
  • komputer (kalo gak punya, cari aja, sapa tau nemu)
  • winrar or winzip or aplikasi sejenis
  • rokok, kopi, anker stoucth, es batu (optional tapi diperlukan)

ATURAN PAKAI :

PERTAMA :
  • ambil framework-res.apk (DXLE1) - terserah ambil darimana
  • decompile framework-res.apk
  • buat or masukin 3 gambar png ke dalam folder /res/drawable-ldpi/ berukuran 24px x 24px dengan judul "ic_lock_download" ; "ic_lock_reboot" ; "ic_lock_recovery"
  • terus buka strings.xml (/res/values/) dan tambahkan 3 strings untuk ketiga menu sebelum baris "</resources>". stringsx yg di tambahkan kek begini:
  • <string name="reboot_recovery">Recovery</string>
  • <string name="reboot_download">Download</string>
  • <string name="reboot">Reboot</string>
  • SS1 : http://s19.postimage.org/m4jla729v/ss1.png
  • save dan close strings.xml
  • compile framework-res (jangan sampe error, kalo error, ambil cermin)
  • sekarang ambil framework-res.apk hasil compilean tadi, lalu decompile sekali lagi
  • terus buka public.xml hasil decompile yg kedua (/res/values) dan liat hex codenya untuk 3 file gambar dan 3 strings yang sudah di buat tadi
  • SS2 : http://s19.postimage.org/430gce88z/ss2.png
  • SS3 : http://s19.postimage.org/rv9rnxa9v/ss3.png
  • liat yang ada dalam block line, 0x0104xxxx untuk string dan 0x0108xxxx untuk drawable (alias gambar) angka ini yang nanti kita pake. (gak harus sama dengan SS, kerna otomatis itu dibuat ama apktool or apk manager)
  • step pertama selesai, jangan lupa test framework-res.apk hasil compile pertama, untuk memastikan framework gak ada majalah.

KEDUA :
  • langkah kedua, ambil android.policy.jar (udah punya khan???)
  • decompile android.policy.jar (baksmali)
  • terus buka file GlobalAction.smali (/com/android/internal/policy/impl/)
  • di sini ada 2 layout popup power menu, yang 4 menu (termasuk data mode) dan yang 3 menu (tanpa data mode).
  • lalu cari baris ini : "new-array v0, v11, [Lcom/android/internal/policy/impl/GlobalActions$Action;" ini adalah layout untuk 4 menu
  • kemudian liat baris ini : "new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;" ini adalah layout untuk 3 menu
  • untuk DXLE1, memakai layout 3 menu, jadi nanti kita mod layout tersebut
  • di atas baris layout 3 menu ""new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;" ada baris "const/4 v0, 0x3" rubah menjadi "const/4 v0, 0x6" (bila gak pake menu reboot download) atau "const/4 v0, 0x7" bila mau pake menu download.
  • copy baris2 berikut yang berada di layout 4 menu (copy yang di block ajah), letaknya di bawah baris layout 4 menu "new-array v0, v11, [Lcom/android/internal/policy/impl/GlobalActions$Action;"
  • SS4 : http://s19.postimage.org/tbla62d6r/ss4.png
  • kemudian replace baris2 yang berada di bawah layout 3 menu, dibawah baris  "new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;"
  • SS 5 : http://s19.postimage.org/somdgjgar/ss5.png
  • sampai langkah ini, dirimu sudah punya 4 menu power, lanjut lagi
  • cari baris ini di layout kedua (inget ini di baris yang barusan kita replace)
  • SS6 : http://s19.postimage.org/vk42159oj/ss6.png
  • lalu dibawahnya copikan baris ini :
--------------------------------------------------------------------------------
  • const/4 v1, 0x3

  • new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$9;

  • const v3, 0x1080404

  • const v4, 0x10404d5

  • invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$9;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V

  • aput-object v2, v0, v1
--------------------------------------------------------------------------------
  • const/4 v1, 0x4

  • new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$10;

  • const v3, 0x1080405

  • const v4, 0x10404d3

  • invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$10;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V

  • aput-object v2, v0, v1
--------------------------------------------------------------------------------
  • const/4 v1, 0x5

  • new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$11;

  • const v3, 0x1080403

  • const v4, 0x10404d4

  • invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$11;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V

  • aput-object v2, v0, v1
--------------------------------------------------------------------------------
  • di atas adalah bagian2 per menu, ada 3 bagian (include reboot download) kalo cuma mau 2 bagian, bagian ketiga gak usah di copi. antar baris ada baris kosong yah, jangan sampe enggak.
  • lihat baris "const/4 v1, 0x3" baris ini berurut dari atas, jangan sampe sama
  • "const v3, 0x108xxxx" adalah source gambar, lihat public.xml tadi, dan ganti sesuai hex yang ada. misal kita punya kode hex "0x01080404" untuk reboot maka untuk dismali, buang angka 0 dibelakang tanda "kali or x" sehingga jadi "0x1080404"
  • "const v4, 0x104xxxx" adalah source gambar, lihat public.xml tadi, dan ganti sesuai hex yang ada. misal kita punya kode hex "0x010404d5" untuk reboot maka untuk dismali, buang angka 0 dibelakang tanda "kali or x" sehingga jadi "0x10404d5"
  • urutannya hex code, reboot di bagian 1, reboot recovery di bagian 2, reboot download di bagian 3. dan harus sesuai antara string dan drawable, wokeh bebs..
  • "GlobalActions$9" ini adalah pembacaan ke file lain, lihat di folder impl, angka berapa yang paling besar, kalo angka 9 udah ada maka gunakan angka yang gak ada di dalam folder impl. dan bagian2 tersebut gak sama, punya file masing2 nantinya (file ini belum ada, nanti akan kita buat)
  • tambahan, garis ------ gak usah dikopi, itu cuma nunjukin per bagian ajah
  • sekarang liat baris dibawahnya, yaitu "const/4 v1, 0x3", di atas baris "new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$4;" . ganti angkanya sesuai urutan bagian di atasnya. kalo pake menu download barisnya jadi "const/4 v1, 0x6" kalo gak pake menu download jadi "const/4 v1, 0x5"
  • selesai edit file GlobalAction.smali, save n close

KETIGA :
  • copi file "GlobalAction$4.smali" (/com/android/internal/policy/impl/)" dan rename jadi "GlobalAction$9.smali" (atau angka selanjutnya setelah angka terbesar di dalam folder impl)
  • buka file "GlobalAction$9.smali" dan replace semua kata "GlobalAction$4" menjadi "GlobalAction$9"
  • kemudian lihat baris dalam SS7 ini : http://s19.postimage.org/vldzukbib/ss7.png
  • replace kedua baris tersebut dengan baris ini
--------------------------------------------------------------------------------
  • const/4 v1, 0x1

  • const-string p0, "now"

  • invoke-static {v0, p0, v1}, Lcom/android/internal/app/ShutdownThread;->reboot(Landroid/content/Context;Ljava/lang/String;Z)V
--------------------------------------------------------------------------------
  • simpan dan close file "GlobalAction$9.smali"
  • copi file "GlobalAction$9.smali" dan rename jadi "GlobalAction$10.smali" lalu buka file "GlobalAction$10.smali"
  • replace "GlobalAction$9" menjadi "GlobalAction$10"
  • replace [ const-string p0, "now" ] menjadi [ const-string p0, "recovery" ] --- (lihat baris kedua di atas)
  • simpan dan close file "GlobalAction$10.smali"
  • bila mau pake menu download, copi "GlobalAction$10.smali" dan rename jadi "GlobalAction$11.smali"
  • replace "GlobalAction$10" menjadi "GlobalAction$11"
  • replace [ const-string p0, "recovery" ] menjadi [ const-string p0, "download" ] --- (lihat baris kedua di atas)
  • simpan dan close file "GlobalAction$11.smali"
  • lakukan compile (smali) terhadap folder tersebut yang udah kita edit, keluarannya nanti file berextension *.dex dan rename jadi classes.dex , gak usah rename kalo keluarannya udah classes.dex
  • buka android.policy.jar dengan menggunakan winrar, winzip or aplikasi sejenis, lalu drag n replace classes.dex di dalamnya dengan file hasil compilan tadi.

KEEMPAT :
  • langkah keempat adalah install kedua file tersebut.
  • flash framework-res.apk dan android.policy.jar hasil moding ke HH melalui CWM.
  • you have EPeeM, wekekekeke...
  • semoga gak pusing bacanya tutor dari aku si noobs yah um tante, belepotan harap maklum. namanya noobs...
  • terima kasih sudah mau membaca, pernyataan dan masalah, silahkan di koment.

by : zecn@illegal-dev

CREDIT & SOURCE (hehehe, hampir lupa)
  • http://forum.xda-developers.com/showthread.php?t=1866592
  • http://forum.xda-developers.com/showthread.php?t=811532
  • http://forum.xda-developers.com/showthread.php?t=811532
  • http://forum.xda-developers.com/showthread.php?t=1600455
  • http://forum.xda-developers.com/showthread.php?t=1169443
  • http://www.galaxys-team.fr/viewtopic.php?f=6&t=14562
  • mastah melky n core n catur yang udah ngeracun sample EPM yang bootloop saat di coba di DXLE1 (keknya beda base ROM) wkwkwkkwwkw

Comments