Skip to content

Most visited

Recently visited

navigation

Mengonfigurasi Pembangunan

Video

Sistem Pembangunan Android SDK yang Baru

Sistem pembangunan Android mengompilasi sumber daya aplikasi serta kode sumber, dan mengemasnya ke APK sehingga bisa Anda uji, terapkan, tanda tangani, dan distribusikan. Android Studio menggunakan Gradle, sebuah toolkit pembangunan lanjutan, untuk mengotomatisasi dan mengelola proses pembangunan, sekaligus memungkinkan Anda untuk menentukan konfigurasi pembangunan khusus yang fleksibel. Setiap konfigurasi pembangunan bisa mendefinisikan set kode dan sumber daya-nya sendiri, sekaligus menggunakan kembali bagian-bagian yang sama untuk semua versi aplikasi Anda. Android Plugin untuk Gradle bekerja dengan toolkit pembangunan agar proses dan setelan bisa dikonfigurasi yang spesifik untuk membuat dan menguji aplikasi Android.

Plugin Android dan Gradle berjalan secara independen dari Android Studio. Ini berarti bahwa Anda bisa membuat aplikasi Android dari dalam Android Studio, baris perintah pada mesin, atau pada mesin yang tidak dipasangi Android Studio (seperti server integrasi berkesinambungan). Jika Anda tidak menggunakan Android Studio, Anda bisa mempelajari cara membuat dan menjalankan aplikasi dari baris perintah. Keluaran pembangunan ini sama saja, apakah Anda membuat proyek dari baris perintah, pada mesin jarak jauh, atau menggunakan Android Studio.

Catatan: Karena plugin Android dan Gradle berjalan secara independen dari Android Studio, Anda perlu memperbarui alat pembangunan secara terpisah. Baca catatan rilis untuk mempelajari cara memperbarui plugin Android dan Gradle.

Fleksibilitas sistem pembangunan Android memungkinkan Anda melakukan konfigurasi pembangunan khusus tanpa memodifikasi file sumber inti aplikasi. Bagian ini membantu Anda memahami bagaimana sistem pembangunan Android bekerja, dan bagaimana itu bisa membantu Anda menyesuaikan dan mengotomatisasi beberapa konfigurasi pembangunan. Jika Anda hanya ingin mengetahui selengkapnya tentang menerapkan aplikasi, lihat Membuat dan Menjalankan dari Android Studio.. Untuk segera mulai membuat konfigurasi pembangunan khusus menggunakan Android Studio, lihat Mengonfigurasi Varian Pembangunan.

Proses Pembangunan

Proses pembangunan melibatkan banyak alat dan pemrosesan yang mengonversi proyek Anda menjadi Android Application Package (APK). Proses pembangunan sangat fleksibel, sehingga berguna untuk memahami beberapa kejadian dalam detail pemrosesannya.

Gambar 1. Proses pembangunan dari modul aplikasi Android khusus.

Proses pembangunan untuk modul aplikasi Android khusus, seperti yang ditunjukkan pada gambar 1, ikuti langkah-langkah berikut:

  1. Compiler mengonversi kode sumber menjadi file DEX (Dalvik Executable), yang menyertakan bytecode yang berjalan pada perangkat Android, serta lainnya menjadi sumber daya yang dikompilasi.
  2. APK Packager menggabungkan file DEX dan sumber daya yang dikompilasi ke dalam APK tunggal. Namun, sebelum aplikasi Anda bisa diterapkan dan digunakan pada perangkat Android, APK harus ditandatangani.
  3. APK Packager menandatangani APK Anda menggunakan keystore debug atau rilis:
    1. Jika Anda membuat sebuah versi debug aplikasi, yaitu, aplikasi yang Anda tujukan hanya untuk pengujian dan pembuatan profil, packager menandatangani aplikasi dengan keystore debug. Android Studio secara otomatis mengonfigurasi proyek baru dengan keystore debug.
    2. Jika Anda membangun versi rilis aplikasi yang ditujukan untuk dirilis keluar, packager menandatangani aplikasi Anda dengan keystore rilis. Untuk membuat keystore rilis, baca tentang menandatangani aplikasi di Android Studio.
  4. Sebelum menghasilkan APK final, packager menggunakan alat zipalign untuk mengoptimalkan aplikasi Anda agar hemat memori ketika berjalan pada perangkat.

