Fitur-fitur baru di Pratinjau Android Studio

Android Studio 3.4 telah dirilis ke saluran stabil Download di sini.

Android Studio 3.5 saat ini ada dalam saluran Beta.

Android Studio 3.6 saat ini ada dalam saluran Canary dan Developer.

Halaman ini menyediakan ringkasan fitur dan perubahan baru dalam versi pratinjau tersebut.

Untuk berita terbaru tentang rilis, termasuk daftar perbaikan penting di setiap rilis, lihat juga Berita rilis.

Jika Anda mengalami masalah saat menggunakan versi pratinjau Android Studio, harap beri tahu kami. Laporan bug Anda akan membantu kami menyempurnakan Android Studio.

Android Studio 3.5

Bagian ini menyediakan ringkasan fitur dan perubahan baru pada Android Studio 3.5.

Update Project Marble

Project Marble adalah inisiatif Android Studio untuk meningkatkan kesehatan sistem, menyempurnakan fitur, dan mengurangi bug secara signifikan. Android Studio 3.5 menyertakan banyak penyempurnaan untuk tujuan ini, antara lain:

  • Mengurangi latensi UI di jendela editor dan menyempurnakan fitur smart editor saat menggunakan library Data Binding
  • Meningkatkan kecepatan build dengan pemrosesan anotasi inkremental
  • Peningkatan performa saat menggunakan Android NDK
  • Meningkatkan performa pemeriksaan Lint dengan mengurangi beberapa kebocoran memori
  • Di Windows, tindakan notifikasi baru untuk memitigasi penurunan kecepatan build akibat software antivirus
  • Mengurangi penggunaan CPU secara signifikan saat menggunakan Android Emulator
  • Meningkatkan performa Gradle Sync dengan membuat penyesuaian untuk cache build yang dihapus
  • Meningkatkan pengalaman update untuk memberikan lebih banyak informasi dan tindakan guna membantu Anda mengupdate IDE dan Android Gradle Plugin
  • Meningkatkan performa dan UX dengan Editor Tata Letak

Untuk informasi tentang update Project Marble, baca postingan blog Android Developers atau bagian di bawah.

Pemrosesan anotasi inkremental

Jika Anda menggunakan Android Gradle Plugin 3.5.0-beta01 dan yang lebih tinggi, ada lebih banyak lagi pemroses anotasi yang mendukung kompilasi Java inkremental, seperti Data Binding. Pengoptimalan ini menghasilkan performa build inkremental yang lebih baik. Untuk daftar lengkapnya, lihat tabel pemroses anotasi inkremental.

Selain itu, KAPT 1.3.30 dan yang lebih tinggi juga mendukung pemroses anotasi inkremental, yang dapat Anda aktifkan dengan memasukkan baris berikut ke dalam file gradle.properties: kapt.incremental.apt=true

Setelan pengelolaan memori

Jika menggunakan sistem operasi 64 bit yang memiliki RAM minimal 5 GB, sekarang Anda dapat mengonfigurasi jumlah maksimum RAM yang harus dialokasikan oleh OS Anda untuk proses-proses Android Studio, seperti IDE inti, daemon Gradle, dan daemon Kotlin. Gunakan setelan ini untuk mengalokasikan memori yang optimal bagi setiap proses untuk meningkatkan performa Android Studio.

Setelan memori, yang memungkinkan Anda mengonfigurasi jumlah maksimum RAM untuk proses Android Studio.

Gambar 1. Setelan memori di Android Studio.

Anda dapat mengakses setelan baru ini dengan memilih File > Settings (atau Android Studio > Preferences pada macOS), kemudian menemukan bagian Memory Settings pada Appearance & Behavior > System Settings.

Laporan penggunaan memori

Masalah memori di Android Studio terkadang sulit direproduksi dan dilaporkan. Untuk membantu mengatasi masalah ini, Android Studio kini menyertakan laporan penggunaan memori yang dapat Anda kirimkan ke tim Android Studio untuk membantu mengidentifikasi sumber masalah memori. Untuk versi pratinjau—kandidat canary, beta, dan rilis—Android Studio akan otomatis memantau penggunaan memori dan memicu analisis heap memori jika mendeteksi bahwa ambang batas memori rendah telah sering dicapai.

Setelah analisis heap dipicu, Android Studio akan merekam heap dump secara lokal, lalu menganalisisnya saat Anda menjalankan Android Studio lagi. Selama analisis, Android Studio menghapus semua data pribadi dan membuat ringkasan status memori. Ringkasan ini mencakup instance class dan objek, serta jalur referensi untuk alokasi memori yang sangat besar.

