Instant-Apps sind eine wichtige Funktion von Android 10. Daher ist es wichtig, dass sie ordnungsgemäß funktionieren. Instant Apps werden implizit installiert. Daher haben sie nur eingeschränkte Funktionen und werden in einer restriktiveren Sicherheits-Sandbox ausgeführt. Aufgrund der umfassenden Natur dieser Einschränkungen besteht die Gefahr, dass jeder Teil des Systems nicht richtig mit Instant-Apps funktioniert. Es wird eine CTS-Testteilmenge erstellt, um sicherzustellen, dass die von Instant-Apps zugelassenen Verhaltensweisen funktionieren. Ziel ist es, das Größenwachstum von CTS zu minimieren, indem die minimalen Tests für den Portierungsvorgang isoliert werden. Wenn CTS im Instant Apps-Modus ausgeführt wird, muss das Test-APK als Instant App installiert und die Tests ausgeführt werden.
Einschränkungen für Instant Apps
Instant-Apps werden nicht vom Nutzer installiert und werden daher in einer eingeschränkten Sandbox mit den folgenden Einschränkungen ausgeführt:
- Kann nur bestimmte Berechtigungen enthalten.
- Andere Apps sind nur sichtbar, wenn sie für Instant Apps sichtbar gemacht wurden.
- Sie können nur auf bestimmte Systemeinstellungen zugreifen.
- Kann nur auf bestimmte Systemeigenschaften zugreifen.
- Dienste/Anbieter können nicht freigegeben werden.
- Kann mit speziellen Regeln für Übertragungen empfangen und gesendet werden.
Außerdem müssen Sie für Instant Apps aktivieren, dass die neue Sicherheits-Sandbox weitere Einschränkungen hinzufügen kann. Dieser breite Bereich an speziellen Verhaltensweisen bei Instant Apps deckt die gesamte Plattform ab. Daher muss es eine Möglichkeit geben, zu prüfen, ob Instant Apps wie erwartet auf allen Geräten im System funktionieren.
Tests, die im Instant Apps-Modus ausgeführt werden
Nicht alle CTS-Module enthalten Tests, die für Instant Apps gelten. Wenn die vom Modul getestete Funktion mit dem Systemserver interagiert, sollten diese Tests im Instant Apps-Modus ausgeführt werden. Beispielsweise interagieren die OpenGL-Tests nicht mit dem Systemserver. Sie müssen daher nicht im Instant Apps-Modus ausgeführt werden, während die Bedienungshilfen-Tests mit dem Systemserver interagieren. Sie müssen jedoch im Instant Apps-Modus ausgeführt werden.
Nutzer müssen nicht nur ermitteln, welche Module relevant sind, sondern auch, welche Tests in diesen Modulen relevant sind. Beispielsweise ist das Testen dienstspezifischer Verhaltensweisen für eine Plug-in-Architektur (z. B. AccessibilityService) im Instant App-Modus nicht möglich, da Instant Apps keine Dienste für andere Apps (einschließlich der Plattform) freigeben können. Tests zur Validierung von app-seitigen Verhaltensweisen sind jedoch für den Instant App-Modus geeignet. Ein weiteres Beispiel ist ein Test, bei dem überprüft wird, ob Verhaltensweisen, die mit einer Berechtigung verbunden sind, die eine Instant App nicht haben kann, im Instant App-Modus nicht relevant sind. Es gibt eine Reihe von Tests, die nur für Instant Apps gelten und die Regeln für ihr Verhalten validieren, z. B. ob Dienste nicht verfügbar gemacht werden oder keine anderen Apps angezeigt werden. Normalerweise sind diese bereits geschrieben und müssen nicht portiert werden.
Testfehler im Instant Apps-Modus
Wenn der Test fehlschlägt, weil Funktionen geprüft werden, auf die Instant Apps nicht zugreifen können, ist er im Instant Apps-Modus nicht anwendbar. Markieren Sie den Test, damit er nur im Vollanwendungsmodus ausgeführt wird, indem Sie ihn mit @AppModeFull
annotieren. Sie können diese Anmerkung auf Kursebene anwenden, um alle darin enthaltenen Tests auszuschließen.
Wenn der Test fehlschlägt, weil einige Funktionen, auf die Instant Apps zugreifen können, fehlerhaft sind, melden Sie den Fehler.
Fehlerbehebung
Wenn Ihr Test fehlschlägt, erscheint die Meldung Failed to install MyCtsModule.apk on DEVICE. Grund: „-116“, suchen Sie in Logcat nach Meldungen von PackageManager. Wenn beispielsweise die Meldung Can't replace Full App with Instant App: your_app (Vollständige App kann nicht durch Instant App ersetzt werden: your_app) angezeigt wird, deinstallieren Sie Ihre App zuerst mit adb.