Android Studio 3.1 (Maret 2018)

Android Studio 3.1.0 merupakan rilis utama yang menyertakan berbagai peningkatan dan fitur baru.

3.1.4 (Agustus 2018)

Update untuk Android Studio 3.1 ini menyertakan perubahan dan perbaikan berikut:

  • Versi paket Kotlin saat ini adalah 1.2.50.
  • Project baru dibuat dengan kotlin-stdlib-jdk* artifacts, bukan dengan artefak kotlin-stdlib-jre* yang sudah tidak digunakan lagi.
  • Penguraian R8 untuk aturan ProGuard telah disempurnakan.
  • Bug berikut telah diperbaiki:
    • Gagal mencoba menjalankan class Utama Kotlin dengan error: "Error: Could not find or load main class..."
    • R8 memasuki loop tanpa batas saat melakukan pengoptimalan tertentu.
    • Penggunaan perintah Rerun failed tests di jendela Run terkadang secara keliru menampilkan pesan "No tests were found."
    • D8 tidak menangani instance invoke-virtual dengan benar, sehingga menyebabkan error dengan VerifyError: invoke-super/virtual can't be used on private method
    • Kompilator Data Binding bergantung pada versi com.android.tools:annotations yang lama. Kini kompilator ini menggunakan anotasi alat dari project dasar jika tersedia.
    • Android Studio mengalami error saat transisi fragmen jika menggunakan profiler.
    • Debugger tidak berfungsi saat men-debug tata letak yang memiliki kotak teks.
    • D8 gagal membaca beberapa file ZIP dengan karakter khusus.

3.1.3 (Juni 2018)

Update untuk Android Studio 3.1 ini menyertakan perbaikan bug berikut:

  • Kebocoran memori menyebabkan Android Studio menjadi lambat dan tidak responsif setelah Anda menggunakan Layout Editor. Update ini menyertakan perbaikan untuk sebagian besar masalah tersebut. Kami berencana untuk segera merilis update lain guna mengatasi kebocoran memori tambahan.
  • Beberapa aplikasi yang di-build dengan D8 mengalami error pada sebagian tablet Verizon Ellipsis.
  • Penginstalan aplikasi yang di-build dengan D8 gagal disertai error INSTALL_FAILED_DEXOPT pada perangkat yang menjalankan Android 5.0 atau 5.1 (API level 21 atau 22).
  • Beberapa aplikasi yang menggunakan library OkHttp dan di-build dengan D8 mengalami error pada perangkat yang menjalankan Android 4.4 (API level 19).
  • Terkadang Android Studio gagal dimulai, dengan pesan ProcessCanceledException saat inisialisasi class untuk com.intellij.psi.jsp.JspElementType.

3.1.2 (April 2018)

Update untuk Android Studio 3.1 ini menyertakan perbaikan bug berikut:

  • Dalam beberapa kasus, terjadi hang selama waktu yang tidak tentu saat keluar dari Android Studio.
  • Jika Instant Run diaktifkan, build yang dikonfigurasi dengan kumpulan sumber gagal dengan pesan berikut:

    "The SourceSet name is not recognized by the Android Gradle Plugin."

  • Jika Instan Run diaktifkan, build project Kotlin baru akan gagal saat dipicu oleh perintah Run.
  • Saat mengedit file build.gradle, terkadang ada penundaan yang cukup terasa antara mengetik karakter hingga karakter muncul di layar.
  • Dalam beberapa project dengan modul atau dependensi eksternal yang berjumlah besar, terjadi kegagalan build saat proses dexing disertai pesan error berikut:

    "RejectedExecutionException: Thread limit exceeded replacing blocked worker"

  • Komputasi daftar DEX utama D8 tidak memperhitungkan sebagian pemanggilan reflektif.

Update ini juga menyertakan perubahan yang membuat pemeriksaan lint dari Gradle menjadi jauh lebih cepat dalam beberapa skenario.

3.1.1 (April 2018)