Setelah analisis ini selesai, Android Studio akan membuat laporan untuk Anda tinjau dan menampilkan notifikasi, seperti ditunjukkan pada gambar 2. Klik Review Report untuk melihat isi laporan penggunaan memori.

Notifikasi yang menunjukkan bahwa laporan penggunaan memori siap ditinjau

Gambar 2. Notifikasi yang menunjukkan laporan penggunaan memori siap ditinjau.

Sebelum mengirim laporan ini, Anda dapat meninjau semua informasi yang disertakan, seperti ditunjukkan pada gambar 3. Setelah Anda selesai meninjau, klik Send. Tim Android Studio akan meninjau laporan Anda untuk membantu menyelidiki dan menyelesaikan masalah yang Anda alami.

Laporan penggunaan memori.

Gambar 3. Laporan penggunaan memori.

Untuk menjalankan laporan penggunaan memori secara manual, pilih Help > Analyze Memory Usage dari panel menu. Setelah Anda memilih opsi ini, Android Studio akan menghilangkan heap dan meminta Anda memulai ulang IDE. Jika Anda memulai ulang IDE, analisis heap dump akan segera dimulai. Jika tidak, analisis heap dump akan dimulai saat berikutnya Anda menjalankan Android Studio. Dalam kedua kasus tersebut, IDE akan memberi tahu Anda begitu laporan penggunaan memori siap ditinjau.

Pengiriman bersyarat untuk modul fitur dinamis

Pengiriman bersyarat memungkinkan Anda menetapkan persyaratan konfigurasi perangkat tertentu agar modul fitur dinamis otomatis didownload selama penginstalan aplikasi. Misalnya, Anda dapat mengonfigurasi agar modul fitur dinamis yang mencakup fungsionalitas augmented reality (AR) disediakan ketika menginstal aplikasi di perangkat yang mendukung AR saja.

Mekanisme pengiriman ini saat ini mendukung pengontrolan download modul selama proses penginstalan aplikasi berdasarkan konfigurasi perangkat berikut:

Jika perangkat tidak memenuhi semua persyaratan yang Anda tentukan, modul tidak akan didownload pada saat penginstalan aplikasi. Namun, aplikasi Anda dapat meminta untuk mendownload modul secara on demand pada lain waktu menggunakan Play Core Library.

Sebelum memulai, pastikan Anda menggunakan Android Studio 3.5 Canary 11 atau yang lebih tinggi.

Bagian berikut menunjukkan cara menambahkan dukungan pengiriman bersyarat ke modul fitur dinamis. Namun, perlu diingat bahwa Anda harus bergabung dengan program beta untuk memublikasikan aplikasi dengan modul fitur dinamis ke Google Play.

Menambahkan modul baru dengan opsi pengiriman bersyarat

Cara termudah untuk membuat modul fitur dinamis baru dengan pengiriman bersyarat adalah melalui wizard New Module, sebagai berikut:

  1. Untuk membuka dialog New Module, pilih File > New > New Module dari panel menu.
  2. Pada dialog New Module, pilih Dynamic Feature Module, lalu klik Next.
  3. Konfigurasi modul Anda seperti biasa, lalu klik Next.
  4. Di bagian Module Download Options pada dialog, pilih Only include module at app install for devices with specified features dari opsi berikut:
    • Do not include include module at app install (on-demand): Membuat modul yang tersedia sebagai download on demand untuk semua konfigurasi perangkat yang menjalankan API level 21 atau lebih tinggi yang didukung aplikasi Anda.
    • Include module at install-time: Membuat modul yang disertakan dengan aplikasi Anda pada saat penginstalan.
    • Only include module at install-time for devices with specified features: Membuat modul yang disertakan dengan aplikasi Anda pada saat penginstalan hanya pada perangkat dengan konfigurasi tertentu yang dapat Anda tentukan, seperti fitur perangkat atau negara.
  5. Jika Anda ingin membatasi download otomatis modul ke negara tertentu atau level API minimum, klik Finish untuk menyelesaikan pembuatan modul, lalu baca bagian tentang cara menentukan kondisi berdasarkan negara atau level API minimum.

    Jika tidak, klik + device feature untuk menambahkan fitur yang diperlukan perangkat untuk mendownload modul pada saat penginstalan.

  6. Di samping device-feature, pilih salah satu opsi berikut dari menu drop-down dan tentukan nilainya:

    • Name: Memungkinkan Anda menentukan fitur hardware atau software yang diperlukan perangkat untuk mendownload modul pada saat penginstalan. Fitur-fitur yang didukung oleh pengiriman bersyarat sama dengan yang tercantum dalam daftar tersebut sebagai konstanta FEATURE_* menurut PackageManager.

      Jika Anda memilih opsi ini, mulai ketikkan bagian mana pun dari nilai konstanta fitur, misalnya "bluetooth", pada kolom di samping drop-down, lalu pilih salah satu saran yang ditampilkan.

    • OpenGL ES Version: Memungkinkan Anda menentukan versi OpenGL ES yang diperlukan perangkat untuk mendownload modul pada saat penginstalan. Jika Anda memilih opsi ini, mulai ketikkan nomor versi, misalnya "0x00030001", pada kolom di samping menu drop-down, lalu pilih salah satu saran yang ditampilkan.

  7. Jika Anda ingin menambahkan beberapa kondisi berdasarkan fitur perangkat yang tersedia, klik + device feature untuk setiap kondisi fitur perangkat yang ingin Anda tentukan.

  8. Setelah selesai mengonfigurasi opsi download modul, klik Finish.

