Mempercepat proses gradle build

Masalah yang sering dihadapi seorang developer Android adalah berhadapan dengan IDE Android Studio. IDE ini memang dikenal memakan banyak resource RAM dan harddisk, bahkan RAM yang disarankan cukup besar 8 GB. Jika di bawah itu ya, siap-siap saja menunggu lama compile aplikasi sambil ditinggal tidur, ngopi dan makan.

Jika sudah memenuhi spesifikasi install Android Studio, namun dirasa masih cukup lambat, terutama ketika melakukan “build” aplikasi menggunakan gradle, ada baiknya mencoba tips berikut:

  1. Update versi gradle ke versi terbaru. Saat ini (April 2017) versi terbarunya adalah versi 3.5 (https://docs.gradle.org/current/release-notes.html)
    Cara updatenya bisa ikuti di tutorial berikut: https://gradle.org/install
  2. Buat file baru dengan nama gradle.properties, taruh di lokasi berikut:
    /home/<username>/.gradle/ (Linux)
    /Users/<username>/.gradle/ (Mac)
    C:\Users\<username>\.gradle (Windows)

    Setelah itu copas teks berikut ke gradle.properties:

    org.gradle.daemon=true
    org.gradle.parallel=true
    org.gradle.jvmargs=-Xmx2048M   

    Untuk org.gradle.jvmargs, apabila RAM yang dimiliki sekitar 4 GB, cukup set di angka 2048M, namun jika lebih ya lebih bagus, bisa diset di angka 8192 bagi yang memiliki RAM sekitar 16 GB.
    Jika sudah, save, dan lanjut ke bagian android Studio. Buka Preferences/Settings Android Studio, masuk ke bagian “Build, Execution, Deployment”, pilih “Gradle” dan beri centang pada “Offline Work” seperti pada gambar di bawah ini, dan set directory-nya ke lokasi gradle.properties yang sudah dibuat tadi.
    lseqd

  3. Beri parameter –offline pada Compiler seperti pada gambar di bawah ini:
    gjrrv
  4. Masuk ke Aplikasi yang sedang dibuat di Android Studio, klik build.gradle.
    Setelah itu tambahkan line berikut di dalam tag android:
    Screen Shot 2017-04-30 at 6.00.47 PM

    dexOptions {
        incremental true
        javaMaxHeapSize "4g"
    }

    beri angka “4g” apabila RAM yang dimiliki 4GB, dan beri angka 8g bila RAM yang dimiliki 8GB. Dokumentasinya ada di sini: google.github.io/android-gradle-dsl/current/

  5. Perbesar heapsize untuk mempercepat build di gradle.properties dengan menambahkan parameter berikut:
    # Specifies the JVM arguments used for the daemon process.
    # The setting is particularly useful for tweaking memory settings.
    # Default value: -Xmx10248m -XX:MaxPermSize=256m
    org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

    *peringatan: memperbesar heapsize beresiko membuat software lain yang dibuka menjadi lambat. Karena RAM akan terfokus ke gradle Android Studio.

  6. Done, selamat mencoba 😀
Advertisements

Seni membaca error log di logcat (DDMS) Android

Ketika saya coba bekerjasama dengan 1 developer Android yang sudah punya produk di PlayStore kemudian komunikasi kami menjadi sedikit missmatch karena ternyata saya baru ngeh kalau developer yang mengajak kerjasama meningkatkan fitur produknya, belum paham membaca error log dan log cat. Dan sering saya dapati komunikasi kami via e-mail dan google docs menjadi tidak harmonis (halah) ketika mengisi waktu kerja proyekan apps android di luar kerjaan kantor, di PKH, Jakarta.

Dan begitu juga pas ngisi workshop, peserta masih bingung membaca error log yang tampil di DDMS yang ter-attached di Eclipse IDE.
Alhasil tempo hari menyisihkan waktu satu jam-an tentang seni membaca error ataupun force close aplikasi dan menemukan bugs dengan cara debugging, error handling ataupun dengan membaca error log.

Mengenai seni trace dan membaca log, perhatikanlah artikel singkat di stackoverflow ini

Mengenai seni dalam mengetahui force close secara langsung dari aplikasi, dapat mencoba cara ini.

Mengenai seni error handling dalam java, bisa baca artikel ini dan khusus Android ada di sini.

Kalau mengecek error di tool DDMS bawaan android SDK/Tools, perlu diketahui, ketika aplikasi berjalan, log yang nampil itu bukan hanya error, jangan dikira kalau ada pesan di log berarti error.
teks warna hijau : seputar tips dan informasi,
teks warna biru : bagian yang diselect, biasanya diisi to-do-list oleh developer,
teks warna orange : ini sebagai peringatan, bisa jadi potensi masalah (namun saat ini belum jadi masalah)
Dan..
teks merah : ini error, dan harus dianalisa masalahnya biar tidak menimbulkan gangguan di aplikasi.

Dan ketika nampak teks warna merah di logcat, sebagai contoh :
02-12 17:50:21.541: E/com.wd.radiodakwahislam.controller.StreamingMediaPlayer(10294): Error updating to newly loaded content.
02-12 17:50:21.541: E/com.wd.radiodakwahislam.controller.StreamingMediaPlayer(10294): java.lang.NullPointerException
02-12 17:50:21.541: E/com.wd.radiodakwahislam.controller.StreamingMediaPlayer(10294): at com.wd.radiodakwahislam.controller.StreamingMediaPlayer.transferBufferToMediaPlayer(StreamingMediaPlayer.java:285)

Di atas, terlihat bahwa ada tulisan : “…(StreamingMediaPlayer.java:285)
artinya, error tersebut terjadi di baris 285 pada class StreamingMediaPlayer.java. So, fokuslah ke class tersebut, dan lihat pada baris 285 terdapat kekeliruan atau tidak (lihat dari editor Eclipse-nya).

Nah, kalau bingung, di awal teks merah tersebut di logcat, copy teks-nya (dengan pilih teks error-nya di logcat, terus tekan ctrl+c), dan buang tanggal dan nama class-nya sehingga yang ter-copy hanya teks error saja : error updating to newly loaded content.
Copy dan paste ke google search di internet browser di PC (bila perlu ditambahkan keyword : Android di akhirnya), terus enter dan lihat di result google, biasanya result 3 besar berisi link stackoverflow, klik salah satunya dan cari apa penyebabnya dari jawaban-jawaban yang ada di stackoverflow.

Pas awal kerja di PKH secara remote, saya langsung ngomong ke team via basecamp, agar coba menerapkan sebuah rules dalam melaporkan bugs dan error dari aplikasi yang dikembangkan kepada teman-teman team yang developer web dan UI designer.

Rules itu berisi :

  • Ketika melaporkan bugs, harap sertakan device apa yang dipakai dan versi OS android-nya.
  • Bila terdapat bugs/masalah UI tolong sertakan screenshotnya, bila masalah fungsional tolong sertakan logcatnya (dengan mengunduh tools berikut) /** saya sertakan link download zipnya yang berisi tool DDMS dan Android SDK beserta doc singkat cara pakainya **/
  • Sebaikny pakai filtering ketika menjalankan logcat di DDMS, jangan semua proses dicantumkan di logcat, demi memudahkan menelusuri masalahnya
  • DDMS bisa filter logcat aplikasi saja, jadi tidak semua log dari proses di device tercatat, caranya dengan masukan nama project di bagian kolom filter. Nama project sesuai yang saya cantumkan ketika saya upload progress (nama project dapat dilihat di file manifest.xml)
  • Kenapa penting bagi developer untuk tahu itu? Supaya gampang mengetahui errornya
    Jangan dikira ketika aplikasi jalan di device developer maka digeneralisir kalau aplikasi tersebut jalan di device SEMUA users. Bahkan yang terjadi di kantor tempat saya kerja, error itu justru sangat kemungkinan besar terjadi mengingat para teman-teman memakai device Android berbagai merek dan ukuran layar dan versi OS.
    Makanya ada conditional yang diterapkan dicode : IF(SDK version < 10) pake codingan A, IF(SDK version > 14) pake codingan B, dll.
  • Oleh karena itu, penting adanya public testing sebelum melepas ke GooglePlay.
    Dan media yang bagus untuk melakukan public testing gratis ya jejaring sosial facebook dll.
  • Beda ukuran layar beda lagi UInya, makanya ketika saya bekerjasama dengan designer UI ada beberapa rules yang harus dipatuhi bersama agar bisa diterapkan di layout dan mencakup ukuran layar low, mid, high, (ponsel dr ukuran kecil sampe besar) extra (tablet 7″ atau HD) dan double extra (tablet 10″ atau yg full HD). Untuk guidelines buat para designer UI Android, bisa patuhi prinsip-prinsip designnya di sini dan lengkapnya ada di sini untuk setiap bagian design-nya.

Sekian dan terima kasih 😀

[Tips for Android Developer] Using Android Emulator or Android Virtual Device

If you don’t have a android phone, don’t worry..you can still develop apps android and try it through Android Emulator (Android Virtual Device – AVD)

you can use the command via command prompt (don’t forget to set adb tools on system variable path on your PC) :

emulator -avd emulator-name

to start the emulator. If you want to customize the emulator appearance, you can use the command:

emulator -avd emulator-name -skin 480×320

where the Andori emulator appearance standard is:

480×320, landscape: emulator -skin HVGA-L
320×480, portrait : emulator -skin HVGA-P (default)
320×240, landscape: emulator -skin QVGA-L
240×320, portrait : emulator -skin QVGA-P

[Tips for Android Developer] Using ADB Tool and DDMS for support.

Hi, everyone! 😀

Welcome back 🙂

First, i want to show you about how important ADB tool for support your Android Development.

There many advantage about using ADB (Android Debug Bridge), such as :

1st : You can install/uninstall application pass through PC via USB debugging mode and mini-USB cable connected.

2nd : You can enter Shell Command (like Linux Command) inside ADB Shell.

3rd : You can detect your device, debug your application, save to log file, and report you if there’s bugs.

4th : You can push/pull file to/from device to your PC through ADB push or ADB pull.

Ok, lets know about interface 🙂

If you want to activate ADB Tools via Command Prompt on Windows, you can entry this path to System Environment Path on Windows, like :

Path” src=”https://butterflydroid.files.wordpress.com/2011/06/05-06-2011-14-21-23.png?w=256″ alt=”” width=”256″ height=”300″ />

Add new variable value on Path System Variable : [drive]:\[Location on Windows]\android-sdk-windows\platform-tools; (if you are using new ADB tool)

Or

[drive]:\[Location on Windows]\android-sdk-windows\tools (if you are using old ADB Tool)

Now, lets try it 😀

Several commands that you should know :

ADB install [APK File] : To install Android Application (APK) to your device (on emulator or Android Phone)

Example : adb install facebook.apk [enter]

ADB push [source_file] [destination_file] : To push your file on your PC to your device.

Example : adb install “c:\Temp\sample.txt” \sdcard\sample.txt [enter]

ADB pull [source_file] [destination_file] : to pull your file on the device to your PC.

Example : adb pull /sdcard/music.mp3 “c:\music\music.mp3” [enter]

ADB Shell : to enter shell command like linux (you can gain superuser access too, if you want to copy file from /sdcard to /system file)

Example : ADB Shell [enter] enter shell command prompt, start with “$” if you are ordinary user, or “#” if you re superuser.

So if you want to access superuser on your Android System, you just go :

adb shell [enter]

$ <= shown like this if you are ordinary user.

$ su [enter]

# <= shown like this if you have superuser.

If failed to access your shell with superuser, maybe your device is not rooted yet.

# reboot [enter] (for reboot your device) or on ADB Tools, you can entry command : adb shell reboot [enter]

now, lets talk about DDMS (Dalvik Debug Monitor)

This software is used for examining and tracing your application process, you can check every process, debug your application, take a capture of interface and logcat (event log).

If you want to check your application that supporting multitouch, you can use DDMS to check how it’s works.

You can access DDMS via command prompt or Run command : ddms [enter]

Enough 🙂

[Tips for Android developer] : Android SDK tools PATH setting

After you installed the Android SDK, it’s a good idea to add the tools directory to your search path, which includes a useful collection of command-line tools.

Windows:

Supposu you have download and install Android SDK, and extract it in another drive, except C:\. There are two methods to set PATH, such as :

  1. Use command prompt :
    set path=%path%;D:\android-sdk-windows\tools;
  2. Another is follow the inscructions :
    My Computer->Property->Advanced->Environment Variables->Edit Path Variable and add “D:\ android-sdk-windows\tools” into the Path Variables.

Linux and Mac:

Edit the ~/.bashrc or ~/.bash_profile file on that OS,

add “export PATH=$PATH:/tools”, such as:

1. Linux:export PATH=$PATH: /android-sdk-linux/tools

2. Mac:export PATH=$PATH: /android-sdk-Mac_x86/tools

After saved the file, excuting “source ./.bashrc ” to make the PATH setting become effective.

That’s it! 😀

[Tips for Android developer] Failed to copy file to system on AVD?

As Android Developer, if you use the following command like:

adb push [your_file] /system/..

and problem shown : “failed to copy file to /system/…”,

such as:

failed to copy ‘[your_file] ’ to ‘/system/…’: No space left on device
failed to copy ‘[your_file] ’ to ‘/system/…’: Out of memory

to resolve that problem, you can use this method :

Start your Emulator…not using Eclipse IDE or AVD Manager, but use the following command :

$emulator –avd [your_avd_name] –partition-size 128

Then you can try the command “adb push [your_file] /system/…”, and the problem solved. Now you can push your file to the system of android on Emulator 😀

Apa itu Dalvik VM – Dalvik Virtual Machine?

Bagi programmer Android ataupun yang seneng ngoprek-ngoprek Android tentunya gak asing lagi dengan kata “Dalvik”, namun sudah tahukah kamu apa itu dalvik? ya..masih jarang yang mengetahuinya. Untuk itu saya akan mencoba menulis artikel tentang dalvik ini secara continuous..karena cakupannya cukup luas dan dalam, saya coba step by step mengulas Dalvik VM ini 😀

Apakah Dalvik VM itu?

Kalo kita melihat Arsitektur OS Android, kita akan menemukan Dalvik VM itu pada bagian Android Runtime, yak..Dalvik VM inilah yang menjadi tempat berjalannya aplikasi-aplikasi dari Android.

Core Libraries yang berada pada sistem Android sebagian besar merupakan core libraries yang terdapat pada bahasa pemrograman java.

Setiap aplikasi yang kita jalankan di android, memiliki proses tersendiri dan memiliki instance masing-masing pada Dalvik Virtual Machine.

Dengan Dalvik inilah, proses jalannya aplikasi menjadi efisien. Dalvik mengeksekusi file berekstensi dex yang disimpan dan dioptimalkan sehingga penggunaan memory di Android OS menjadi minimal.

Dalvik VM bergantung pada kernel Linux (android memakai Linux kernel versi 2.6 untuk core sistemnya yang terdiri dari security, memory management, process management, network stack dan driver model) untuk fungsionalitas dasar seperti threading dan low-level memory management