Android中运行免安装app,适用于免安装应用的 CTS
免安裝應用是 Android 10 的一項重要功能,因此必須確保這些應用能夠正常運行。免安裝應用是隱式安裝的,因此它們僅具有有限的功能,并需要在限制更多的安全沙盒中運行。由于這些限制普遍存在,因此系統的任何部分都存在無法正常運行免安裝應用的風險。為此,我們創建了一個 CTS 測試子集來確保免安裝應用允許的行為運作正常。核心理念就是,盡可能少地隔離要移植的測試,以此來最大限度地限制 CTS 大小的增長。在免安裝應用模式下運行 CTS,意味著將測試 APK 作為免安裝應用進行安裝并運行測試。
免安裝應用限制
免安裝應用并非由用戶安裝,因此它們需要在受限沙盒中運行,并受到以下限制:只能擁有特定權限。
無法看到其他應用,除非這些應用已標記為對免安裝應用可見。
只能訪問特定的系統設置。
只能訪問特定的系統屬性。
無法公開服務/提供程序。
可以按照與廣播有關的特殊規則收發消息。
此外,免安裝應用還必須選擇允許新的安全沙盒添加更多限制。免安裝應用的這類特殊行為廣泛存在于整個平臺上,因此需要有一種方法來驗證免安裝應用是否能在生態系統中的所有設備上按預期運行。
在免安裝應用模式下運行的測試
并非所有 CTS 模塊都包含適用于免安裝應用的測試。如果模塊所測試的功能需要和系統服務器進行交互,那么這些測試就應該在免安裝應用模式下運行。例如,OpenGL 測試不會和系統服務器進行交互,因此無需在免安裝應用模式下運行,而無障礙功能測試需要和系統服務器進行交互,因此需要在免安裝應用模式下運行。
用戶除了需要確定哪些模塊適用之外,還需要確定這些模塊中的哪些測試是相關的。例如,測試可插拔架構(例如 AccessibilityService)的服務特定行為不適用于免安裝應用模式,因為免安裝應用無法向其他應用(包括平臺)公開服務,而驗證應用端行為的測試則適用于免安裝應用模式。再比如,如果某個免安裝應用無法擁有某項權限,則可通過測試來驗證此權限背后的行為是否可在免安裝應用模式下運行。有一組僅適用于免安裝應用的測試,可用于驗證與此類應用的行為方式(例如,不公開服務或看不到其他應用)有關的規則。通常情況下,這些測試已經編寫好,且不需要移植。
免安裝模式下的測試失敗情況
如果測試因驗證免安裝應用無法訪問的功能而失敗,則表示該測試不適合在免安裝應用模式下運行。您可以使用 @AppModeFull 注釋測試,將其標記為僅可在完整應用模式下運行。您可以在類級別應用此注解,以排除類中的所有測試。
如果測試因免安裝應用可以訪問的某項功能被破壞而失敗,請提交錯誤。
問題排查
如果您的測試失敗并且系統顯示“Failed to install MyCtsModule.apk on DEVICE. Reason: '-116'”消息,請在 logcat 上查找 PackageManager 消息。例如,如果系統顯示“Can't replace Full App with Instant App: your_app”消息,則 adb 會先卸載您的應用。
總結
以上是生活随笔為你收集整理的Android中运行免安装app,适用于免安装应用的 CTS的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文件变成chk如何恢复正常
- 下一篇: android sina oauth2.