Berita Produk

Beta Ketiga Android 17

Waktu baca: 5 menit
Matthew McCullough
Vice President, Product Management, Android Developer

Android 17 telah resmi mencapai stabilitas platform hari ini dengan Beta 3. Artinya, permukaan API dikunci; Anda dapat melakukan pengujian kompatibilitas akhir dan mengirimkan aplikasi yang menargetkan Android 17 ke Play Store. Selain itu, Beta 3 menghadirkan serangkaian kemampuan baru untuk membantu Anda membangun aplikasi yang lebih baik, lebih aman, dan sangat terintegrasi.

Siapkan aplikasi, library, alat, dan game engine Anda.

Jika Anda mengembangkan SDK, library, alat, atau game engine, Anda harus mempersiapkan update yang diperlukan sekarang untuk mencegah developer aplikasi dan game hilir Anda terhambat oleh masalah kompatibilitas dan memungkinkan mereka menargetkan fitur SDK terbaru. Harap beri tahu developer hilir Anda jika update diperlukan untuk mendukung Android 17 sepenuhnya.

large_Android17Timeline01.png

Pengujian melibatkan penginstalan aplikasi produksi atau aplikasi pengujian yang menggunakan library atau mesin Anda menggunakan Google Play atau cara lain ke perangkat atau emulator yang menjalankan Android 17 Beta 3. Jelajahi semua alur aplikasi Anda dan cari masalah fungsional atau UI. Tinjau perubahan perilaku untuk memfokuskan pengujian Anda. Setiap rilis Android berisi perubahan platform yang meningkatkan privasi, keamanan, dan keseluruhan pengalaman pengguna, dan perubahan ini dapat memengaruhi aplikasi Anda. Berikut beberapa perubahan yang perlu diperhatikan:

  • Perubahan ukuran di layar besar: Setelah menargetkan Android 17, Anda tidak dapat lagi memilih untuk tidak mempertahankan batasan orientasi, perubahan ukuran, dan rasio aspek di layar besar.
  • Pemuatan kode dinamis: Jika aplikasi Anda menargetkan Android 17 atau yang lebih tinggi, perlindungan Pemuatan Kode Dinamis (DCL) yang Lebih Aman yang diperkenalkan di Android 14 untuk file DEX dan JAR kini diperluas ke library native. Semua file native yang dimuat menggunakan System.load() harus ditandai sebagai hanya baca. Jika tidak, sistem akan menampilkan UnsatisfiedLinkError.
  • Aktifkan CT secara default: Transparansi sertifikat (CT) diaktifkan secara default. (Di Android 16, CT tersedia, tetapi aplikasi harus memilih untuk menggunakannya.)
  • Perlindungan jaringan lokal: Aplikasi yang menargetkan Android 17 atau yang lebih tinggi diblokir akses jaringan lokalnya secara default. Beralihlah ke penggunaan pemilih yang menjaga privasi jika memungkinkan, dan gunakan ACCESS_LOCAL_NETWORK baru untuk akses luas dan persisten.

Peningkatan kualitas media dan kamera

Opsi penyesuaian Pemilih Foto

Android kini memungkinkan Anda menyesuaikan presentasi visual pemilih foto agar lebih melengkapi antarmuka pengguna aplikasi Anda. Dengan memanfaatkan API PhotoPickerUiCustomizationParams baru, Anda dapat mengubah rasio aspek tampilan petak dari persegi 1:1 standar menjadi tampilan potret 9:16. Fleksibilitas ini mencakup intent ACTION_PICK_IMAGES dan pemilih foto yang disematkan, sehingga Anda dapat mempertahankan estetika yang kohesif saat pengguna berinteraksi dengan media.

large_(Default)11aspectratio.png

Semua ini adalah bagian dari upaya kami untuk membantu membuat pemilih foto Android yang menjaga privasi berintegrasi dengan lancar ke dalam pengalaman aplikasi Anda. Pelajari lebih lanjut cara menyematkan pemilih foto langsung ke aplikasi Anda untuk pengalaman yang paling native.

  val params = PhotoPickerUiCustomizationParams.Builder()
.setAspectRatio(PhotoPickerUiCustomizationParams.ASPECT_RATIO_PORTRAIT_9_16)
.build()
val intent = Intent(MediaStore.ACTION_PICK_IMAGES).apply {
putExtra(MediaStore.EXTRA_PICK_IMAGES_UI_CUSTOMIZATION_PARAMS, params)
}
startActivityForResult(intent, REQUEST_CODE)

