3

測試時,我有它由多個gradle這個模塊的應用:衝突提供程序錯誤在多模塊機器人項目

App -- main app module with dependencies to all submodules 
| 
|-- API - library module 
| |-- Constants for authority etc. 
| 
|-- DB-Impl - library module 
| |-- ContentProvider for the data specified in API 
| 
|-- Extension - library module 
| |-- Dependency on API and test-dependency on DB-Impl 

構建和部署主要APK時,這是工作的罰款。所有模塊在清單中使用相同的sharedUserId,並且可以從DB-Impl訪問提供者。

但是,當我嘗試運行不同模塊的檢測測試時,它變得很複雜。

例如:我運行DB-Impl測試,該模塊在設備上單獨安裝。當我然後想要部署主應用程序,或者嘗試運行它的測試時,apk安裝失敗,因爲它還包含提供程序,會引發INSTALL_FAILED_CONFLICTING_PROVIDER錯誤。

擴展模塊也是如此。它需要通常包含在主應用程序apk中的數據庫。當簡單地運行測試時,他們會失敗,因爲提供者不會被安裝。所以我在DB-Impl模塊上添加了一個androidTestCompile依賴項。現在這個測試apk還包含提供者定義,甚至導致更多的錯誤。

我試着在測試任務上添加一個任務依賴項,所以它會運行uninstallAll,但是這隻會卸載它調用的模塊,所以我將不得不手動卸載可能隨提供程序提供的每個模塊。

是否有避免常見的策略是問題?

回答

0

我碰到同樣的問題,只找到一種方法來解決它。您需要在androidTest目錄中創建Manifest.xml,並用另一個權限重新聲明內容提供者(例如追加「.test」後綴),還需要爲「provider」xml元素添加其他屬性:「tools:node ='replace' 「,用這種方法你可以覆蓋你的庫模塊測試apk的內容提供者權限。

相關問題