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