Pada akhir dari proses pembangunan, Anda akan mendapatkan sebuah APK debug atau APK rilis dari aplikasi yang bisa Anda gunakan untuk menerapkan, menguji, atau merilis untuk pengguna eksternal.

Konfigurasi Pembangunan Khusus

Plugin Android dan Gradle membantu Anda mengonfigurasi aspek-aspek berikut dari pembangunan Anda:

Tipe Pembangunan
Tipe pembangunan mendefinisikan properti tertentu yang digunakan Gradle ketika membuat serta memaket aplikasi Anda, dan biasanya dikonfigurasi untuk berbagai daur siklus development Anda. Misalnya, tipe pembangunan versi debug mengaktifkan opsi debug dan menandatangani APK dengan kunci debug, sedangkan tipe pembangunan versi rilis bisa menciutkan, menyamarkan, dan menandatangani APK dengan kunci rilis untuk distribusi. Anda harus menentukan setidaknya satu tipe pembangunan untuk membuat aplikasi—Android Studio membuat tipe pembangunan versi rilis dan debug secara default. Untuk mulai menyesuaikan setelan pemaketan untuk aplikasi Anda, pelajari cara Mengonfigurasi Tipe Pembangunan.
Ragam Produk
Ragam produk merepresentasikan versi berbeda dari aplikasi yang mungkin Anda rilis untuk pengguna, seperti versi aplikasi gratis dan berbayar. Anda bisa menyesuaikan ragam produk agar menggunakan kode dan sumber daya yang berbeda, sekaligus berbagi dan menggunakan kembali bagian-bagian yang umum untuk semua versi aplikasi. Ragam produk bersifat opsional dan Anda harus membuatnya secara manual. Untuk mulai membuat versi aplikasi yang berbeda, pelajari cara Mengonfigurasi Ragam Produk.
Varian Pembangunan
Varian pembangunan adalah produk persilangan dari tipe pembangunan dan ragam produk, dan merupakan konfigurasi yang digunakan Gradle untuk membuat aplikasi Anda. Dengan menggunakan varian pembangunan, Anda bisa membuat versi debug dari ragam produk selama development, atau menandatangani versi rilis dari ragam produk untuk distribusi. Meskipun tidak mengonfigurasi varian pembangunan secara langsung, Anda mengonfigurasi tipe pembangunan dan ragam produk yang membentuknya. Membuat tipe pembangunan atau ragam produk tambahan juga akan menciptakan varian pembangunan tambahan. Untuk mempelajari cara membuat dan mengelola varian pembangunan, silakan baca ringkasan Mengonfigurasi Varian Pembangunan.
Entri Manifes
Anda bisa menentukan nilai untuk beberapa properti dari file manifes dalam konfigurasi varian pembangunan. Nilai pembangunan ini menggantikan nilai yang ada dalam file manifes. Ini berguna jika Anda ingin menghasilkan beberapa APK untuk modul dan masing-masing file apk memiliki nama aplikasi yang berbeda, versi SDK minimum, atau versi SDK target. Bila terdapat beberapa manifes, Gradle akan menggabungkan setelan manifes.
Dependensi
Sistem pembangunan mengelola dependensi proyek dari sistem file lokal dan dari repositori jarak jauh. Hal ini akan menjaga Anda dari keharusan menelusuri, mengunduh, dan menyalin secara manual paket biner dependensi ke dalam direktori proyek Anda. Untuk mengetahui selengkapnya, pelajari cara Mendeklarasikan Dependensi.
Penandatanganan
Sistem pembangunan memungkinkan Anda untuk menentukan setelan penandatanganan dalam konfigurasi pembangunan, dan bisa secara otomatis menandatangani APK selama proses pembangunan. Sistem pembangunan menandatangani versi debug dengan kunci dan sertifikat default menggunakan kredensial yang dikenal untuk menghindari permintaan sandi pada waktu pembangunan. Sistem pembangunan tidak menandatangani versi rilis kecuali Anda secara eksplisit menentukan konfigurasi penandatanganan untuk pembangunan ini. Jika tidak memiliki kunci rilis, Anda bisa menghasilkannya seperti yang dijelaskan dalam Menandatangani Aplikasi Anda.
ProGuard
Sistem pembangunan memungkinkan Anda untuk menentukan file aturan ProGuard yang berbeda untuk setiap varian pembangunan. Sistem pembangunan bisa menjalankan ProGuard untuk menciutkan dan menyamarkan kelas-kelas Anda selama proses pembangunan.
Pemisahan APK
Sistem pembangunan memungkinkan Anda untuk secara otomatis membuat APK berbeda yang masing-masing hanya berisi kode dan sumber daya yang dibutuhkan untuk kepadatan layar tertentu atau Application Binary Interface (ABI). Untuk informasi selengkapnya lihat Mengonfigurasi Pemisahan APK.

