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-Testsubset erstellt, um sicherzustellen, dass von Instant Apps zulässige Verhaltensweisen funktionieren. Ziel ist es, das Größenwachstum von CTS zu minimieren, indem die Anzahl der zu portierenden Tests minimiert wird. Wenn der CTS im Instant App-Modus ausgeführt wird, bedeutet das, dass 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.
- Kann 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 Instant Apps die Möglichkeit 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.
Im Instant Apps-Modus ausgeführte Tests
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. Die OpenGL-Tests interagieren beispielsweise nicht mit dem Systemserver und müssen daher nicht im Instant Apps-Modus ausgeführt werden. Die Tests für Barrierefreiheit interagieren dagegen mit dem Systemserver und müssen im Instant Apps-Modus ausgeführt werden.
Nutzer müssen nicht nur die anwendbaren Module ermitteln, sondern auch festlegen, 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 prüfen, z. B. ob Dienste nicht angezeigt werden oder andere Apps nicht zu sehen sind. Normalerweise sind diese bereits geschrieben und müssen nicht portiert werden.
Fehler im Instant Apps-Modus testen
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, nicht funktionieren, melden Sie einen Fehler.
Fehlerbehebung
Wenn der Test mit der Meldung Failed to install MyCtsModule.apk on DEVICE (Installation von MyCtsModule.apk auf DEVICE fehlgeschlagen) fehlschlägt, 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.