Update untuk Android Studio 3.1 ini menyertakan perbaikan bug berikut:

  • Dalam beberapa kasus, saat project yang dibuat di Android Studio 3.0 dibuka untuk pertama kalinya di Android Studio 3.1, tugas Gradle-aware Make akan dihapus dari area Before launch pada Run/Debug Configurations. Hasilnya, project tersebut tidak di-build saat tombol Run atau Debug diklik, yang kemudian menyebabkan kegagalan seperti men-deploy APK yang salah dan error saat menggunakan Instant Run.

    Untuk mengatasi masalah ini, Android Studio 3.1.1 menambahkan tugas Gradle-aware Make ke konfigurasi peluncuran untuk project yang tidak memiliki entri ini. Modifikasi ini terjadi setelah sinkronisasi Gradle pertama ketika project dimuat.

  • Debugger mengalami error saat men-debug tata letak yang memiliki kotak teks jika pembuatan profil lanjutan diaktifkan.
  • Android Studio berhenti merespons setelah Anda mengklik Build Variants.
  • File AAR (Android archive) diekstrak dua kali, sekali saat proses sinkronisasi Gradle dan sekali saat proses build Gradle.
  • Elemen tidak ditemukan pada beberapa aset vektor yang dapat digambar yang diimpor dari file SVG.
  • Peringatan mengenai penghentian konfigurasi dependensicompile telah diperbarui dengan panduan konfigurasi implementation dan api yang lebih baik. Untuk mengetahui detail terkait pengalihan dari penggunaan konfigurasi compile, lihat dokumentasi untuk konfigurasi dependensi baru.

Coding/IDE

IntelliJ 2017.3.3

Android Studio IDE inti telah diupdate dengan peningkatan dari IntelliJ IDEA melalui rilis 2017.3.3. Peningkatan ini mencakup analisis alur kontrol yang lebih baik untuk koleksi dan string, peningkatan inferensi nullability, berbagai perbaikan cepat baru, serta masih banyak lagi.

Untuk mengetahui detailnya, lihat catatan rilis JetBrains untuk IntelliJ IDEA versi 2017.2 dan 2017.3, serta catatan rilis JetBrains untuk update perbaikan bug.

Pengoptimalan pengeditan SQL dengan Room

Saat menggunakan library database Room, Anda dapat memanfaatkan beberapa peningkatan pada pengeditan SQL:

  • Pelengkapan kode dalam Query dapat mengidentifikasi tabel (entity), kolom, parameter kueri, alias, gabungan, sub-kueri, dan klausa WITH SQL.
  • Penandaan sintaksis SQL kini berfungsi.
  • Anda dapat mengklik kanan nama tabel dalam SQL dan mengganti namanya, yang juga akan menulis ulang kode Java atau Kotlin terkait (termasuk, misalnya, jenis nilai yang ditampilkan kueri). Penggantian nama ini juga berfungsi secara dua arah, sehingga mengganti nama class atau field Java akan menulis ulang kode SQL terkait.
  • Penggunaan SQL akan ditampilkan saat menggunakan Find usages (klik kanan, lalu pilih Find usages dari menu konteks).
  • Untuk melihat deklarasi entity SQL dalam kode Java atau Kotlin, tekan tombol Control (Command di Mac) sambil mengklik entity.

Untuk mengetahui informasi tentang cara menggunakan SQL dengan Room, lihat Menyimpan data di database lokal menggunakan Room.

Update untuk data binding

Update ini menyertakan beberapa peningkatan untuk data binding:

  • Kini Anda dapat menggunakan objek LiveData sebagai kolom yang dapat diobservasi dalam ekspresi data binding. Class ViewDataBinding kini menyertakan metode setLifecycle() baru yang digunakan untuk mengamati objek LiveData.

  • Class ObservableField kini dapat menerima objek Observable lain dalam konstruktornya.

  • Anda dapat melihat pratinjau compiler inkremental baru untuk class data binding. Untuk mengetahui detail tentang compiler baru ini dan petunjuk untuk mengaktifkannya, lihat Compiler Data Binding V2.

    Manfaat compiler baru ini mencakup hal berikut:

    • Class ViewBinding dibuat oleh Plugin Android untuk Gradle sebelum compiler Java.
    • Library mempertahankan class binding yang dihasilkan saat aplikasi dikompilasi, bukan dibuat ulang setiap kalinya. Hal ini dapat meningkatkan performa secara signifikan untuk project multi-modul.

Compiler dan Gradle

D8 merupakan compiler DEX default

Kompilator D8 sekarang digunakan secara default untuk menghasilkan bytecode DEX.

Kompilator DEX baru ini memiliki beberapa kegunaan, di antaranya:

  • Proses dexing yang lebih cepat
  • Penggunaan memori yang lebih rendah
  • Pembuatan kode telah ditingkatkan (alokasi register yang lebih baik, tabel string yang lebih canggih)
  • Pengalaman proses debug yang lebih baik saat meninjau kode

Anda tidak perlu membuat perubahan apa pun pada kode atau alur kerja pengembangan untuk mendapatkan manfaat ini, kecuali jika sebelumnya Anda menonaktifkan compiler D8 secara manual.

Jika Anda menetapkan android.enableD8 ke false dalam gradle.properties, hapus tanda tersebut atau tetapkan ke true:

        android.enableD8=true
      

