Suka Duka Programer Android

Setelah 3 tahun lebih menjadi programer android, ternyata banyak suka duka yang saya alami. Cerita ini bisa anda jadikan referensi apakah anda benar -benar mau menekuni pemrograman android atau tidak. Cerita ini lebih fokus ke parkara teknis, bukan perkara bisnis seperti gaji dan sejenisnya. Sekali lagi, saya fokus menjelaskan perkara teknis yang akan dihadapi oleh programer android itu sendiri. Saya akan mulai dari sukanya dulu baru akan saya jelaskan dukanya secara panjang lebar.

Sukanya menjadi programer android

1. Semua alat dan softwarenya gratis

Anda ingin menjadi programer android? berapa biaya yang dibutuhkan? 0 rupiah. Anda tinggal download JDK (java Development kit) dan ADT (Android Development tool) gratis. Install dan anda bisa mulai. Tidak ada crack software atau trial software. Bandingkan jika menjadi programer Delphi, VB atau XCode. Jika anda ingin menjadi programer dengan Teknologi Microsoft seperti VB atau C# atau ASP.net, anda memang bisa mendapatkan versi trialnya namun saat anda membangun aplikasi komersial, anda harus membeli lisensinya yang jika dirupiahkan sampai jutaan rupiah, sebagian software tadi bahkan harganya lebih mahal dari harga laptop.

2. Bisa mendevelop aplikasi android di OS apa saja

Ini yang saya suka, mau pakai Ubuntu, Windows, Mac OSX, ga ada masalah. Android bisa dipelajari disembarang platform yang mendukung java. Yang lebih menarik, proyek android (source codenya) bisa dibuka disembarang ADT (eclipse) walaupun beda Sistem operasi. Saya pernah mengajari siswa, dia memakai Mac OSX sedangkan saya pakai Windows 8. Ga masalah!

3. Dokumentasi lengkap dan tutorial sangat banyak

Dokumentasi Android tergolong lengkap, dari konsep, desain, API guide, Design guide sampai panduan video dari Google tersedia secara gratis, Mau streaming, mau download bebas. Ga bisa bahasa inggris? tenang saja, buku buku bertebaran dan laris manis di pasar, belum lagi blog blog dan ebook android yang berbahasa indonesia sangat banyak.

4. Forum dan Group banyak

Tutorial masih kurang juga, atau ada masalah error yang ga tau solusinya? buka stackoverflow.com maka anda akan mendapat solusinya (sebagian besar permasalahan coding ada solusinya disini). Ga bisa bahasa inggris? cek forum berbahasa indonesia di Facebook atau di android-indonesia.com. Kurang apa coba?

5. Pasar mobile paling besar

Menurut statistik, 7 dari 10 pengguna smartphone menggunakan android. Nah loh, ini pasar yang luar biasa . Walaupun mobile OS bukan hanya android, namun kenyataannya Androidlah yang menguasai pasar. Mahasiswa pun untuk pemrograman mobile juga menggunakan Android. Artinya pasar sangat luas. Pasar terbanyak juga bisa didapati dari sisi bisnis dan perusahaan.  Pemilik website juga tidak lupa membuatkan aplikasi android untuk websitenya. Sekali lagi pasarnya sangat luas. Sekarang misalkan anda belajar pemrograman Windows phone? Siapa yang jadi pasar? menurut survey,  Dari 100 pemakai smartphone, hanya ada 3 pengguna Windows phone. Mau jadi programer apple iOS? silahkan, tapi klo mengejar pasar indonesia susah mas, kecuali pasarnya luar negeri, ini belum termasuk harus beli Mac Book dan iPhone, modal awal jadi programer iOS 20 juta aja mungkin kurang.

 

Dukanya menjadi programer android

Selain banyak enaknya , android juga banyak dukanya. Ingin tahu?

1. Fragmentasi

Fragmentasi adalah permasalan utama di android. Karena android open source, setiap pabrikan handphone bisa membuat android dengan desain dan ukuran layar suka suka. Ada yang 3 inch, 4inch, 5 inch, dan seterusnya. Efeknya Kita harus membuat beberapa versi android (App for smartphone /app for tablet). Kadang walaupun sudah dibuat seperti itupun tampilannya kadang tidak sesuai.

Masalah lain yang timbul dari fragmentasi adalah tidak ada jaminan aplikasi akan berjalan lancar di setiap device. Mungkin saat anda memakai samsung, aplikasi yang anda buat lancar namun saat di insall di Experia langsung crash dan force close. Itu baru dua model, padahal Hp android rangenya sangat luas dari merek cina sampai merek amerika.

Masalah fragmentasi yang lain adalah versi android itu sendiri. Pemakai android ada yang menggunakan froyo, Gingerbread, ICS, Jellybean dan kitkat. Ini menambah repot programer android. berbeda sekali dengan pengguna iOS iPhone yang hanya satu ukuran layar, satu device dan satu perusahaan.

Jadi kalau diringkas, fragmentasi akan membuat biaya testing menjadi mahal dan lama. Ini belum termasuk biaya Bugfix dan crash karena tidak stabil.

