Instant Apps sind eine wichtige Funktion von Android 10. Daher ist es wichtig, dass sie ordnungsgemäß funktionieren. Instant Apps werden implizit installiert. Sie haben daher nur eingeschränkte Funktionen und werden in einer restriktiveren Sicherheits-Sandbox ausgeführt. Aufgrund der weitreichenden Natur dieser Einschränkungen besteht das Risiko, dass ein Teil des Systems nicht ordnungsgemäß mit Instant Apps funktioniert. Es wird eine CTS-Testuntergruppe erstellt, um sicherzustellen, dass die von Instant Apps zulässigen Verhaltensweisen funktionieren. Die Idee besteht darin, die Größe von CTS zu minimieren, indem nur die minimal erforderlichen Tests portiert werden. Wenn CTS im Instant Apps-Modus ausgeführt wird, wird die Test-APK als Instant App installiert und die Tests werden ausgeführt.
Einschränkungen für Instant Apps
Instant Apps werden nicht vom Nutzer installiert, sondern in einer eingeschränkten Sandbox mit den folgenden Einschränkungen ausgeführt:
- Sie können nur bestimmte Berechtigungen haben.
- Sie können andere Apps nur sehen, wenn diese als für Instant Apps sichtbar markiert sind.
- Sie können nur auf bestimmte Systemeinstellungen zugreifen.
- Sie können nur auf bestimmte Systemeigenschaften zugreifen.
- Sie können keine Dienste/Anbieter verfügbar machen.
- Sie können mit speziellen Regeln für Broadcasts senden und empfangen.
Außerdem müssen Instant Apps zustimmen, dass die neue Sicherheits-Sandbox weitere Einschränkungen hinzufügt. Diese Vielzahl an besonderen Verhaltensweisen im Zusammenhang mit Instant Apps betrifft die gesamte Plattform. Daher muss es eine Möglichkeit geben, zu prüfen, ob Instant Apps auf allen Geräten im Ökosystem wie erwartet funktionieren.
Tests im Instant Apps-Modus
Nicht alle CTS-Module haben Tests, die auf Instant Apps anwendbar sind. Wenn die vom Modul getestete Funktion mit dem Systemserver interagiert, sollten diese Tests im Instant Apps-Modus ausgeführt werden. Die OpenGL-Tests interagieren beispielsweise nicht mit dem Systemserver und müssen daher nicht im Instant Apps-Modus ausgeführt werden. Die Tests zur Barrierefreiheit interagieren jedoch mit dem Systemserver und müssen daher im Instant Apps-Modus ausgeführt werden.
Neben der Identifizierung der anwendbaren Module müssen Nutzer auch festlegen, welche Tests in diesen Modulen relevant sind. Das Testen dienstspezifischer Verhaltensweisen für eine Plug-in-Architektur (z. B. AccessibilityService) ist für den Instant Apps-Modus nicht anwendbar, da Instant Apps keine Dienste für andere Apps (einschließlich der Plattform) verfügbar machen können. Tests, die das Verhalten auf App-Seite validieren, sind jedoch für den Instant Apps-Modus anwendbar. Ein weiteres Beispiel ist ein Test, der Verhaltensweisen hinter einer Berechtigung validiert, die eine Instant App nicht haben kann. Diese sind im Instant Apps-Modus nicht relevant. Es gibt eine Reihe von Tests, die nur für Instant Apps gelten und die Regeln für ihr Verhalten validieren, z. B. dass sie keine Dienste verfügbar machen oder andere Apps nicht sehen. Diese Tests sind in der Regel bereits geschrieben und müssen nicht portiert werden.
Testfehler im Instant Apps-Modus
Wenn der Test fehlschlägt, weil er eine Funktion validiert, auf die Instant Apps nicht zugreifen können, ist er im Instant Apps-Modus nicht anwendbar. Markieren Sie den Test mit @AppModeFull, damit er nur im Modus „Vollständige App“ ausgeführt wird. Sie können diese Annotation auf Klassenebene anwenden, um alle Tests darin auszuschließen.
Wenn der Test fehlschlägt, weil eine Funktion, auf die Instant Apps zugreifen können, nicht funktioniert, melden Sie einen Fehler.
Fehlerbehebung
Wenn der Test mit Failed to install MyCtsModule.apk on DEVICE. Reason: '-116' fehlschlägt, suchen Sie in logcat nach PackageManager-Meldungen. Wenn beispielsweise Can't replace Full App with Instant App: your_app angezeigt wird, deinstallieren Sie zuerst Ihre App mit dem Befehl `adb uninstall`.