Untuk mengetahui detailnya, lihat Compiler DEX baru.

Desugaring inkremental

Untuk project yang menggunakan fitur bahasa Java 8, desugaring inkremental diaktifkan secara default, sehingga dapat mengefisienkan waktu build.

Desugaring mengonversi sugar sintaktis menjadi bentuk yang dapat diproses compiler secara lebih efisien.

Anda dapat menonaktifkan desugaring inkremental dengan menetapkan berikut ini dalam file gradle.properties project:

        android.enableIncrementalDesugaring=false
      

Jendela output yang disederhanakan

Gradle Console telah diganti dengan jendela Build, yang memiliki tab Sync dan Build.

Untuk mengetahui detail tentang cara menggunakan jendela Build baru yang telah disederhanakan, lihat Memantau proses build.

Kumpulan update dan pengindeksan serentak

Sinkronisasi Gradle dan proses pengindeksan IDE kini jauh lebih efisien, sehingga mengurangi waktu yang dihabiskan untuk banyak operasi pengindeksan yang tidak perlu.

C++ dan LLDB

Kami telah menerapkan banyak peningkatan performa dan kualitas dalam tahap coding, sinkronisasi, proses build, serta proses debug untuk pengembangan C++. Peningkatan ini meliputi:

  • Jika mengerjakan project C++ yang besar, Anda akan melihat peningkatan signifikan dalam mengurangi waktu yang dihabiskan untuk mem-build simbol. Waktu sinkronisasi juga jauh berkurang untuk project besar.

  • Performa saat mem-build dan menyinkronkan dengan CMake telah ditingkatkan melalui penggunaan ulang hasil yang di-cache secara lebih agresif.

  • Penambahan pemformat ("pretty printer") untuk struktur data C++ lainnya menjadikan output LLDB lebih mudah dibaca.

  • Kini LLDB hanya berfungsi dengan Android 4.1 (API level 16) dan yang lebih tinggi.

Catatan: Proses debug native dengan Android Studio 3.0 atau yang lebih tinggi tidak berfungsi di Windows 32 bit. Jika Anda menggunakan Windows 32 bit dan perlu men-debug kode native, gunakan Android Studio 2.3.

Kotlin

Kotlin telah diupgrade ke versi 1.2.30

Android Studio 3.1 menyertakan Kotlin versi 1.2.30.

Kini kode Kotlin dianalisis dengan pemeriksaan lint command line

Kini menjalankan lint dari command line akan menganalisis class Kotlin.

Untuk setiap project tempat lint akan dijalankan, repositori Maven Google harus disertakan dalam file build.gradle level teratas. Repositori Maven sudah disertakan untuk project yang dibuat di Android Studio 3.0 dan yang lebih tinggi.

Alat performa

Mengambil sampel proses C++ native dengan CPU Profiler

Kini CPU Profiler menyertakan konfigurasi default untuk merekam aktivitas dengan sampel dari thread native aplikasi. Anda dapat menggunakan konfigurasi ini dengan men-deploy aplikasi ke perangkat yang menjalankan Android 8.0 (API level 26) atau yang lebih baru, lalu memilih Sampled (Native) dari menu dropdown konfigurasi perekaman CPU Profiler. Setelah itu, rekam dan periksa aktivitas seperti yang biasa Anda lakukan.

Anda dapat mengubah setelan default, seperti interval pengambilan sampel, dengan membuat konfigurasi perekaman.

Untuk beralih kembali ke pelacakan thread Java, pilih konfigurasi Sampled (Java) atau Instrumented (Java).

Memfilter rekaman aktivitas CPU, hasil alokasi memori, dan heap dump

CPU Profiler dan Memory Profiler menyertakan fitur penelusuran yang memungkinkan Anda memfilter hasil dari perekaman pelacakan metode, alokasi memori, atau heap dump.

Untuk melakukan penelusuran, klik Filter di pojok kanan atas panel, ketik kueri, lalu tekan Enter.

Tips: Anda juga dapat membuka kolom penelusuran dengan menekan Control + F (Command + F di Mac).

Pada tab Flame Chart di CPU Profiler, stack panggilan yang menyertakan metode terkait kueri penelusuran akan ditandai dan dipindahkan ke sisi kiri diagram.

Untuk informasi selengkapnya tentang pemfilteran berdasarkan metode, class, atau nama paket, lihat Merekam dan memeriksa pelacakan metode.

Tab Request di Network Profiler

Kini Network Profiler dilengkapi tab Request yang memberikan detail tentang permintaan jaringan selama linimasa yang dipilih. Dalam versi sebelumnya, Network Profiler hanya memberikan informasi tentang respons jaringan.

Thread View di Network Profiler

