More than one file was found with OS independent path 'xxx/xxx'
這個錯誤是在路徑中出現了重復依賴。
解決辦法是配置打包選項, 在 android 節點下配置
packagingOptions {
pickFirst 'lib/arm64-v8a/libgnustl_shared.so'
pickFirst 'lib/armeabi-v7a/libgnustl_shared.so'
}
可以配置三個選項
- pickFirst 使用第一個
- merge 合並
- exclude 排除
三種模式
有三種模式可供選擇,對應上面的三個選項
第一選擇
這個模式匹配到的路徑(或文件)將會被選中並打包進 APK。如果匹配到了多個相同的路徑(或文件)只會使用第一個。
合並
這個模式匹配到的路徑(或文件)會被合並打包進 APK。當合並兩個文件時,如果第一個文件結尾沒有換行,會追加一個換行符到末尾,然后是后面的文件,不管是什么文件類型都是如此。
排除
這個模式匹配到的路徑(或文件)將不會被打包進 APK。
這三種模式采用的算法如下:
第一選擇模式
如果第一選擇模式匹配到的路徑(或文件)沒有在 APK 中,那么這個路徑(或文件)將會被打包進 APK 。
如果第一選擇模式匹配到的路徑(或文件)已經在 APK 中,那么這個路徑(或文件)將不會被打包進 APK 。
合並模式
如果合並模式匹配到的路徑(或文件)沒有在 APK 中,那么這個路徑(或文件)將會被打包進 APK 。
如果合並模式匹配到的路徑(或文件)已經在 APK 中,那么將會合並路徑(或文件)到已經存在 APK 中的那個路徑(或文件)。
排除模式
排除模式匹配到的路徑(或文件)將不會被打包進 APK 中。
如果以上模式都沒有匹配到的路徑(或文件)並且這個路徑(或文件)沒有在 APK 中,那么將會被打包進 APK 。
如果以上模式都沒有匹配到的路徑(或文件)並且這個路徑(或文件)已經在 APK 中,那么將會構建失敗並且發出 重復路徑(或文件)的錯誤。