Notizie sui prodotti

La terza beta di Android 17

5 minuti di lettura
Matthew McCullough
Vice President, Product Management, Android Developer

Android 17 ha raggiunto ufficialmente la stabilità della piattaforma oggi con la beta 3. Ciò significa che la superficie API è bloccata. Puoi eseguire i test di compatibilità finali e inviare le app destinate ad Android 17 al Play Store. Inoltre, la beta 3 offre una serie di nuove funzionalità per aiutarti a creare applicazioni migliori, più sicure e altamente integrate.

Prepara app, librerie, strumenti e motori di gioco.

Se sviluppi un SDK, una libreria, uno strumento o un motore grafico, è ancora più importante preparare ora gli aggiornamenti necessari per evitare che gli sviluppatori di app e giochi downstream vengano bloccati da problemi di compatibilità e consentire loro di utilizzare le funzionalità più recenti dell'SDK. Informa gli sviluppatori downstream se sono necessari aggiornamenti per supportare completamente Android 17.

large_Android17Timeline01.png

I test prevedono l'installazione dell'app di produzione o di un'app di test che utilizza la libreria o il motore tramite Google Play o altri mezzi su un dispositivo o un emulatore che esegue Android 17 beta 3. Esamina tutti i flussi dell'app e cerca problemi funzionali o dell'interfaccia utente. Esamina le modifiche al comportamento per concentrare i test. Ogni release di Android contiene modifiche alla piattaforma che migliorano la privacy, la sicurezza e l'esperienza utente complessiva e queste modifiche possono influire sulle tue app. Ecco alcune modifiche su cui concentrarti:

  • Ridimensionamento su schermi di grandi dimensioni: se utilizzi Android 17 come target, non puoi più disattivare il mantenimento dei vincoli di orientamento, ridimensionamento e proporzioni su schermi di grandi dimensioni.
  • Caricamento dinamico del codice: se la tua app ha come target Android 17 o versioni successive, la protezione per il caricamento dinamico del codice (DCL) più sicuro introdotta in Android 14 per i file DEX e JAR ora si estende alle librerie native. Tutti i file nativi caricati utilizzando System.load() devono essere contrassegnati come di sola lettura. In caso contrario, il sistema genera UnsatisfiedLinkError.
  • Attiva CT per impostazione predefinita: la trasparenza dei certificati (CT) è attiva per impostazione predefinita. (Su Android 16, CT è disponibile, ma le app dovevano attivarlo.)
  • Protezioni della rete locale: per impostazione predefinita, alle app destinate ad Android 17 o versioni successive viene bloccato l'accesso alla rete locale. Se possibile, passa all'utilizzo di selettori che tutelano la privacy e utilizza il nuovo ACCESS_LOCAL_NETWORK per un accesso ampio e persistente.

Miglioramenti di contenuti multimediali e fotocamera

Opzioni di personalizzazione del selettore di foto

Android ora ti consente di personalizzare la presentazione visiva del selettore di foto per completare al meglio l'interfaccia utente della tua app. Sfruttando la nuova PhotoPickerUiCustomizationParams API, puoi modificare le proporzioni della visualizzazione a griglia dal quadrato standard 1:1 a una visualizzazione verticale 9:16. Questa flessibilità si estende sia all'intent ACTION_PICK_IMAGES sia al selettore di foto incorporato, consentendoti di mantenere un'estetica coerente quando gli utenti interagiscono con i contenuti multimediali.

large_(Default)11aspectratio.png

Tutto questo fa parte del nostro impegno per fare in modo che il selettore di foto Android che tutela la privacy si adatti perfettamente all'esperienza della tua app. Scopri di più su come incorporare il selettore di foto direttamente nella tua app per un'esperienza più nativa.

  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)

Supporto per il formato immagine RAW14: Android 17 introduce il supporto per il formato immagine RAW14, lo standard di fatto del settore per la fotografia digitale di fascia alta, tramite la nuova costante ImageFormat.RAW14. RAW14 è un formato a canale singolo, a 14 bit per pixel che utilizza un layout compatto in cui ogni quattro pixel consecutivi vengono compressi in sette byte.

Estensioni della fotocamera definite dal fornitore: Android 17 aggiunge le estensioni definite dal fornitore per consentire ai partner hardware di definire e implementare modalità di estensione della fotocamera personalizzate per fornirti l'accesso alle funzionalità della fotocamera migliori e più recenti, come "Super Resolution" o miglioramenti all'avanguardia basati sull'AI. Puoi eseguire query per queste modalità utilizzando l'API isExtensionSupported(int).

API del tipo di dispositivo della fotocamera: le nuove API di Android 17 ti consentono di eseguire query sul tipo di dispositivo sottostante per identificare se una fotocamera è hardware integrato, una webcam USB esterna o una fotocamera virtuale.

Supporto per apparecchi acustici Bluetooth LE audio

