Android 17 hat mit der dritten Betaversion heute offiziell die Plattformstabilität erreicht. Das bedeutet, dass die API-Oberfläche gesperrt ist. Sie können die endgültigen Kompatibilitätstests durchführen und Ihre auf Android 17 ausgerichteten Apps im Google Play Store veröffentlichen. Darüber hinaus bietet die dritte Betaversion eine Reihe neuer Funktionen, mit denen Sie bessere, sicherere und stärker integrierte Anwendungen entwickeln können.
Apps, Bibliotheken, Tools und Game-Engines vorbereiten
Wenn Sie ein SDK, eine Bibliothek, ein Tool oder eine Game-Engine entwickeln, ist es noch wichtiger, jetzt alle erforderlichen Updates vorzubereiten, damit Ihre nachgelagerten App- und Spieleentwickler nicht durch Kompatibilitätsprobleme blockiert werden und die neuesten SDK-Funktionen nutzen können. Informieren Sie Ihre nachgelagerten Entwickler, wenn Updates erforderlich sind, um Android 17 vollständig zu unterstützen.
Beim Testen wird Ihre Produktions-App oder eine Test-App, die Ihre Bibliothek oder Engine verwendet, über Google Play oder auf andere Weise auf einem Gerät oder Emulator mit Android 17 Beta 3 installiert. Testen Sie alle Abläufe Ihrer App und suchen Sie nach funktionalen Problemen oder Problemen mit der Benutzeroberfläche. Sehen Sie sich die Verhaltensänderungen an, um Ihre Tests zu fokussieren. Jede Android-Version enthält Plattformänderungen, die den Datenschutz, die Sicherheit und die allgemeine Nutzerfreundlichkeit verbessern. Diese Änderungen können sich auf Ihre Apps auswirken. Hier sind einige Änderungen, auf die Sie sich konzentrieren sollten:
- Größenänderung auf großen Bildschirmen: Wenn Sie Android 17 als Zielversion festlegen, können Sie die Einschränkungen für Ausrichtung, Größenänderung und Seitenverhältnis auf großen Bildschirmen nicht mehr deaktivieren.
- Dynamisches Laden von Code:Wenn Ihre App auf Android 17 oder höher ausgerichtet ist, gilt der in Android 14 eingeführte sicherere Schutz für das dynamische Laden von Code (Dynamic Code Loading, DCL) für DEX- und JAR-Dateien jetzt auch für native Bibliotheken. Alle nativen Dateien, die mit System.load() geladen werden, müssen als schreibgeschützt markiert werden. Andernfalls gibt das System UnsatisfiedLinkError aus.
- CT standardmäßig aktivieren: Die Zertifikattransparenz (Certificate Transparency, CT) ist standardmäßig aktiviert. Unter Android 16 ist CT verfügbar, aber Apps mussten sich dafür anmelden.
- Schutz für lokale Netzwerke: Bei Apps, die auf Android 17 oder höher ausgerichtet sind, wird der Zugriff auf lokale Netzwerke standardmäßig blockiert. Verwenden Sie nach Möglichkeit datenschutzfreundliche Auswahlen und nutzen Sie für einen umfassenden, dauerhaften Zugriff die neue Berechtigung ACCESS_LOCAL_NETWORK.
Verbesserungen bei Medien und Kamera
Anpassungsoptionen für die Bildauswahl
Unter Android können Sie jetzt die visuelle Darstellung der Bildauswahl anpassen, damit sie besser zur Benutzeroberfläche Ihrer App passt. Mit der neuen PhotoPickerUiCustomizationParams API können Sie das Seitenverhältnis der Rasteransicht vom Standardquadrat 1:1 in eine Hochformatanzeige 9:16 ändern. Diese Flexibilität gilt sowohl für den Intent ACTION_PICK_IMAGES als auch für die eingebettete Bildauswahl. So können Sie ein einheitliches Erscheinungsbild beibehalten, wenn Nutzer mit Medien interagieren.
Das ist Teil unserer Bemühungen, die datenschutzfreundliche Android-Bildauswahl nahtlos in Ihre App zu integrieren. Weitere Informationen dazu, wie Sie die Bildauswahl direkt in Ihre App einbetten können, um die bestmögliche native Nutzererfahrung zu bieten.
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)
Unterstützung für das Bildformat RAW14: Android 17 unterstützt über die neue Konstante ImageFormat.RAW14 das Bildformat RAW14, den De-facto-Branchenstandard für hochwertige digitale Fotografie. RAW14 ist ein Einkanalformat mit 14 Bit pro Pixel, das ein dicht gepacktes Layout verwendet, bei dem jeweils vier aufeinanderfolgende Pixel in sieben Byte gepackt werden.
Anbieterspezifische Kameraerweiterungen:Android 17 bietet anbieterspezifische Erweiterungen, mit denen Hardwarepartner benutzerdefinierte Kameraerweiterungsmodi definieren und implementieren können. So erhalten Sie Zugriff auf die besten und neuesten Kamerafunktionen wie „Super Resolution“ oder innovative KI-basierte Verbesserungen. Sie können diese Modi mit der API isExtensionSupported(int) abfragen.
APIs für Kameragerätetypen:Mit den neuen Android 17-APIs können Sie den zugrunde liegenden Gerätetyp abfragen, um zu ermitteln, ob es sich bei der Kamera um eine integrierte Hardware, eine externe USB-Webcam oder eine virtuelle Kamera handelt.
Unterstützung für Bluetooth LE Audio-Hörgeräte
Android enthält jetzt eine spezielle Gerätekategorie für Bluetooth Low Energy (BLE) Audio-Hörgeräte. Mit der Konstante AudioDeviceInfo.TYPE_BLE_HEARING_AID kann Ihre App jetzt Hörgeräte von normalen Headsets unterscheiden.
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 }
Granulares Audio-Routing für Hörgeräte
Unter Android 17 können Nutzer unabhängig voneinander verwalten, wo bestimmte Systemtöne wiedergegeben werden. Sie können Benachrichtigungen, Klingeltöne und Alarme an verbundene Hörgeräte oder den integrierten Lautsprecher des Geräts weiterleiten.
Erweiterter HE-AAC-Software-Encoder
Android 17 bietet einen vom System bereitgestellten erweiterten HE-AAC-Software-Encoder. Dieser Encoder unterstützt sowohl niedrige als auch hohe Bitraten mit einheitlicher Sprach- und Audiocodierung. Sie können über die MediaCodec API auf diesen Encoder zugreifen. Verwenden Sie dazu den Namen c2.android.xheaac.encoder oder fragen Sie nach dem MIME-Typ 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)
Leistungs- und Akkuverbesserungen
Weniger Wakelocks mit Listener-Unterstützung für Alarme, die im Leerlauf ausgelöst werden dürfen
Android 17 bietet eine neue Variante von AlarmManager.setExactAndAllowWhileIdle, die anstelle eines PendingIntent einen OnAlarmListener akzeptiert. Dieser neue callbackbasierte Mechanismus ist ideal für Apps, die derzeit auf kontinuierliche Wakelocks angewiesen sind, um regelmäßig Aufgaben auszuführen, z. B. Messaging-Apps, die Socketverbindungen aufrechterhalten.
val alarmManager = getSystemService(AlarmManager::class.java)
val listener = AlarmManager.OnAlarmListener {
// Do work here
}
alarmManager.setExactAndAllowWhileIdle(
AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 60000,
listener,
null
)
Datenschutzaktualisierungen
Vom System bereitgestellter Standort-Button
Android führt einen vom System gerenderten Button „Standort“ ein, den Sie mit einer Android Jetpack-Bibliothek direkt in das Layout Ihrer App einbetten können. Wenn ein Nutzer auf diesen System-Button tippt, erhält Ihre App nur für die aktuelle Sitzung Zugriff auf den genauen Standort. Dazu müssen Sie die Berechtigung USE_LOCATION_BUTTON deklarieren.
Separate Einstellungen für die Passwortsichtbarkeit für Touch- und physische Tastaturen
Mit dieser Funktion wird die vorhandene Systemeinstellung „Passwörter anzeigen“ in zwei separate Nutzereinstellungen aufgeteilt: eine für Touch-Eingaben und eine für Eingaben über physische Tastaturen (Hardware). Zeichen, die über physische Tastaturen eingegeben werden, werden jetzt standardmäßig sofort ausgeblendet.
val isPhysical = event.source and InputDevice.SOURCE_KEYBOARD == InputDevice.SOURCE_KEYBOARD val shouldShow = android.text.ShowSecretsSetting.shouldShowPassword(context, isPhysical)
Sicherheit
Erzwungenes schreibgeschütztes dynamisches Laden von Code
Um die Sicherheit vor Code-Injection-Angriffen zu verbessern, erzwingt Android jetzt, dass dynamisch geladene native Bibliotheken schreibgeschützt sein müssen. Wenn Ihre App auf Android 17 oder höher ausgerichtet ist, müssen alle nativen Dateien, die mit System.load() geladen werden, vorher als schreibgeschützt markiert werden.
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)
Hybride APK-Signatur mit Post-Quanten-Kryptografie (PQC)
Um sich auf zukünftige Fortschritte im Quantencomputing vorzubereiten, unterstützt Android jetzt die Post-Quanten-Kryptografie (PQC) über das neue APK-Signaturschema v3.2. Dieses Schema verwendet einen hybriden Ansatz, bei dem eine klassische Signatur mit einer ML-DSA-Signatur kombiniert wird.
Nutzererfahrung und System-UI
Bessere Unterstützung für Widgets auf externen Displays
Diese Funktion verbessert die visuelle Konsistenz von App-Widgets, wenn sie auf verbundenen oder externen Displays mit unterschiedlichen Pixeldichten in DP- oder SP-Einheiten angezeigt werden.
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 )
Ausgeblendete App-Labels auf dem Startbildschirm
Android bietet jetzt eine Nutzereinstellung, mit der App-Namen (Labels) auf dem Startbildschirm ausgeblendet werden können. Das App-Symbol muss eindeutig und wiedererkennbar sein.
Interaktives Bild im Bild auf dem Desktop
Im Gegensatz zum herkömmlichen Bild-im-Bild-Modus bleiben diese angepinnten Fenster interaktiv und werden im Desktopmodus immer über anderen Anwendungsfenstern angezeigt.
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) {}
}
)
Überarbeitete Symbolleiste für die Bildschirmaufzeichnung
Hauptfunktion
Einstellungen für den Ausschluss von VPN-Apps
Mit dem neuen Intent ACTION_VPN_APP_EXCLUSION_SETTINGS kann Ihre App einen vom System verwalteten Einstellungsbildschirm starten, auf dem Nutzer Anwendungen auswählen können, die den VPN-Tunnel umgehen sollen.
val intent = Intent(Settings.ACTION_VPN_APP_EXCLUSION_SETTINGS)
if (intent.resolveActivity(packageManager) != null) {
startActivity(intent)
}
API-Updates für OpenJDK 25 und 21
Dieses Update bietet umfangreiche Funktionen und Verbesserungen aus OpenJDK 21 und OpenJDK 25, einschließlich der neuesten Unicode-Unterstützung und verbesserter SSL-Unterstützung für benannte Gruppen in TLS.
Erste Schritte mit Android 17
Sie können jedes unterstützte Pixel-Gerät registrieren oder die 64-Bit-System-Images mit dem Android-Emulator verwenden.
- Kompilieren Sie mit dem neuen SDK und melden Sie Probleme auf der Feedbackseite.
- Testen Sie Ihre aktuelle App auf Kompatibilität und prüfen Sie, ob sie von Änderungen in Android 17 betroffen ist.
Vollständige Informationen finden Sie auf der Android 17-Entwicklerwebsite.
Weiterlesen
-
Produktneuheiten
Wie heute auf der Android Show angekündigt, wird Android von einem Betriebssystem zu einem Intelligence-System. Das bietet mehr Möglichkeiten für die Interaktion mit Ihren Apps.
Matthew McCullough • Lesezeit: 4 Minuten
-
Produktneuheiten
Heute verbessern wir die Android-Entwicklung mit Gemma 4, unserem neuesten hochmodernen offenen Modell mit komplexen Schlussfolgerungs- und autonomen Tool-Aufruffunktionen.
Matthew McCullough • Lesezeit: 2 Minuten
-
Produktneuheiten
Eine Säule des Android-Ökosystems ist unser gemeinsames Engagement für das Vertrauen der Nutzer. Mit der Weiterentwicklung der mobilen Landschaft entwickeln wir auch unseren Ansatz zum Schutz sensibler Informationen weiter.
Robert Clifford • Lesezeit: 3 Minuten
Auf dem Laufenden bleiben
Lassen Sie sich Woche für Woche die neuesten Informationen zur Android-Entwicklung zusenden.