Laman

Kamis, 19 Desember 2013

Tutorial Modifikasi Tampilan APK – Level 1 (Mudah)

Berikut ini ane coba berbagi ilmu modding APK buat agan yg hobi oprek tampilan.
Intro:
Kenapa perlu modifikasi tampilan APK?
Banyak alasannya, salah satunya adalah porting tampilan aplikasi dari HH tertentu, misalnya Xperia, ke aplikasi native HH kita.
Tapi kenapa tidak pakai aplikasinya dari HH tersebut saja langsung?
Jawabannya adalah karena: 1) belum tentu cocok, 2) kalaupun cocok belum tentu fully support fitur HH kita ataupun sebaliknya. Contohnya saja HH ane, Cross A10. Phone ini support dual SIM, berarti tentu saja aplikasi MMS dan Phone harus bisa memanfaatkan kedua SIM tersebut.
Ketika kita membuat Custom ROM dengan MMS/Phone dari HH lain tentunya bisa saja, tapi apa jadinya kalau tidak support dual SIM? Sebaliknya, jika kita menggunakan aplikasi asli, maka tentu saja akan fully supported, tetapi tampilannya jadi tidak matching.
Dalam kasus ini, maka solusi yg paling tepat adalah modifikasi tampilan APK tersebut. :)

Ada beberapa metode untuk melakukan hal ini, berdasarkan tingkat kesulitannya saya kategorikan sebagai berikut:
1.    Level 1 – Mudah
Dalam level ini kita hanya memodifikasi drawables (gambar berformat .PNG) yang jadi dasar interface program (icon, tombol, background, dll). Dengan kata lain cuma ‘ganti kulit’ secara sederhana saja. Skill dan peralatan yang diperlukan hanya sederhana saja, hanya common sense dan perangkat archiver, ditambah sedikit kemampuan mengedit gambar atau setidaknya mencari gambar pengganti yang sudah jadi.
2.    Level 2 – Sedang
Dalam level ini kita akan memodifikasi script XML yang mengatur tampilan aplikasi. Dengan metode ini pilihan kita jadi lebih banyak, contohnya mengganti warna, membuat transparansi, mengubah background warna jadi gambar atau sebaliknya. Pada level ini kita harus punya tambahan kemampuan dalam mendecompile dan recompile APK, ditambah juga kesabaran dan ketelitian.
3.    Level 3 – Sulit
Dalam level ini kita bermain-main dengan program inti aplikasi itu sendiri. Tidak sekedar script tampilan, tapi source code utamanya. Level ini paling sulit, tetapi juga akan memberikan potensi modifikasi yang lebih luas, misalnya menambahkan elemen baru. Level ini nantinya juga memungkinkan kita untuk tidak sekedar mengubah tampilan, tetapi mengubah logika program itu sendiri, contohnya menghilangkan iklan atau meng-unlock fitur berbayar. Level ini membutuhkan pemahaman tentang pemrograman dan ketelitian dan kesabaran yang lebih extra lagi.
Bagaimana? Menarik bukan? Oke, mari kita mulai, tentunya dari yang mudah dahulu.
Modifikasi APK Level 1 – Mudah
Bahan yang dibutuhkan:
  1. Aplikasi asli HH dan aplikasi HH lain yang jadi sumber modifikasi. Dalam hal ini kita ambil contoh aplikasi MMS.apk. Untuk tutorial ini, saya akan memakai aplikasi MMS dari sebuah ROM Xperia. Kedua APK yang saya pakai bisa anda dapatkan di sini: https://www.dropbox.com/s/oxblvzmi509c1zn/Bahan1.zip  Supaya mudah, saya ganti nama aplikasinya menjadi Mmsa.apk (asli HH) dan Mmsb.apk (Xperia).
  2. Archiver, untuk kemudahan kita gunakan 7Zip dalam tutorial ini. Alternatif lain adalah WinRAR. Untuk aplikasi lain silahkan bereksperimen sendiri.
  3. Program penampil gambar. Dalam hal ini ane memilih FSViewer, silahkan download di situs resminya. Walaupun anda bisa sekedar mengaktifkan thumbnail view dalam Windows Explorer, program khusus penampil gambar akan jauh mempermudah pekerjaan anda.
  4. [Opsional] Program editing gambar yang bisa mengelola file bertipe PNG.
