creatorbe

Muslim Programmer, focused in Android Development.

ODA - Optimasi Development Android

03 Apr 2017 » programming, android, minds

Bukan tentang cerita dimasa lalu ataupun coretan kisah yang tertelan waktu, tapi sebuah catatan pribadi yang ditulis untuk mudah dicari dan semoga tidak hanya bermanfaat bagi diri ini.

Efisiensi bukan dari seberapa banyak aksi tapi keadaan dimana aktivitas yang tidak diperlukan berhenti

~creatorbe

TALK LESS, TWEAK MORE

List

Android Studio

Pada android studio secara default program bekerja pada mode online dikarenakan untuk memudahkan sinkronisasi dalam proyek (contoh : library) dan melakukan pengecekan berkala untuk melihat versi terbaru. Jika anda tidak memerlukan depensi terbaru anda bisa menonaktifkan fitur ini dan membiarkan gradle menggunakan cache dari library. Buka jendela setting pada android studio, Centang offline work dan pastikan menggunakan gradle yang ada di direktori lokal.

android-offline-work

Gradle Script

Gradle Properties

Berikut beberapa opsi tweak pada gradle.properties untuk penjelasan saya cantumkan dalam kode.


# Di beberapa versi gradle secara default, gradle daemon dalam keadaan mati
# Tentu dengan menghidupkannya tidak perlu melakukan proses startup berulang kali

org.gradle.daemon=true

# Opsi spesifik dalam menentukan JVM arguments pada proses daemon dimana hal ini mempengaruhi kinerja memori.
# Default value: -Xmx10248m -XX:MaxPermSize=256m

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

# Bagus untuk project mandiri dengan beberapa banyak modul
# Namun perlu hati hati jika bekerja dalam team karena mungkin akan terjadi konflik diantara modul karena adanya keharusan memiliki modul lain.

org.gradle.parallel=true

# Dalam dokumentasi gradle opsi ini menjalankan gradle hanya pada proyek yang melakukan permintaan/request
# Semakin anda memiliki banyak modul yang terkait maka semakin banyak juga waktu yang diminimalisir.  

org.gradle.configureondemand=true

Rujukan :

Build Gradle

Seperti pembahasan sebelumnya mengenai parameter jvm di gradle.properties anda juga bisa meletakkanya pada file build.gradle seperti berikut.


dexOptions {
    javaMaxHeapSize "8g"
    jumboMode true
}

8g = 8GB

Rujukan : google.github.io/android-gradle-dsl/current

Kali ini kembali mengingat kenangan lolipop (API 21) tentu membawa ingatan kita pada ART, dimana jika minSdkVersion jauh dibawah itu maka akan di generate dex yang berjalan dikeduanya baik ART atau pendahulunya JVM. Tapi yang beda jika kita setting pada opsi API 21 (menggunakan ART) dimana salah satu fiturnya tidak memerlukan main dex tadi sebelum MultiDex.install(), hal ini tentu meminimalisir waktu dalam pengecekan class pada main dex. Anda bisa membaca developer.android.com/multidex.

Opsi tweak pada build.gradle menambahkan minSdkVersion.


defaultConfig {
        applicationId "io.github.creatorbe.optimization"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
    }

dimana dalam penerapan proyek sebenarnya, tentu anda bisa menggunakan fitur multi flavors yang keren emang :p .


android {
    flavorDimensions "rilisDimension", "devDimension"
    
    productFlavors {
        // versi improvements
        fastBuild {
            minSdkVersion 21
            dimension "devDimension"
        }
        regular {
            //  min sdk versi development
            minSdkVersion 14
            dimension "devDimension"
        }
        
        // versi release pasaran
        free {
            dimension "rilisDimension"
            //
        }
        pay {
            dimension "rilisDimension"
            //
        }
        
    }
    
    //
}

Coming Soon

i’m still working on awesome android development optimization, …

next time insyaallah i will post an another development tips, btw in the wild it isn’t only about optimization but yours app on privation

./creatorb

Hasan Basri
Freelance programmer

Also known as creatorb [creatorbe] an a muslim who has passion for searching, researching, learning new things to acquiring immense knowledge for help others. Everyday i spend my day as software engineer, life in front of a computer as i am coding, debugging, reading, discussing and i spare my time to learn Quran.

WA +6289619060672
TG @creatorbe
BBM 5F5353B6
Email creatorb45@gmail.com