2. Tool Development yang berubah ubah.

Google selaku pembuat SDK dari android boleh dibilang sangat tidak matang dari sisi tool development android. Dulu diawal sekali android muncul (sekitar tahun 2008) android tidak punya IDE , hanya SDK dan anda harus  mengedit dengan teks editor standar, lalu dengan perintah comand line anda menjalankan Emulator, membuat apk dan menginstall di emulator. Luar biasa susah. Buat program aja udah susah eh toolnya apa adanya.

Tahun berganti, Google sadar bahwa SDK saja tidak cukup, maka akhirnya mereka memutuskan menggunakan Eclipse agar lebih mudah. Caranya? cukup membuat plugin adt yang intinya menjembatani Eclipse dengan Android SDK. Kelebihannya, bagi yang terbiasa eclipse akan nyaman, Google juga tidak repot harus buat IDE sendiri. Namun cara ini tergolong ribet. Bahkan di tahun 2010-an, banyak sekali tutorial cara menginstall SDK, Eclipse dan ADT secara terpisah. Buku buku android yang beredar pun harus menyediakan satu bab khusus untuk instalasi saja.

Tahun berganti dan sekitar akhir 2012, Google langsung membundle Eclipse dengan SDKnya biar user pemula tidak repot. Cukup ekstrak dan klik eclipse.exe. Cara ini sudah cukup mudah. Namun di tahun 2013, Google mulai mengembangkan Tool terpadu dengan nama Android Studio, Tool ini mengatasi berbagai macam kekurangan eclipse. Sampai saat ini Android Studio masih dalam tahap pengembangan dan belum stabil. Pergantian tool ini makin parah karena project di eclipse tidak kompatible dengan Android studio.

Google mengatasi hal ini dengan membuat tool untuk mengeksport project eclipse menjadi project android studio. Masalah selesai? Tidak, google tidak menyediakan tool untuk mengkonversi project yang dibuat di android studio ke eclipse. Maka kadang, programer harus menginstall dua-duanya karena kadang sebuah tutorial dibuat dengan eclipse dan sebagian lagi dibuat dengan Android studio. Makin pusing kan?

 

3. Teknik koding yang terus berubah.

Sebelum ICS lahir, pemrograman android masih cukup sederhana. Untuk menampilkan map cukup gunakan mapview, untuk mengambil data dari internet langsung saja fungsi HTTPclient di fungsi utama aplikasi. Semuanya lancar dan terkendali. Lalu munculah negara api, maksudnya munculah ICS yang memporak porandakan seluruh code yang dibuat di android 2.3 . Android 4 mengenalkan Google play service dan Teknik Async auntuk mengambil layanan dari internet dan Google.Efeknya? ribuan tutorial dan buku tentang andoid webservice yang dibuat sebelum era Google play service tidak bisa dipakai lagi.

Contoh realnya adalah cara menampilkan Google map, dulu pakai MapActivity, sekarang map fragment disertai dengan GMS dan APikey. Bingung? sama, gue juga bingung. Kode kode koneksi jaringan di tutorial lama (biasanya sebelum 2011) tidak bisa dipakai lagi, jika dipakai akan crash karena tidak pakai Async?, gimana mantap kan? Bagi yang pemula, bisa-bisa kepala di jedotin tembok tiap hari karena stress.

4. Struktur Project android yang kompleks

Android mempunyai struktur project yang kompleks, dari folder library, aset,resource, dan berbagai jenisnya. Kompleksitas ini akan terasa saat anda melakukan kesalahan kecil saja. Misal ada kesalahan dikit di salah satu file XML. efeknya? seluruh kode java akan eror.Apa yang bisa anda lakukan? PANIK ya panik jawabannya. Pernah kebayang ga? Anda mahasiswa yang mau pendadaran liat seluruh kode eror seperti itu? atau bagi yang sudah jadi programer, mau presentasi ke client terus kode merah semua? Arrgh bisa gila mati berdiri kan?

 

5. Emulator yang super lambat

Emulator android dipakai untuk mengetes aplikasi android. Sayangnya emulator android benar benar boros memori dan prosesor. JIka anda memakai RAM 1 GB, bisa bisa waktu anda habis hanya nunggu loading emulator, Bagi yang pakai 2 GB seperti saya kadang nunggu laoding emulator sampai 5 menit. Nah teman saya ada yang pakai Memori 4 GB saja masih terasa loadingnya . Gimana,mantap kan? sebenarnya bisa saja langsung test dismartphone, namun biasanya ada kendala. Pertama anda tidak punya smartphone android, kedua smarphone android yang anda pakai sudah usang, misalkan android 2.3, padahal anda sedang mengetes fitur yang hanya ada di android kitkat. Gimana? makin mantap!

6. Random error

Kadang, proyek android yang kita kerjakan saat dibuka ga ada error, kita koding dan terus istirahat, eclipse ditutup. Sekarang kita buka lagi dan apa yang terjadi? bushet, kadang tanpa sebab ga ada angin ga ada hujan, Eror menyebar keseluruh proyek. Benar bener Muke gile pokoknya. Solusinya bagaimana biasanya clear project, tutup lagi, buka properties cek apakah ada yang tidak keload dan seterusnya.

 