Dukungan untuk format gambar RAW14: Android 17 memperkenalkan dukungan untuk format gambar RAW14 — standar industri de facto untuk fotografi digital kelas atas — melalui konstanta ImageFormat.RAW14 baru. RAW14 adalah format 14-bit per piksel satu saluran yang menggunakan tata letak yang padat, di mana setiap empat piksel berurutan dikemas ke dalam tujuh byte.

Ekstensi kamera yang ditentukan vendor: Android 17 menambahkan ekstensi yang ditentukan vendor untuk memungkinkan partner hardware menentukan dan menerapkan mode ekstensi kamera kustom guna memberi Anda akses ke fitur kamera terbaik dan terbaru, seperti 'Resolusi Super' atau peningkatan canggih yang didukung AI. Anda dapat membuat kueri untuk mode ini menggunakan API isExtensionSupported(int).

API jenis perangkat kamera: API Android 17 baru memungkinkan Anda mengkueri jenis perangkat pokok untuk mengidentifikasi apakah kamera adalah hardware bawaan, webcam USB eksternal, atau kamera virtual.

Dukungan alat bantu dengar Bluetooth LE Audio

Android kini menyertakan kategori perangkat khusus untuk alat bantu dengar Audio Bluetooth Low Energy (BLE). Dengan penambahan konstanta AudioDeviceInfo.TYPE_BLE_HEARING_AID, aplikasi Anda kini dapat membedakan alat bantu dengar dari headset biasa.

  val audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
val devices = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS)
val isHearingAidConnected = devices.any { it.type == AudioDeviceInfo.TYPE_BLE_HEARING_AID }

Pemilihan rute audio terperinci untuk alat bantu dengar

Android 17 memungkinkan pengguna mengelola secara independen tempat suara sistem tertentu diputar. Mereka dapat memilih untuk mengarahkan notifikasi, nada dering, dan alarm ke alat bantu dengar yang terhubung atau speaker bawaan perangkat.

Encoder software HE-AAC yang diperluas

Android 17 memperkenalkan encoder software Extended HE-AAC yang disediakan sistem. Encoder ini mendukung kecepatan bit rendah dan tinggi menggunakan coding audio dan ucapan yang terpadu. Anda dapat mengakses encoder ini melalui MediaCodec API menggunakan nama c2.android.xheaac.encoder atau dengan membuat kueri untuk jenis MIME audio/mp4a-latm.

  val encoder = MediaCodec.createByCodecName("c2.android.xheaac.encoder")
val format = MediaFormat.createAudioFormat(MediaFormat.MIMETYPE_AUDIO_AAC, 48000, 1)
format.setInteger(MediaFormat.KEY_BIT_RATE, 24000)
format.setInteger(MediaFormat.KEY_AAC_PROFILE, MediaCodecInfo.CodecProfileLevel.AACObjectXHE)
encoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE)

Peningkatan Performa dan Baterai

Mengurangi wakelock dengan dukungan pemroses untuk alarm yang diizinkan saat perangkat dalam kondisi tidak aktif

Android 17 memperkenalkan varian baru AlarmManager.setExactAndAllowWhileIdle yang menerima OnAlarmListener, bukan PendingIntent. Mekanisme baru berbasis callback ini ideal untuk aplikasi yang saat ini mengandalkan wakelock berkelanjutan untuk melakukan tugas berkala, seperti aplikasi pesan yang mempertahankan koneksi soket.

  val alarmManager = getSystemService(AlarmManager::class.java)
val listener = AlarmManager.OnAlarmListener {
// Do work here
}
alarmManager.setExactAndAllowWhileIdle(
AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 60000,
listener,
null
)

Pembaruan privasi

Tombol Lokasi yang disediakan sistem

localcafe.jpg

Android memperkenalkan tombol lokasi yang dirender sistem yang dapat Anda sematkan langsung ke tata letak aplikasi menggunakan library Android Jetpack. Saat pengguna mengetuk tombol sistem ini, aplikasi Anda akan diberi akses lokasi presisi hanya untuk sesi saat ini. Untuk menerapkannya, Anda perlu menyatakan izin USE_LOCATION_BUTTON.

Setelan visibilitas sandi terpisah untuk keyboard sentuh dan fisik

Fitur ini membagi setelan sistem "Tampilkan sandi" yang ada menjadi dua preferensi pengguna yang berbeda: satu untuk input berbasis sentuhan dan satu lagi untuk input keyboard fisik (hardware). Karakter yang dimasukkan melalui keyboard fisik kini disembunyikan secara langsung secara default.

  val isPhysical = event.source and InputDevice.SOURCE_KEYBOARD == InputDevice.SOURCE_KEYBOARD