Android ora include una categoria di dispositivi specifica per gli apparecchi acustici Bluetooth Low Energy (BLE) audio. Con l'aggiunta della costante AudioDeviceInfo.TYPE_BLE_HEARING_AID, la tua app ora può distinguere gli apparecchi acustici dalle cuffie normali.

  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 }

Routing audio granulare per apparecchi acustici

Android 17 consente agli utenti di gestire in modo indipendente la riproduzione di suoni di sistema specifici. Possono scegliere di indirizzare notifiche, suonerie e sveglie agli apparecchi acustici collegati o all'altoparlante integrato del dispositivo.

Codificatore software HE-AAC esteso

Android 17 introduce un codificatore software HE-AAC esteso fornito dal sistema. Questo codificatore supporta velocità in bit sia basse che alte utilizzando la codifica unificata di audio e voce. Puoi accedere a questo codificatore tramite l'API MediaCodec utilizzando il nome c2.android.xheaac.encoder o eseguendo una query per il tipo 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)

Miglioramenti delle prestazioni e della batteria

Riduci i wakelock con il supporto dei listener per le sveglie allow-while-idle

Android 17 introduce una nuova variante di AlarmManager.setExactAndAllowWhileIdle che accetta un OnAlarmListener anziché un PendingIntent. Questo nuovo meccanismo basato su callback è ideale per le app che attualmente si basano su wakelock continui per eseguire attività periodiche, ad esempio le app di messaggistica che mantengono le connessioni socket.

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

Aggiornamenti sulla privacy

Pulsante di posizione fornito dal sistema

localcafe.jpg

Android sta introducendo un pulsante posizione sottoposto a rendering dal sistema che potrai incorporare direttamente nel layout della tua app utilizzando una libreria Android Jetpack. Quando un utente tocca questo pulsante di sistema, alla tua app viene concesso l'accesso alla posizione esatta solo per la sessione corrente. Per implementare questa funzionalità, devi dichiarare l'autorizzazione USE_LOCATION_BUTTON.

Impostazioni di visibilità della password discrete per tastiere touch e fisiche

Questa funzionalità suddivide l'impostazione di sistema esistente "Mostra password" in due preferenze utente distinte: una per gli input basati sul tocco e un'altra per gli input della tastiera fisica (hardware). Per impostazione predefinita, i caratteri inseriti tramite tastiere fisiche ora vengono nascosti immediatamente.

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

Sicurezza

Caricamento dinamico del codice di sola lettura forzato

Per migliorare la sicurezza contro gli attacchi di iniezione di codice, Android ora impone che le librerie native caricate dinamicamente siano di sola lettura. Se la tua app ha come target Android 17 o versioni successive, tutti i file nativi caricati utilizzando System.load() devono essere contrassegnati come di sola lettura in anticipo.

  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)

Firma dell'APK ibrida con crittografia post-quantistica (PQC)

Per prepararsi ai futuri progressi nel campo del calcolo quantistico, Android sta introducendo il supporto per la crittografia post-quantistica (PQC) tramite il nuovo schema di firma dell'APK v3.2. Questo schema utilizza un approccio ibrido, combinando una firma classica con una firma ML-DSA.

Esperienza utente e UI di sistema

Supporto migliore per i widget sui display esterni

Questa funzionalità migliora la coerenza visiva dei widget delle app quando vengono visualizzati su display esterni o collegati con densità di pixel diverse utilizzando le unità DP o 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
)

Etichette delle app nascoste nella schermata Home

Hiddenapplabelsonthehomescreen.png

Android ora fornisce un'impostazione utente per nascondere i nomi delle app (etichette) nell'area di lavoro della schermata Home. Assicurati che l'icona dell'app sia distinta e riconoscibile.

Picture in picture interattivo per desktop

A differenza del Picture in picture tradizionale, queste finestre fisse rimangono interattive e sempre in primo piano rispetto alle altre finestre delle applicazioni in modalità 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) {}
}
)

Barra degli strumenti di registrazione dello schermo riprogettata

large_Recording-redesign.png

Funzionalità di base

Impostazioni di esclusione delle app VPN

Utilizzando il nuovo intent ACTION_VPN_APP_EXCLUSION_SETTINGS, la tua app può avviare una schermata Impostazioni gestita dal sistema in cui gli utenti possono selezionare le applicazioni per ignorare il tunnel VPN.

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

Aggiornamenti delle API OpenJDK 25 e 21

Questo aggiornamento include funzionalità e perfezionamenti estesi di OpenJDK 21 e OpenJDK 25, tra cui il supporto Unicode più recente e il supporto SSL migliorato per i gruppi denominati in TLS.

Inizia a utilizzare Android 17

Puoi registrare qualsiasi dispositivo Pixel supportato o utilizzare le immagini di sistema a 64 bit con l'emulatore Android.

  • Compila con il nuovo SDK e segnala i problemi nella pagina di feedback.
  • Verifica la compatibilità dell'app attuale e scopri se è interessata dalle modifiche in Android 17.

Per informazioni complete, visita il sito per sviluppatori di Android 17.

Scritto da:

Continua a leggere