7. File APK bisa dibongkar dengan mudah

Saya kasih sedikit bocoran disini. Tahukan anda, file APK android sebenarnya hanya file Zip yang di rename menjadi APK. efek sampingnya file desain, gambar,database icon dan komponen lain android yang diletakan di folder “Assets” bisa dibajak dan dipakai oleh programer lain dengan mudah. sebagai contoh saya amembuat aplikasi Juzamma, nah file juzzama (ayatnya) saya simpan dalam format gambar dan saya letakan di assets, maka siapa saja yang mendownload apk tadi dengan mudah bisa mendapatkan gambar file juzamma dengan cara mengekstrak apk tadi, lalu buka assetsnya lagi. Artinya mencuri desain dan resource sangat gampang di android.

Lalu ada yang bilang, ya udah letakan aja semuanya di drawable?  ga segampang itu, karena karena kadang mengakses file di assets jauh lebih mudah dibanding mengakses file di drawable. Lagian file di drawable cendrung file gambar, bagaimana kalau filenya adalah html( misal aplikasi phonegap /JQuery mobile), aplikasi databas sqlite dan sebagainya.

 

8. Banyak yang harus dipelajari

Dibanding belajar pemrograman lain, android termasuk yang paling susah . Contohnya anda menjadi programer VB, maka yang paling penting anda menguasai drag and rop desain, coding Vb dan database (biasanya sih SQLserver atau MS Acess). Belajar android itu artinya anda siap belajar dari Java, XML, JSON, google API, Google play service, Asynctask, Android API, renderscript, SQLite, Service, Intent, Broadcast receiver,Google map service dan API dari pihak ketiga. Pokoknya dijamin Kenyang jika harus belajar android. Ini semua kembali ke anda, Jika suka belajar saya yakin hal diatas bukan hambatan, namun bagi yang suka kopas dan asal run, saya yakin seyakin yakinnya akan mengalami kesulitan saat debuging.

 

 

Kumpulan Tips Troubleshoting Proyek Android

Android-Developer2Di artikel sebelumnya saya telah membahas tips coding android, tips di artikel tersebut fokus ke pengkodean dan bagaimana mngoptimasinya , Kali ini saya akan menjelaskan beberapa tip troubleshoting di proyek android sendiri.

Saya menyebutnya troubleshoting karena eror yang terjadi disini lebih sering karena perbedaan konfigurasi Android SDK dan eclipse, bukan pada kode aplikasi android itu sendiri. Mari cek satu persatu.

1. Target SDK tidak tersedia

Saat anda mengimport proyek android, biasanya akan muncul error di source code proyek. Biasanya hal ini karena target-SDK yang ada di proyek tersebut tidak tersedia di SDK komputer. Cara termudah, buka file project.properties dan ganti dengan target SDK yang tersedia. Biasanya, buku buku lama masih mentargerkan android-8(froyo).

2. Library tidak ditemukan 

Sering terjadi untuk proyek yang punya dependensi terhadap library tertentu. Misalkan aplikasi anda membutuhkan library GCM.jar, namun file GCM.jar tidak tersedia atau lupa di kopikan ke folder lib.

3. Perbedaan nama package d folder src dan di manifest.

Sering terjadi kalau kita merefactor nama paket. Sebagai contoh sebuah paket aslinya bernama id.web.candra.demo, lalu diganti menjadi com.candra.demo, saat di run akan muncul error, mengapa? karena nama paket di manifest belum diganti ke com.candra.demo. Intinya, setiap mengganti nama paket di source code, ganti juga nama paket di manifestnya.

4. Activity Tidak ada di Manifest. 

Sering terjadi kalau kita mempunyai aplikasi yang punya banyak Activity. Program akan berjalan normal sampai Activity yang tidak terdata di manifest dipanggil, maka saat itu juga aplikasi akan crash. Telitilah dan pastikan semua activity di source code sudah terdata di manifest.

5. File di resource rusak atau hilang.

File diresource dipanggil oleh file layout atau kadang langsung dipanggil oleh source code java. Kerusakan atau error yang terjadi di resource bisa menyebabkan seluruh file java error. Bagi programer pemula, mungkin ini akan membuat panik, tapi santai saja, biasanya kesalahannya simple, source code java tidak error, hanya saja dia error karena ada resource yang error. Maka jika anda melihat seluruh proyek error, perbaiki dulu file xml di res.  Biasanya, setelah semua file res sudah benar, semua error di file java hilang dengan sendirinya. Ingat, mulailah mencari error dari file di resource (layout, value folder).

6. Aplikasi tidak mau terkoneksi keserver /webservice /internet

Ini lebih sering disebabkan permisi belum di deklarasikan di manifest, biasanya karena kurang baris

  <uses-permission android:name="android.permission.INTERNET" />

Tip troubleshoting lainnya insyaAllah akan saya update dilain kesempatan. Hapy coding!