File Konfigurasi Pembangunan

Pembuatan konfigurasi pembangunan khusus mengharuskan Anda untuk membuat perubahan terhadap satu atau beberapa file konfigurasi pembangunan, atau file build.gradle. File-file teks biasa ini menggunakan Domain Specific Language (DSL) untuk menggambarkan dan memanipulasi logika pembangunan menggunakan Groovy, yang merupakan bahasa dinamis untuk Java Virtual Machine (JVM). Anda tidak perlu mengetahui Groovy untuk mulai mengonfigurasi pembangunan karena Android Plugin untuk Gradle memperkenalkan sebagian besar elemen DSL yang Anda butuhkan. Untuk mengetahui selengkapnya tentang DSL plugin Android, baca Dokumentasi referensi DSL.

Ketika memulai sebuah proyek baru, Android Studio secara otomatis membuat beberapa file ini untuk Anda, seperti yang ditunjukkan pada gambar 2, dan akan mengisinya berdasarkan default yang logis.

Gambar 2. Struktur proyek default untuk modul aplikasi Android.

Ada beberapa file konfigurasi pembangunan Gradle yang merupakan bagian dari struktur proyek standar untuk aplikasi Android. Sebelum Anda bisa mulai mengonfigurasi pembangunan, penting untuk memahami cakupan dan tujuan dari setiap file, dan elemen DSL dasar yang harus ditetapkan.

File Setelan Gradle

File settings.gradle, terletak di direktori akar proyek, yang memberi tahu Gradle modul yang harus disertakan ketika membuat aplikasi Anda. Untuk kebanyakan proyek, file-nya sederhana dan hanya berisi:

include ‘:app’

Namun, proyek-proyek multi-modul harus menentukan setiap modul yang perlu dimasukkan ke pembangunan final.

File Pembangunan Tingkat-Atas

File build.gradle tingkat atas, terletak di direktori akar proyek, mendefinisikan konfigurasi pembangunan yang berlaku untuk semua modul dalam proyek Anda. Secara default, file pembangunan tingkat-atas menggunakan blok buildscript {} untuk mendefinisikan repositori dan dependensi Gradle yang familier untuk semua modul dalam proyek. Contoh kode berikut menjelaskan elemen DSL dan setelan default yang bisa Anda temukan di build.gradle tingkat-atas setelah membuat proyek baru.

/**
 * The buildscript {} block is where you configure the repositories and
 * dependencies for Gradle itself--meaning, you should not include dependencies
 * for your modules here. For example, this block includes the Android plugin for
 * Gradle as a dependency because it provides the additional instructions Gradle
 * needs to build Android app modules.
 */

buildscript {

    /**
     * The repositories {} block configures the repositories Gradle uses to
     * search or download the dependencies. Gradle pre-configures support for remote
     * repositories such as JCenter, Maven Central, and Ivy. You can also use local
     * repositories or define your own remote repositories. The code below defines
     * JCenter as the repository Gradle should use to look for its dependencies.
     */

    repositories {
        jcenter()
    }

    /**
     * The dependencies {} block configures the dependencies Gradle needs to use
     * to build your project. The following line adds Android Plugin for Gradle
     * version 3.0.1 as a classpath dependency.
     */

    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
    }
}

/**
 * The allprojects {} block is where you configure the repositories and
 * dependencies used by all modules in your project, such as third-party plugins
 * or libraries. Dependencies that are not required by all the modules in the
 * project should be configured in module-level build.gradle files. For new
 * projects, Android Studio configures JCenter as the default repository, but it
 * does not configure any dependencies.
 */