Setelah Android Studio selesai membuat modul fitur dinamis, Anda dapat memeriksa manifesnya untuk melihat kondisi yang ditentukan dalam node <dist:delivery>. Contohnya ditampilkan di bawah ini.

<manifest ...>
      <dist:module ...>
        <dist:delivery>
          <dist:install-time>
            <dist:conditions>
              <!-- Requires that the device support AR to download the module at
              app install-time.  -->
              <dist:device-feature dist:name="android.hardware.camera.ar"/>
            </dist:conditions>
          </dist:install-time>
        </dist:delivery>
        ...
      </dist:module>
    </manifest>
    

Menambahkan opsi pengiriman bersyarat ke modul fitur dinamis yang sudah ada

Anda dapat menambahkan opsi pengiriman bersyarat ke modul fitur dinamis yang sudah ada melalui manifes modul. Namun, Anda harus terlebih dahulu mempelajari kompatibilitas opsi pengiriman bersyarat dengan opsi pengiriman lain yang mungkin telah Anda aktifkan.

Untuk memulai, pertama-tama Anda harus memigrasikan manifes ke elemen <dist:delivery> yang baru. Cuplikan kode di bawah ini menunjukkan contoh sintaks lama:

<dist:module
      dist:title="@string/title_dynamic_feature" dist:onDemand="true">
      <dist:fusing dist:include="true"/>
    </dist:module>
    

Opsi pengiriman di atas sekarang ditetapkan sebagai berikut.

<dist:module
      dist:title="@string/title_dynamic_feature">
      <dist:delivery>
          <dist:on-demand/>
      </dist:delivery>
      <dist:fusing dist:include="true"/>
    </dist:module>
    

Selanjutnya, Anda dapat menyertakan opsi pengiriman bersyarat berdasarkan fitur perangkat, sebagai berikut.

<dist:module
        dist:title="@string/title_dynamic_feature">
        <dist:delivery>
          <dist:on-demand/>
          <dist:install-time>
            <dist:conditions>
              <!-- Requires that the device support AR to download the module at
              app install-time.  -->
              <dist:device-feature dist:name="android.hardware.camera.ar"/>
            </dist:conditions>
          </dist:install-time>
        </dist:delivery>
        <dist:fusing dist:include="true"/>
    </dist:module>
    

Bagian di bawah ini membahas opsi lain untuk pengiriman bersyarat, seperti berdasarkan negara atau level API minimum.

Kompatibilitas dengan opsi download modul lainnya

Karena modul fitur dinamis menawarkan banyak opsi untuk mengonfigurasi cara setiap fitur dikirimkan ke perangkat pengguna, Anda perlu memahami bagaimana opsi pengiriman bersyarat dipengaruhi oleh setelan lainnya. Tabel berikut merangkum kompatibilitas pengiriman bersyarat dengan opsi download modul lainnya.

Opsi download modul Kompatibilitas dengan pengiriman bersyarat
Fusing (<dist:fusing dist:include="true"/>) Jika modul menetapkan opsi ini ke true, Google Play tidak mematuhi opsi pengiriman bersyarat yang Anda tetapkan saat men-deploy aplikasi ke perangkat yang menjalankan API level 19 atau yang lebih rendah. Artinya, modul fitur dinamis yang memungkinkan fusing selalu disertakan pada saat penginstalan untuk perangkat yang menjalankan API level 19 atau lebih rendah.
Instant-enabled (<dist:module dist:instant="true"/>) Opsi pengiriman bersyarat tidak didukung untuk modul fitur dinamis yang mendukung akses instan.
On demand (<dist:on-demand/>) Secara default, jika Anda menentukan opsi pengiriman bersyarat, modul tersebut juga tersedia on demand.