val shouldShow = android.text.ShowSecretsSetting.shouldShowPassword(context, isPhysical)

Keamanan

Pemuatan kode dinamis hanya baca yang diterapkan

Untuk meningkatkan keamanan terhadap serangan injeksi kode, Android kini mewajibkan library native yang dimuat secara dinamis harus bersifat hanya baca. Jika aplikasi Anda menargetkan Android 17 atau yang lebih tinggi, semua file native yang dimuat menggunakan System.load() harus ditandai sebagai hanya baca terlebih dahulu.

  val libraryFile = File(context.filesDir, "my_native_lib.so")
// Mark the file as read-only before loading to comply with Android 17+ security requirements
libraryFile.setReadOnly()
System.load(libraryFile.absolutePath)

Penandatanganan APK Hybrid Kriptografi Pasca-Kuantum (PQC)

Untuk bersiap menghadapi kemajuan komputasi kuantum di masa mendatang, Android memperkenalkan dukungan untuk Kriptografi Pasca-Kuantum (PQC) melalui APK Signature Scheme v3.2 yang baru. Skema ini menggunakan pendekatan hybrid, yang menggabungkan tanda tangan klasik dengan tanda tangan ML-DSA.

Pengalaman pengguna dan UI sistem

Dukungan yang lebih baik untuk widget di layar eksternal

Fitur ini meningkatkan konsistensi visual widget aplikasi saat ditampilkan di layar eksternal atau terhubung dengan kepadatan piksel yang berbeda menggunakan unit DP atau SP.

  val options = appWidgetManager.getAppWidgetOptions(appWidgetId)
val displayId = options.getInt(AppWidgetManager.OPTION_APPWIDGET_DISPLAY_ID)
val remoteViews = RemoteViews(context.packageName, R.layout.widget_layout)
remoteViews.setViewPadding(
R.id.container,
16f, 8f, 16f, 8f,
TypedValue.COMPLEX_UNIT_DIP
)

Label aplikasi tersembunyi di layar utama

Hiddenapplabelsonthehomescreen.png

Android kini menyediakan setelan pengguna untuk menyembunyikan nama (label) aplikasi di ruang kerja layar utama. Pastikan ikon aplikasi Anda berbeda dan mudah dikenali.

Picture-in-Picture Interaktif Desktop

Tidak seperti Picture-in-Picture tradisional, jendela yang disematkan ini tetap interaktif sekaligus selalu berada di atas jendela aplikasi lain dalam mode desktop.

  val appTask: ActivityManager.AppTask = activity.getSystemService(ActivityManager::class.java).appTasks[0]
appTask.requestWindowingLayer(
ActivityManager.AppTask.WINDOWING_LAYER_PINNED,
context.mainExecutor,
object : OutcomeReceiver<Int, Exception> {
override fun onResult(result: Int) {
if (result == ActivityManager.AppTask.WINDOWING_LAYER_REQUEST_GRANTED) {
// Task successfully moved to pinned layer
}
}
override fun onError(error: Exception) {}
}
)

Toolbar perekaman layar yang didesain ulang

large_Recording-redesign.png

Fungsi inti

Setelan pengecualian aplikasi VPN

Dengan menggunakan Intent ACTION_VPN_APP_EXCLUSION_SETTINGS yang baru, aplikasi Anda dapat meluncurkan layar Setelan yang dikelola sistem tempat pengguna dapat memilih aplikasi untuk melewati tunnel VPN.

  val intent = Intent(Settings.ACTION_VPN_APP_EXCLUSION_SETTINGS)
if (intent.resolveActivity(packageManager) != null) {
startActivity(intent)
}

Update API OpenJDK 25 dan 21

Update ini menghadirkan fitur dan peningkatan yang ekstensif dari OpenJDK 21 dan OpenJDK 25, termasuk dukungan Unicode terbaru dan dukungan SSL yang ditingkatkan untuk grup bernama di TLS.

Mulai menggunakan Android 17

Anda dapat mendaftarkan perangkat Pixel yang didukung atau menggunakan image sistem 64-bit dengan Android Emulator.

  • Kompilasi terhadap SDK baru dan laporkan masalah di halaman masukan.
  • Uji kompatibilitas aplikasi Anda saat ini dan pelajari apakah aplikasi Anda terpengaruh oleh perubahan di Android 17.

Untuk informasi lengkap, buka situs developer Android 17.

Ditulis oleh:

Lanjutkan membaca