allprojects {
   repositories {
       jcenter()
   }
}

File Pembangunan Tingkat-Modul

File build.gradle tingkat-modul, terletak di setiap direktori <project>/<module>/, yang memungkinkan Anda untuk mengonfigurasi setelan pembangunan untuk modul tertentu tempatnya berada. Mengonfigurasi setelan pembangunan ini memungkinkan Anda untuk menyediakan opsi pemaketan khusus, seperti tipe pembangunan dan ragam produk tambahan, serta menimpa setelan dalam manifes aplikasi main/ atau file build.gradle tingkat-atas.

Contoh file build.gradle modul aplikasi Android ini menggarisbawahi beberapa elemen DSL dan setelan dasar yang harus Anda ketahui.

/**
 * The first line in the build configuration applies the Android plugin for
 * Gradle to this build and makes the android {} block available to specify
 * Android-specific build options.
 */

apply plugin: 'com.android.application'

/**
 * The android {} block is where you configure all your Android-specific
 * build options.
 */

android {

  /**
   * compileSdkVersion specifies the Android API level Gradle should use to
   * compile your app. This means your app can use the API features included in
   * this API level and lower.
   *
   * buildToolsVersion specifies the version of the SDK build tools, command-line
   * utilities, and compiler that Gradle should use to build your app. You need to
   * download the build tools using the SDK Manager.
   */

  compileSdkVersion 26
  buildToolsVersion "26.0.2"

  /**
   * The defaultConfig {} block encapsulates default settings and entries for all
   * build variants, and can override some attributes in main/AndroidManifest.xml
   * dynamically from the build system. You can configure product flavors to override
   * these values for different versions of your app.
   */

  defaultConfig {

    /**
     * applicationId uniquely identifies the package for publishing.
     * However, your source code should still reference the package name
     * defined by the package attribute in the main/AndroidManifest.xml file.
     */

    applicationId 'com.example.myapp'

    // Defines the minimum API level required to run the app.
    minSdkVersion 15

    // Specifies the API level used to test the app.
    targetSdkVersion 26

    // Defines the version number of your app.
    versionCode 1

    // Defines a user-friendly version name for your app.
    versionName "1.0"
  }

  /**
   * The buildTypes {} block is where you can configure multiple build types.
   * By default, the build system defines two build types: debug and release. The
   * debug build type is not explicitly shown in the default build configuration,
   * but it includes debugging tools and is signed with the debug key. The release
   * build type applies Proguard settings and is not signed by default.
   */

  buildTypes {

    /**
     * By default, Android Studio configures the release build type to enable code
     * shrinking, using minifyEnabled, and specifies the Proguard settings file.
     */

    release {
        minifyEnabled true // Enables code shrinking for the release build type.
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }

  /**
   * The productFlavors {} block is where you can configure multiple product
   * flavors. This allows you to create different versions of your app that can
   * override defaultConfig {} with their own settings. Product flavors are
   * optional, and the build system does not create them by default. This example
   * creates a free and paid product flavor. Each product flavor then specifies
   * its own application ID, so that they can exist on the Google Play Store, or
   * an Android device, simultaneously.
   */

  productFlavors {
    free {
      applicationId 'com.example.myapp.free'
    }

    paid {
      applicationId 'com.example.myapp.paid'
    }
  }

  /**
   * The splits {} block is where you can configure different APK builds that
   * each contain only code and resources for a supported screen density or
   * ABI. You'll also need to configure your build so that each APK has a
   * different versionCode.
   */

  splits {
    // Screen density split settings
    density {

      // Enable or disable the density split mechanism
      enable false

      // Exclude these densities from splits
      exclude "ldpi", "tvdpi", "xxxhdpi", "400dpi", "560dpi"
    }
  }
}

/**
 * The dependencies {} block in the module-level build configuration file
 * only specifies dependencies required to build the module itself.
 */

dependencies {
    compile project(":lib")
    compile 'com.android.support:appcompat-v7:27.0.0'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

File Properti Gradle

Gradle juga berisi dua file properti, terletak di direktori akar proyek, yang bisa Anda gunakan untuk menentukan setelan bagi toolkit build Gradle itu sendiri:

gradle.properties
Ini adalah tempat di mana Anda bisa mengonfigurasi setelan Gradle bermacam-proyek, seperti ukuran heap maksimum daemon Gradle. Untuk informasi selengkapnya, lihat Lingkungan Pembangunan.
local.properties
Mengonfigurasi properti lingkungan lokal untuk sistem pembangunan, seperti jalur ke pemasangan SDK. Karena materi dari file ini secara otomatis dihasilkan oleh Android Studio dan dikhususkan untuk lingkungan developer lokal, Anda sebaiknya tidak memodifikasi file ini secara manual atau memeriksanya dalam sistem kontrol versi.

Menyinkronkan Proyek dengan File Gradle

Bila Anda membuat perubahan pada file konfigurasi pembangunan dalam proyek, Android Studio akan mengharuskan Anda untuk melakukan sinkronisasi file proyek sehingga Android Studio bisa mengimpor perubahan konfigurasi pembangunan dan menjalankan beberapa pemeriksaan untuk memastikan konfigurasi Anda tidak akan menimbulkan kesalahan pembangunan.

Untuk melakukan sinkronisasi file proyek, klik Sync Now dalam bilah notifikasi yang muncul saat Anda membuat perubahan, seperti yang ditunjukkan pada gambar 3, atau klik Sync Project dari bilah menu. Jika Android Studio menemukan kesalahan dalam konfigurasi Anda, misalnya, kode sumber menggunakan fitur API yang hanya tersedia di API level yang lebih tinggi dari compileSdkVersion, jendela Messages akan muncul untuk menjelaskan masalah ini.

Gambar 3. Menyinkronkan proyek dengan file konfigurasi pembangunan dalam Android Studio.

Set Sumber

Android Studio secara logis mengelompokkan kode sumber dan sumber daya untuk setiap modul ke dalam set sumber. Set sumber main/ modul berisi kode dan sumber daya yang digunakan oleh semua varian pembangunannya. Direktori set sumber tambahan bersifat opsional, dan Android Studio tidak secara otomatis membuatnya ketika Anda mengonfigurasi varian pembangunan baru. Namun, membuat set sumber, serupa dengan main/, akan membantu mengelola file dan sumber daya yang hanya boleh digunakan Gradle ketika membangun versi aplikasi tertentu:

src/main/
Set sumber ini berisi kode dan sumber daya yang biasa dipakai oleh semua varian pembangunan.
src/<buildType>/
Buat set sumber ini untuk memuat kode dan sumber daya khusus untuk tipe pembangunan tertentu.
src/<productFlavor>/
Buat set sumber ini untuk memuat kode dan sumber daya khusus untuk ragam produk tertentu.
src/<productFlavorBuildType>/
Buat set sumber ini untuk memuat kode dan sumber daya khusus untuk varian pembangunan tertentu.

Misalnya, untuk menghasilkan versi aplikasi "fullDebug", sistem pembangunan akan menggabungkan kode, setelan, dan sumber daya dari set sumber berikut:

Catatan: Bila membuat file atau direktori baru dalam Android Studio, dengan menggunakan pilihan menu File > New, Anda bisa membuatnya untuk sebuah set sumber tertentu. Set sumber yang bisa Anda pilih didasarkan pada konfigurasi pembangunan, dan Android Studio secara otomatis membuat direktori yang diperlukan jika mereka belum ada.

Jika set sumber yang berbeda berisi versi berbeda dari file yang sama, Gradle menggunakan urutan prioritas berikut saat memutuskan file yang digunakan (set sumber di sebelah kiri menggantikan file dan setelan set sumber sebelah kanan):

varian pembangunan > tipe pembangunan > ragam produk > set sumber utama > dependensi pustaka

Hal ini memungkinkan Gradle untuk menggunakan file khusus bagi varian pembangunan yang sedang coba Anda bangun sekaligus menggunakan kembali aktivitas, logika aplikasi, dan sumber daya yang biasa dipakai oleh versi aplikasi yang lainnya. Ketika menggabungkan beberapa manifes, Gradle menggunakan urutan prioritas yang sama, sehingga setiap varian pembangunan bisa menentukan komponen atau izin yang berbeda dalam manifes akhir. Untuk mengetahui selengkapnya tentang membuat set sumber khusus, masuk ke Membuat Set Sumber untuk Varian Pembangunan.

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)