2014-03-06 26 views
3

期間我想使用JSON-架構驗證在我的Android項目是這樣的:的Android,搖籃和複製文件的錯誤包裝

dependencies { compile 'com.github.fge:json-schema-validator:2.1.8' }

不幸的是搖籃停止包裝由於此文件中的重複的錯誤:

Path in archive: draftv3/schema Origin 1: /Users/andrej/.gradle/caches/modules-2/files-2.1/com.github.fge/json-schema-validator/2.1.8/4c2a5be8ce86c2338561a651d7d22fb4c4a8763d/json-schema-validator-2.1.8.jar Origin 2: /Users/andrej/.gradle/caches/modules-2/files-2.1/com.github.fge/json-schema-core/1.1.9/4ead9ba3fb3bde69d93f738042d12a9e60e41645/json-schema-core-1.1.9.jar

我知道我可以忽略這樣的文件:

packagingOptions { exclude 'draftv3/schema' }

但是該文件被json-schema-validator和json-validator-core使用,所以它在APK中是必需的。

我該如何強制Gradle繼續打包,同時保留這個文件的兩個版本之一(他們是平等的)?

感謝, 安德烈

回答

0

請嘗試以下方法只能從你的依賴排除draftv3/schema

dependencies { 
    compile('com.github.fge:json-schema-validator:2.1.8') { 
     exclude 'draftv3/schema' 
    } 
} 
+0

這將排除打包文件。但該文件由json-schema-validator和json-validator-core使用,因此它在APK中是必需的。 – Andrej

+0

你是如何添加json-validator-core依賴項的? – bolot

+0

json-validator-core自動添加「依賴關係編譯'com.github.fge:json-schema-validator:2.1.8' }」 – Andrej

1

對於其他人,這裏一個快速的解決方法,直到搖籃將增加包裝選擇適當的重複策略:

android.applicationVariants.all { variant-> variant.assemble.doFirst { exec { executable "sh" args "-c", "find ~/.gradle/caches/ -iname 'json-schema-validator*.jar' -exec zip -d '{}' 'draftv3/schema' \\;" args "-c", "find ~/.gradle/caches/ -iname 'json-schema-validator*.jar' -exec zip -d '{}' 'draftv4/schema' \\;" } } }

1

通過明確提及dra ftp/schema文件在build.graddle文件中我們可以解決這個問題。

android { 

    ... 

     packagingOptions { 

      ... 

      pickFirst 'draftv3/schema' 
      pickFirst 'draftv4/schema' 

     } 
    }