Extended Power Menu (EPM) adalah menu tambahan yang ada pada menu shutdown atau ketika kita menekan lama pada tombol power. Tutorial ini akan menjelaskan bagaimana caranya menambahkan EPM. Untuk basic firmware yang dipakai adalah Stockrom deodexed DXLK1 namun tutorial ini tetap bisa dipraktekan di semua firmware, termasuk di rom yg udah make custom rom ataupun theme. Karena EPM bawaan DXLK1 ada 4, jadi kita akan coba menambahkan 3 menu lagi yaitu reboot, recovery, dan screenshot.
!! DON'T MIRROR LINK !!
!! SEDIA BACKUP SEBELUM BOOTLOOP !!
Alat-alat yang dibutuhkan :
1. PC/Laptop
2. APK Multi Tool
3. Notepad++
4. Smali untuk ScreenCapture (download di sini : http://db.tt/KOP7jWoj)
5. Pengalaman compile apk
6. Framework-res.apk dan android.policy.jar (ambil dari /system/framework/ trus taro di folder \APK-Multi-Tool\place-apk-here-for-modding\ )
7. 7zip, WinRAR atau aplikasi kompresi sejenis.
8. 4 Gambar berformat png buat icon reboot, recovery, dan Screenshot berukuran 24x24px.
Rename jadi :
- ic_lock_reboot.png for reboot menu
- ic_lock_recovery.png to enter recovery
- ic_lock_download.png for download Mode
- ic_lock_skrinsyot for screenshot menu
Tutorial :
=== MISSION 1 Membuat android.policy.jar agar bias decompile menggunakan APK Multi Tool ===
- Klik kanan pada android.policy.jar dan pilih Extract to android.policy/
- Buka folder android.policy hasil extrak tadi, di dalamnya akan ada folder META-INF dan file classes.dex
- Sorot/blok kedua file tsb -> klik kanan -> Add to Archive -> Pilih format Archive ZIP -> Rename filenya jadi android.policy.apk -> OK
- Kemudian, copy android.policy.apk ke folder place-apk-here-for-modding.
- Mission 1 Completed
===== MISSION 2 Compile framework-res.apk =====
1. Buka Script.bat
2. Pilih 24 trus enter. Pilih framework-res.apk dan enter lagi.
3. Pilih 9 buat decompile.
4. Copy 4 icon yang udah disiapin tadi ke \APK-Multi-Tool\projects\framework-res.apk\res\drawable-ldpi\
5. Buka folder values. Edit strings.xml menggunakan notepad++. Tambahkan kode ini di atas </resources>
<string name="reboot_recovery">Recovery</string>
<string name="reboot">Reboot</string>
<string name="ic_skrinsyot">ScreenCapture</string>
SS 1 : http://s7.postimg.org/ndq9aw7m3/epm1.png
6. Save strings.xml and close.
7. Recompile framework-res.apk. Pilih 11 di script.bat
8. Di folder keep hapus resources.arsc dan folder drawable-ldpi
9. Hapus framework-res.apk yang ada di folder place-apk-here-for-modding. Dan rename System_framework-res.apk jadi framework-res.apk.
10. Decompile lagi framework-res.apk dan buka /values/public.xml
11. Cari kode hexnya untuk 4 gambar dan 3 strings tadi.
SS 2 : http://s7.postimg.org/aaz85d6rv/epm2.png
Dan
SS 3 : http://s7.postimg.org/tu3teq5jf/epm3.png
Liat typenya. Kalau drawable brarti buat gambar. Kalau string brarti ya buat strings.
12. Mission 2 Completed
===== MISSION 3 Compile android.policy.apk =====
1. Buka Script.bat (lagi)
2. Pilih 24 trus enter. Pilih android.policy.apk dan enter lagi.
3. Pilih 9 buat decompile.
4. Buka file GlobalActions.smali di \APK-Multi-Tool\projects\android.policy.apk\smali\com\android\internal\policy\impl\
5. lalu cari baris ini :"new-array v0, v11, [Lcom/android/internal/policy/impl/GlobalActions$Action;" ini adalah layout untuk 4 menu.
6. kemudian liat baris ini "new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;" ini adalah layout untuk 3 menu.
7. Untuk DXLK1, memakai layout 4 menu, jadi nanti kita mod layout yang "new-array v0, v11, [Lcom/android/internal/policy/impl/GlobalActions$Action;"
8. Cari kode .method private createDialog()Landroid/app/AlertDialog;
9. Ubah kode const/4 v11, 0x4 jadi const/4 v11, 0x7
SS 4 : http://s7.postimg.org/gegsp9x1n/epm4.png
10. Cari kode const/4 v1, 0x3. Blok Seperti gambar di bawah ini.
SS 5 : http://s1.postimg.org/jukzr9a2n/epm5.png
Kemudian Hapus.
SS 6 : http://s7.postimg.org/sy7bz9vuz/epm6.png
11. Copy kode ini di bekas kode yang dihapus tadi.
===================START===================
const/4 v1, 0x3
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$11;
const v3, 0x10803ef
const v4, 0x10404ef
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
const/4 v1, 0x4
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$12;
const v3, 0x10803f2
const v4, 0x10404ee
invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$12;-><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$13;
const v3, 0x10803f3
const v4, 0x10404ed
invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$13;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
aput-object v2, v0, v1
const/4 v1, 0x6
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$4;
const v3, 0x1080030
const v4, 0x1040123
invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$4;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
aput-object v2, v0, v1
===================STOP===================
Sehingga hasilnya akan seperti ini
SS 7 : http://s7.postimg.org/cbprq72x7/epm7.png
12. Lihat baris "const/4 v1, 0x3" baris ini berurut dari atas ke bawah, jangan sampe sama. Berdasarkan kode di atas, berarti urutan EPM yang bakal ada di hh adalah Reboot, Recovery, Screen capture dan Shutdown.
13. "const v3, 0x108xxxx" adalah source gambar/drawable, lihat public.xml tadi, dan ganti sesuai hex yang ada. misal kita punya kode hex "0x010803ef" untuk reboot maka untuk di smali, buang angka 0 di belakang tanda "kali or x" sehingga jadi "0x10803ef"
14. "const v4, 0x104xxxx" adalah source gambar, lihat public.xml tadi, dan ganti sesuai hex yang ada. misal kita punya kode hex "0x010404e3" untuk reboot maka untuk dismali, buang angka 0 dibelakang tanda "kali or x" sehingga jadi "0x10404e3"
15. "GlobalActions$11" ini adalah pembacaan ke file lain, lihat di folder impl, angka berapa yang paling besar, kalo angka 11 udah ada maka gunakan angka selanjutnya yang gak ada di dalam folder impl. Dan bagian2 tersebut gak sama, punya file masing2 nantinya (file ini belum ada, nanti akan kita buat).
16. Sekarang liat baris dibawahnya, yaitu "const/4 v1, 0x3", di atas baris "new-instance v2, Lcom/a"ndroid/internal/policy/impl/GlobalActions$11;" . Urutkan angka terakhirnya sampai “new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$4;” (biar jelas urutannya liat ss di atas).
17. Save and close.
18. Mission 3 completed
===== MISSION 4 (Bingung ngasih judulnya) =====
1. Copy file "GlobalAction$4.smali" (/com/android/internal/policy/impl/)" dan rename jadi "GlobalAction$11.smali" (atau angka selanjutnya setelah angka terbesar di dalam folder impl)
2. Buka file "GlobalAction$11.smali" di notepad++ dan replace/ganti semua kata "GlobalAction$4" menjadi "GlobalAction$11".
3. Cari kode seperti ini
SS 8 : http://s7.postimg.org/x9vxoa2rv/epm8.png
4. Replace/ganti kedua baris kode tersebut dengan kode ini. (garisnya gak usah dicopy juga)
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
Sehingga hasilnya seperti ini.
SS9 : http://s7.postimg.org/xnx9nvmvf/epm9.png
5. Simpan dan close file "GlobalAction$11.smali"
6. Copy file "GlobalAction$11.smali" dan rename jadi "GlobalAction$12.smali" lalu buka file "GlobalAction$10.smali" di notepad++
7. Replace semua kata "GlobalAction$11" menjadi "GlobalAction$12"
8. Replace [ const-string p0, "now" ] menjadi [ const-string p0, "recovery" ]
SS10 : http://s7.postimg.org/fza4a00i3/epm10.png
9. Simpan dan close file "GlobalAction$12.smali".
10. Copy file smali GlobalActions$13.smali dan GlobalActions$13$1.smali yang udah kita download tadi ke \APK-Multi-Tool\projects\android.policy.apk\smali\com\android\internal\policy\impl\Di sini
11. Buka lagi Script.bat, recompile android.policy.apk.
12. Di folder keep, hapus classes.dex.
13. Setelah recompile berhasil, buka folder place-apk-here-for-modding klik kanan pada System_android.policy.apk. Lalu pilih extract to..
14. Buka folder System_android.policy hasil ekstrak, Sorot/blok semua file di dalamnya (META-INF dan classes.dex). Klik kanan -> Add to archive.. -> Pilih format ZIP -> rename filenya jadi android.policy.jar -> OK.
15. Mission 4 Completed
===== MISSION 5 Install EPM =====
1. Setelah misi 1-4 berhasil. Misi ke-5 adalah installasi.
2. Gunakan flashable zip untuk menginstallnya. Jika belum punya, cari di dok).
3. Buka flashable zipnya. Buka \system\framework\
4. Drag n Drop file framework-res.apk dan android.policy.jar yang sudah kita bedah tadi ke dalam folder framework di flashable zip.
5. Copy flashable zip yang udah diisi tadi ke sdcard hh kalian.
6. Kemudian flash filenya via recovery mode / CWM.
7. Selesai dan reboot system now.
8. Prosesnya bakalan lama sekitar 3-5 menit. Mungkin lebih.
9. Dan TADAAAAAAAA…. Sekarang hh kalian sudah memiliki 7 EPM.
10. Mission 5 completed.
SS Hasil : http://s22.postimg.org/vhj0q03wh/hasilnya.png
Ipul d’Cleverior. FB : Cleverior Om Ncez buat tutor EPeeMnya di grup Temporary GalY Om iBay. FB : al.gothic Tutorial [HOW TO] Extended Power Menu with no header (reboot / download / recovery) di xda http://forum.xda-developers.com/showthread.php?t=1169443 - Galaxy Pocket Community (http://www.facebook.com/groups/Galaxy.Pocket)