CTS für Instant Apps

Instant Apps sind eine wichtige Funktion von Android 10. Daher ist es wichtig, dass sie richtig funktionieren. Instant Apps werden implizit installiert. Daher haben sie nur eingeschränkte Funktionen und werden in einer restriktiveren Sicherheits-Sandbox ausgeführt. Aufgrund der weitreichenden Natur dieser Einschränkungen kann es sein, dass kein Teil des Systems richtig mit Sofort-Apps funktioniert. Es wird eine CTS-Testuntermenge erstellt, um sicherzustellen, dass die von Instant Apps zugelassenen Verhaltensweisen funktionieren. Die Idee ist, die Größe des CTS zu minimieren, indem die minimalen Tests isoliert werden, die portiert werden müssen. Wenn CTS im Instant Apps-Modus ausgeführt wird, wird das 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:

  • Kann nur bestimmte Berechtigungen enthalten.
  • Sie können keine anderen Apps sehen, es sei denn, diese sind als für Instant-Apps sichtbar markiert.
  • Sie können nur auf bestimmte Systemeinstellungen zugreifen.
  • Kann nur auf bestimmte Systemeigenschaften zugreifen.
  • Dienste/Anbieter können nicht freigegeben werden.
  • Kann Nachrichten empfangen und senden, wobei für Übertragungen besondere Regeln gelten.

Außerdem müssen Instant Apps die neue Sicherheits-Sandbox aktivieren, um weitere Einschränkungen hinzuzufügen. Diese vielen besonderen Verhaltensweisen von Instant Apps betreffen 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 enthalten Tests, die auf Sofort-Apps anwendbar sind. Wenn die vom Modul getestete Funktion mit dem Systemserver interagiert, sollten diese Tests im Sofort-Apps-Modus ausgeführt werden. Die OpenGL-Tests interagieren beispielsweise nicht mit dem Systemserver und müssen daher nicht im Sofort-Apps-Modus ausgeführt werden. Die Barrierefreiheitstests interagieren jedoch mit dem Systemserver und müssen daher im Sofort-Apps-Modus ausgeführt werden.

Nutzer müssen nicht nur ermitteln, welche Module anwendbar sind, sondern auch, welche Tests in diesen Modulen relevant sind. Das Testen dienstspezifischer Verhaltensweisen für eine Plug-in-Architektur (z. B. AccessibilityService) ist im Sofort-App-Modus nicht anwendbar, da Sofort-Apps keine Dienste für andere Apps (einschließlich der Plattform) bereitstellen können. Tests, mit denen das Verhalten auf App-Seite validiert wird, sind jedoch für den Sofort-App-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 App-Modus nicht relevant. Es gibt eine Reihe von Tests, die nur für Sofort-Apps gelten und die Regeln für ihr Verhalten validieren, z. B. dass sie keine Dienste bereitstellen oder andere Apps nicht sehen. In der Regel sind diese bereits geschrieben und müssen nicht portiert werden.

Fehler in Instant Apps-Modus testen

Wenn der Test fehlschlägt, weil er Funktionen validiert, auf die Instant Apps nicht zugreifen können, ist er im Instant Apps-Modus nicht anwendbar. Markieren Sie den Test, damit er nur im Voll-App-Modus ausgeführt wird, indem Sie ihn mit @AppModeFull annotieren. Sie können diese Annotation auf Klassenebene anwenden, um alle Tests darin 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 Ihr Test mit Failed to install MyCtsModule.apk on DEVICE. Grund: „-116“. Suchen Sie in Logcat nach PackageManager-Meldungen. Wenn beispielsweise Can't replace Full App with Instant App: your_app angezeigt wird, deinstallieren Sie Ihre App zuerst mit adb.