More than one file was found with OS independent path 'lib/armeabi-v7a/libgnustl_shared.so'

More than one file was found with OS independent path 'xxx/xxx'

這個錯誤是在路徑中出現了重複依賴。android

解決辦法是配置打包選項, 在 android 節點下配置算法

packagingOptions {
     pickFirst 'lib/arm64-v8a/libgnustl_shared.so'
     pickFirst 'lib/armeabi-v7a/libgnustl_shared.so'
 }

能夠配置三個選項code

  • pickFirst 使用第一個
  • merge 合併
  • exclude 排除

三種模式

有三種模式可供選擇,對應上面的三個選項v8

第一選擇it

這個模式匹配到的路徑(或文件)將會被選中並打包進 APK。若是匹配到了多個相同的路徑(或文件)只會使用第一個。io

合併class

這個模式匹配到的路徑(或文件)會被合併打包進 APK。當合並兩個文件時,若是第一個文件結尾沒有換行,會追加一個換行符到末尾,而後是後面的文件,不論是什麼文件類型都是如此。打包

排除配置

這個模式匹配到的路徑(或文件)將不會被打包進 APK。file

這三種模式採用的算法以下:

第一選擇模式

若是第一選擇模式匹配到的路徑(或文件)沒有在 APK 中,那麼這個路徑(或文件)將會被打包進 APK 。
若是第一選擇模式匹配到的路徑(或文件)已經在 APK 中,那麼這個路徑(或文件)將不會被打包進 APK 。

合併模式

若是合併模式匹配到的路徑(或文件)沒有在 APK 中,那麼這個路徑(或文件)將會被打包進 APK 。
若是合併模式匹配到的路徑(或文件)已經在 APK 中,那麼將會合並路徑(或文件)到已經存在 APK 中的那個路徑(或文件)。

排除模式

排除模式匹配到的路徑(或文件)將不會被打包進 APK 中。

若是以上模式都沒有匹配到的路徑(或文件)而且這個路徑(或文件)沒有在 APK 中,那麼將會被打包進 APK 。 若是以上模式都沒有匹配到的路徑(或文件)而且這個路徑(或文件)已經在 APK 中,那麼將會構建失敗而且發出 重複路徑(或文件)的錯誤。

相關文章
相關標籤/搜索