More than one file was found with OS independent path 'xxx/xxx' 這個錯誤是在路徑中出現了重覆依賴。 解決辦法是配置打包選項, 在 android 節點下配置 ...
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 中,那麼將會構建失敗並且發出 重覆路徑(或文件)的錯誤。