Menentukan syarat berdasarkan negara

Pengiriman bersyarat juga memungkinkan Anda menentukan negara mana yang ingin Anda kecualikan dari (atau sertakan dalam) mendownload modul pada saat penginstalan aplikasi. Penentuan syarat ini dapat berguna jika, misalnya, modul Anda mengimplementasikan metode pembayaran yang tidak tersedia di wilayah tertentu.

Dalam konteks ini, negara perangkat biasanya ditentukan oleh alamat penagihan pengguna yang terdaftar di akun Google Play.

Jika ingin menentukan negara untuk modul Anda, sertakan baris berikut dalam manifes modul fitur dinamis.

<dist:conditions>
       <!-- Specify "true" to specify countries to exclude from downloading
       this module at app install-time, or "false" to specify countries that should
       download the module. By default, this is set to “false”. -->
      <dist:user-countries dist:exclude="true">
        <!-- Specifies the two-letter  CLDR country code for regions that should
        not download the module at app install-time. -->
        <dist:country dist:code="CN"/>
        <dist:country dist:code="HK"/>
      </dist:user-countries>
    </dist:conditions>
    

Menentukan syarat untuk level API minimum

Penentuan syarat berdasarkan level API perangkat dapat berguna jika Anda memiliki modul fitur dinamis yang bergantung pada API yang hanya tersedia pada versi platform Android tertentu.

Untuk menetapkan syarat berdasarkan level API perangkat minimum, sertakan baris berikut dalam manifes modul fitur dinamis Anda. Perlu diingat, level API yang Anda tentukan sebagai syarat harus lebih besar atau sama dengan minSdkVersion modul itu sendiri.

<dist:conditions>
        <!-- Specifies the minimum API level that the device must satisfy
              in order to download your module at app app install-time. -->
       <dist:min-sdk dist:value="24"/>
    </dist:conditions>
    

Apply Changes

Apply Changes memungkinkan Anda mengirim perubahan kode dan resource ke aplikasi yang sedang berjalan tanpa memulai ulang aplikasi—dan, dalam beberapa kasus, tanpa memulai ulang aktivitas saat ini. Apply Changes mengimplementasikan pendekatan yang sama sekali baru untuk mempertahankan status aplikasi. Tidak seperti Instant Run, yang menulis ulang bytecode APK, Apply Changes menentukan kembali class sewaktu proses berjalan dengan memanfaatkan instrumentasi runtime yang didukung pada Android 8.0 (API level 26) atau yang lebih tinggi.

Untuk menggunakan Apply Changes, lakukan hal berikut:

  • Jika Anda hanya ingin menerapkan perubahan kode tanpa memulai ulang aktivitas saat ini, klik Apply Code Changes Ikon Apply Code Changes atau tekan Ctrl+Alt+F10 (atau Command+Shift+Ctrl+R pada macOS).

    Umumnya, Anda perlu menggunakan Apply Code Changes jika Anda telah mengubah kode di bagian isi suatu metode, tetapi belum mengubah resource apa pun. Jika Anda juga mengubah resource, gunakan Apply Changes and Restart Activity.

  • Jika Anda ingin menerapkan perubahan kode dan resource tanpa memulai ulang aplikasi, klik Apply Changes and Restart Activity Ikon Apply Changes atau tekan Ctrl+F10 (atau Command+Ctrl+R pada macOS).

    Opsi ini memungkinkan Anda menerapkan perubahan resource dan kode dengan memulai ulang aktivitas saat ini tanpa memulai ulang aplikasi Anda.

Mengaktifkan fallback Run untuk Apply Changes

Jika perubahan yang Anda buat tidak dapat diterapkan tanpa memulai ulang aplikasi, Android Studio akan meminta Anda untuk Run Ikon Run (menjalankan) aplikasi Anda lagi. Namun, jika tidak ingin diminta setiap kali hal ini terjadi, Anda dapat mengonfigurasi Android Studio untuk otomatis Run (menjalankan) aplikasi Anda setiap kali perubahan tidak dapat diterapkan.