Setelah memilih bagian linimasa di Network Profiler, Anda dapat memilih salah satu tab berikut untuk melihat detail selengkapnya tentang aktivitas jaringan selama jangka waktu tersebut:

  • Connection View: Memberikan informasi yang sama dengan versi Android Studio sebelumnya, yaitu mencantumkan file yang telah dikirim atau diterima selama bagian linimasa yang dipilih di seluruh thread CPU aplikasi. Untuk setiap permintaan, Anda dapat memeriksa ukuran, jenis, status, dan durasi transmisi.
  • Thread View: Menampilkan aktivitas jaringan setiap thread CPU aplikasi. Tampilan ini memungkinkan Anda memeriksa thread aplikasi yang menangani setiap permintaan jaringan.

Layout Inspector

Layout Inspector mendapatkan fitur-fitur baru, termasuk beberapa fungsi yang sebelumnya disediakan oleh fitur Hierarchy Viewer dan Pixel Perfect yang tidak digunakan lagi:

  • Tombol zoom dan pintasan keyboard untuk menavigasi serta memeriksa tata letak
  • Overlay petak referensi
  • Kemampuan memuat gambar referensi dan menggunakannya sebagai overlay (berguna untuk membandingkan tata letak dengan tiruan UI)
  • Render subtree preview untuk memisahkan tampilan dalam tata letak yang kompleks

Layout Editor

Palette di Layout Editor mendapatkan banyak peningkatan:

  • Penataan ulang kategori untuk tampilan dan tata letak.
  • Kategori Common baru untuk tampilan dan tata letak, yang dapat ditambahkan dengan perintah Favorite.
  • Peningkatan penelusuran untuk tampilan dan tata letak.
  • Perintah baru untuk membuka dokumentasi tentang elemen tampilan atau tata letak tertentu.

Anda dapat menggunakan perintah Convert view baru di Component tree atau editor desain untuk mengonversi tampilan atau tata letak menjadi jenis tampilan atau tata letak lain.

Kini Anda dapat dengan mudah membuat batasan untuk item di dekat tampilan yang dipilih menggunakan tombol Create a connection baru pada pemeriksa tampilan di bagian atas jendela Attributes.

Run dan Instant Run

Perilaku opsi Use same selection for future launches pada dialog Select deployment target dibuat lebih konsisten. Jika opsi Use same selection diaktifkan, maka dialog Select deployment target hanya akan terbuka saat Anda pertama kali menggunakan perintah Run hingga perangkat yang dipilih tidak lagi terhubung.

Saat menargetkan perangkat yang menjalankan Android 8.0 (API level 26) atau yang lebih baru, Instant Run dapat men-deploy perubahan pada resource tanpa menyebabkan aplikasi dimulai ulang. Hal ini memungkinkan karena resource dimuat dalam APK terpisah.

Emulator

Untuk detail tentang hal yang baru dan yang berubah di emulator sejak Android Studio 3.0, lihat catatan rilis Android Emulator dari versi 27.0.2 hingga versi 27.1.12.

Peningkatan utamanya mencakup:

  • Snapshot Quick Boot untuk menyimpan status emulator dan memulai lebih cepat, dengan kemampuan menggunakan perintah Save now untuk menyimpan status mulai kustom.
  • Layar emulator tanpa jendela.
  • Image sistem untuk Android 8.0 (API level 26), Android 8.1 (API level 27), dan Android P Pratinjau Developer.

Pengoptimalan antarmuka pengguna dan pengalaman pengguna

Lebih banyak tooltip, pintasan keyboard, dan pesan yang membantu

Kami telah menambahkan tooltip dan overlay pesan yang membantu di banyak tempat di Android Studio.

Guna melihat pintasan keyboard untuk berbagai perintah, cukup tahan kursor mouse di atas tombol hingga tooltip muncul.

Menu Tools > Android telah dihapus

Menu Tools > Android telah dihapus. Perintah yang sebelumnya ada dalam menu ini telah dipindahkan.

  • Banyak perintah yang dipindahkan langsung ke menu Tools.
  • Perintah Sync project with gradle files dipindahkan ke menu File.
  • Perintah Device Monitor telah dihapus, seperti dijelaskan di bawah.

Device Monitor tersedia dari command line

Di Android Studio 3.1, peran Device Monitor tidak sebesar sebelumnya. Dalam banyak kasus, fungsi yang tersedia melalui Device Monitor kini disediakan oleh fitur baru yang lebih baik.

Lihat dokumentasi Device Monitor untuk mendapatkan petunjuk tentang cara memanggil Device Monitor dari command line dan detail tentang alat yang tersedia melalui Device Monitor.