Langkah-langkah:
  1. Ekstrak kedua file .apk ke folder yang berbeda. Jika menggunakan 7Zip: klik kanan filenya, lalu pilih 7Zip > Extract to Mmsa/b (nama akan tergantung nama file anda). Bisa juga dua-duanya sekaligus, caranya blok kedua file, klik kanan lalu pilih 7Zip > Extract to “/*”.
  2. Jika mengikuti contoh di atas, akan ada dua folder bernama Mmsa dan Mmsb seperti gambar di bawah ini.
  3. Di dalam kedua folder di atas anda akan menemui folder bernama ‘res’. Untuk kepentingan tutorial ini, abaikan dulu folder/file yang lain yang lain.
  4. Dalam folder ‘res’ akan ada folder ‘drawable’ dan ‘drawable-mdpi’ (lihat gambar di atas). Abaikan dulu yang lain.
  5. Bandingkan file2 PNG dalam folder ‘drawable’ dari dua apk tersebut. Lalu lakukan hal berikut.
    1. Jika nama dan ukuran gambarnya sama, maka pindahkan (bukan kopi) file dari Mmsb ke Mmsa. Jika ditanya, timpa/replace file asli (Mmsa).
    2. Jika nama sama tapi ukuran berbeda, maka anda punya dua pilihan: i) biarkan apa adanya, atau ii) edit file dari Mmsb untuk menyesuaikan ukuran file Mmsa, lalu timpa seperti langkah (a).
    3. Jika ada file yang hanya ada di Mmsa saja (unik), silahkan disisihkan dahulu dengan memindah ke folder baru, untuk contoh kita sebut saja ‘_mmsa-unik-drw’. Lakukan hal yang sama untuk file di Mmsb di folder yang berbeda, misalnya ‘_mmsb-unik-drw’. File sisihan ini belum akan kita gunakan saat ini, tapi akan kita manfaatkan di Tutorial Level 2 nanti.
Agar lebih jelas lagi, ane tampilkan contohnya dalam gambar di bawah ini.
Pada gambar di atas, terlihat bahwa di folder ‘drawable’ ada 5 gambar yang sama nama dan ukurannya. Maka gambar dari Mmsb saya timpakan ke Mmsa.
Keuntungan menggunakan VS viewer adalah agan bisa membandingkan gambar yang akan ditimpa seperti pada gambar di atas. Agan juga bisa menekan tombol kecil yang ane beri tanda segitiga merah buat membandingkan kedua gambar tersebut secara lebih dekat.
Langkah berikutnya adalah gambar-gambar yang unik saya pindahkan ke folder ‘_mmsa-unik-drw’.
  1. Ulangi langkah 5 untuk folder ‘drawable-mdpi’. Sisihkan file unik di folder yg berbeda lagi, sebagai contoh ‘_mmsa-unik-mdpi’ dan ‘_mmsb-unik-mdpi’.
Note: Kenapa ane memisahkan satu persatu  gambarnya dalam folder seperti di atas? Apa tidak terlalu rumit, kenapa tidak ditimpa saja semua langsung?
Jawabannya akan terlihat dari penjelasan isi masing-masing folder yang udah dibuat tadi:
  • Folder ‘_mmsa-unik-drw/mdpi’ adalah file-file yang digunakan oleh Mmsa.apk yang gak ada padanannya di Mmsb.apk. Kalau misalnya Mmsa tema warnanya biru, sedang Mmsb tema warnanya merah, maka file2 ini yang akan bikin tampilan aplikasinya tidak matching. Kalau agan pingin Mmsnya tambah bagus, maka file-file ini harus agan sesuaikan (edit). Karena sudah dipisah, anda nanti gak akan bingung mengingat-ingat file mana yang harus di edit. Jika sudah diedit bisa dikembalikan ke folder masing-masing untuk langkah berikutnya.
  • Folder ‘_mmsb-unik-drw/mdpi’ itu adalah file-file yang unik dari Mmsb. File ini tidak perlu diikutkan ke dalam aplikasi akhir, karena akan percuma saja dan menghabiskan tempat. Mmsa tidak akan mengenali dan menggunakan file-file tersebut. Tapi jangan dibuang dulu, karena file-file itu bisa anda gunakan jika agan sudah mempelajari tutorial Level 2. :)
  1. Buka file asli ‘Mmsa.apk’ dengan 7Zip (klik kanan dan pilih 7Zip > Open archive).
  2. Pada tampilan 7Zip, buka folder ‘res/drawable’. Timpakan file-file PNG dari folder ‘drawable’ di Mmsa ke dalam tampilan 7Zip dengan drag and drop, seperti contoh di bawah.
WARNING: Masukkan file PNG saja, jangan sentuh XMLnya.
  1. Ulangi langkah 8 untuk folder ‘drawable-mdpi’ (buka ‘res/drawable-mdpi’ di 7Zip, ganti dengan isi ‘drawable-mdpi’ dari Mmsa).
  2. Tutup 7Zip.
  3. Selesai. File modifikasi anda siap dikopikan ke HH agan. Ingat, kembalikan namanya menjadi ‘Mms.apk’ dan ubah permission menjadi rw-r–r–.
TIPS: Jika anda menimpa file Mms.apk di system/app, maka mungkin HH akan reboot. Supaya tidak perlu reboot, anda bisa langsung mengopikan file Mmsa.apk (tanpa mengubah nama dulu), set permissionnya, hapus Mms.apk, lalu rename Mmsa.apk menjadi Mms.apk.
Kesimpulan:
Pada intinya metode ini sangat sederhana. Secara ringkas, yang kita lakukan hanyalah mengganti asset gambar yang ada pada APK dengan gambar lain yang berukuran sama. Mungkin bisa diibaratkan seperti mengganti wallpaper pada desktop Windows. Tentu saja metode ini ada kelemahannya, yaitu kita hanya bisa mengganti gambar yang sudah ada. Kita tidak akan bisa, misalnya, menambahkan backgound pada tampilan program MMS yang tidak menggunakan background. Kita bisa saja menambahkan file tersebut ke dalam APK, tapi gambar itu tidak akan ditampilkan di manapun oleh aplikasi dan hanya menjadi ‘sampah’ yang memperbesar ukuran APK dengan sia-sia.

Tidak ada komentar:

Posting Komentar