Untuk mengaktifkan perilaku ini, ikuti langkah-langkah berikut:

  1. Buka dialog Settings atau Preferences:

    • Pada Windows atau Linux, pilih File > Settings dari panel menu.
    • Pada macOS, pilih Android Studio > Preferences dari panel menu.
  2. Arahkan ke Build, Execution, Deployment > Deployment.

  3. Centang kotak untuk mengaktifkan fallback Run otomatis untuk salah satu tindakan Apply Changes.

  4. Klik OK.

Batasan

Apply Changes memiliki batasan berikut:

  • Apply Changes hanya kompatibel dengan perangkat yang menjalankan Android 8.0 (API level 26) atau yang lebih tinggi.
  • Seperti Instant Run, perubahan kode tertentu tidak dapat diterapkan hingga aplikasi dimulai ulang, termasuk:
    • Menambah atau menghapus class, metode, atau kolom
    • Mengubah manifes
    • Mengubah tanda tangan metode
    • Mengubah pengubah metode atau class
    • Mengganti nama class
    • Mengubah pewarisan class
    • Menambahkan atau menghapus resource
    • Mengubah library native (file .so)
    • Mengubah nilai dalam Enums

Masalah umum

Apply Changes memiliki masalah umum berikut:

  • Apply Changes terkadang lebih lambat daripada Instant Run. Prioritas awal kami adalah stabilitas, dan kami akan terus meningkatkan performa sepanjang beberapa bulan mendatang.
  • Anda mungkin menemukan perilaku yang tidak terduga jika menggunakan classloader kustom selain konteks thread aplikasi dan sistem.

IntelliJ IDEA 2019.1

Android Studio IDE inti telah diupdate dengan penyempurnaan dari IntelliJ IDEA melalui rilis 2019.1, seperti penyesuaian tema.

Hal ini juga mencakup peningkatan dari update perbaikan bug berikut:

Android Studio 3.6

Bagian ini menyediakan ringkasan fitur dan perubahan baru pada Android Studio 3.6.

Apply Changes

Sekarang Anda dapat menambahkan class, lalu men-deploy perubahan kode tersebut ke aplikasi yang sedang berjalan dengan mengklik Apply Code Changes Ikon Apply Code Changes atau Apply Changes and Restart Activity Ikon Apply Changes.

Untuk mempelajari perbedaan antara dua tindakan ini lebih lanjut, lihat Apply Changes.

Update NDK

Update berikut mendukung pengembangan native (C/C++) di Android Studio.

Dukungan Kotlin

Fitur NDK di Android Studio berikut, yang sebelumnya didukung di Java, sekarang juga didukung di Kotlin:

  • Menavigasi dari deklarasi JNI ke fungsi implementasi yang terkait di C/C++. Lihat pemetaan ini dengan mengarahkan kursor ke atas penanda item C atau C++ di dekat nomor baris dalam file kode sumber terkelola.
  • Membuat fungsi penerapan stub secara otomatis untuk deklarasi JNI. Tentukan deklarasi JNI terlebih dahulu, lalu ketik "jni" atau nama metode dalam file C/C++ untuk mengaktifkan.

  • Fungsi implementasi native yang tidak digunakan ditandai sebagai peringatan dalam kode sumber. Deklarasi JNI yang tidak memiliki implementasi juga ditandai sebagai error.

  • Jika Anda mengganti nama (memfaktorkan ulang) fungsi implementasi native, semua deklarasi JNI yang terkait akan diperbarui. Ganti nama deklarasi JNI untuk memperbarui fungsi implementasi native.

  • Pemeriksaan tanda tangan untuk implementasi JNI yang terikat secara implisit.

Penyempurnaan JNI lainnya

  • Tampilan visual

    • Petunjuk jenis untuk nilai kembalian dan parameter ditampilkan dalam fungsi implementasi JNI.
    • Nama fungsi JNI-mangled dapat dikemas.

  • Dukungan RegisterNatives

    • Pelengkapan otomatis untuk nama deklarasi metode, jenis parameter, dan jenis kembalian.

    • Pemfaktoran ulang ganti nama untuk nama deklarasi metode.

    • Pemeriksaan tanda tangan untuk fungsi JNI terikat.

  • Bantuan fungsi JNI lainnya

    • Dukungan pelengkapan otomatis, inspeksi, navigasi, dan pemfaktoran ulang ganti nama untuk string literal dalam:
      • FindClass
      • GetMethodID dan GetStaticMethodID
      • GetFieldID dan GetStaticFieldID
    • Berbagai inspeksi untuk:
      • Call[Static]<type>Method
      • CallNonvirtual<type>Method
      • Get[Static]<type>Field
      • NewObject