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 節點下配置

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 中,那么將會構建失敗並且發出 重復路徑(或文件)的錯誤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM