2015-10-20 90 views
3

我有一個Android應用程序項目依賴於兩個Android庫。兩個Android庫指定具有相同資源ID的兩個資源。在舊的Ant構建系統中,庫的優先級是在project.properties文件中指定的,但這種文件在Gradle構建系統中未使用。Android Gradle插件如何處理庫中的衝突資源?

儘管Resource Merging doc解釋了構建類型,產品風格,應用程序項目和庫項目之間衝突的資源的優先級和合並過程,但它沒有解釋當兩個庫(沒有公共依賴項)合併時發生的情況在一個單一的項目。在構建過程的合併過程中,Android Gradle插件如何確定哪個庫的資源具有更高的優先級?

+0

阿旺景觀的版本,你有沒有找到任何解決辦法? – Hasanaga

+0

我從來沒有找到解決方案。當我讀到Gradle構建系統的時候,這更像是我的一個假設性問題。我有這樣的想法,因爲我工作的一些項目使用與某些AOSP標識符相同的標識符。 –

+0

你不覺得它們的優先級與清單相同嗎?即您在build.gradle文件中提到的庫比下面的libs更具優先級。 – codevscolor

回答

3

沒有辦法指定圖書館資源的優先級。

只能安裝在資料庫前綴與

android { 
    resourcePrefix 'mylib_' 
} 
0

@Angela答案是偉大的解決您的(實際上是我的)問題,根據回答您的問題是如何的Android選擇合適的資源而究竟是什麼優先級:

從構建過程中resource merging部分:

優先順序如下:

BuildType - > Flavor - > main - > Dependencies。

...

這意味着,如果src/main/res

  • res/layout/foo.xml
  • res/layout-land/foo.xml

src/debug/res具有

  • res/layout/foo.xml

然後合併後的資源文件夾將包含從 src/debug/res默認但src/main/res