當前位置:首頁 » 編程軟體 » 編譯後文件沖突

編譯後文件沖突

發布時間: 2023-06-17 02:29:36

Ⅰ Android 集成三方SDK編譯時classes.jar文件沖突

這幾天的任務是將mapbox的工程合到程序中去,但是合並過程卻出現了問題
合並方法:在app的build.gradle中添加
dependencies {
compile ('com.mapbox.mapboxsdk:mapbox-android-sdk:0.7.4@aar'){
transitive=true
}
}
但是合並後會報錯:
Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2
這個錯誤是由於jar包沖突,解決方法如下:
方法一:找到沖突包,將沖突包刪除,一般沖突包為'com.android.support:appcompat-v7:22.2.0'或者'com.android.support:support-v4:22.2.0',但是我刪除沖突包後,依然報錯,於是使用方法二
方法二:因為我的沖突包是'com.android.support:support-v4:22.2.0',所以找到項目根目錄-build-intermediates-dex-cache-cache.xml文件,將其中跟v4有關的全部刪除,然後clean project,然後將compile改為provided如下:
dependencies {
compile 'com.vividsolutions:jts:1.13'
compile 'com.squareup.okhttp:okhttp:2.4.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.4.0'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.jakewharton:disklrucache:2.0.2'
provided 'com.android.support:support-v4:21.0.0'
}

Ⅱ 關於VC++6.0編譯靜態庫再次調用的時候符號沖突

把你的靜態庫函數名個性化一點。

Ⅲ iOS-集成多個SDK內部文件重復沖突解決

最近使用Hbuilder集成一個項目,集成了很多sdk,發現有兩個sdk都是用了Masonry第三方庫布局,然後編譯報錯,關鍵字: plicate symbol ,出現這個就表示有重復文件了,我們需要把其中的一個sdk文件中生成的重復的.o文件一一刪除即可,如下則為相關位置,我將把Masonry.framework的相關重復文件一一移除合並解決沖突問題。

步驟如下:

1.打開終端cd到所要修改的sdk所載文件目錄(最好備份一個出來,改完再替換)

2.查看靜態庫文件包含的架構:

命令: lipo -info  xxxx.a 

主要看看總共有哪些架構有沖突,後面需要一一從相關架構移除。如下

根據結果可以看出包含armv7 i386 x86_64  arm64 這幾個庫,沖突文件必須從必須從每個架構的庫裡面相應刪除才行,其中x86_64為模擬器的架構,如果不需要模擬器調試,嫌麻煩x86_64可以不管。具體指令集相關可以看這篇文章: https://www.jianshu.com/p/5d1ce5d3d8d6

3.分離出相應架構的庫:

命令: lipo -thin armv7 XYRiskAssessment-iOS-1.0.0.a -output armv7.a

例:lipo -thin armv7 Masonry -output Masonry-armv7

然後我們就可以看到我們的sdk目錄下會多一個Masonry-armv7的庫,如下:

同樣的方法我們可以分離出i386  x86_64   arm64 文件分離完成後如下:

4.查看庫中所包含的文件列表

命令為: ar -t  xxx.a

例: ar -t  Masonry-armv7

5.如果不清楚兩個sdk都有哪些文件重復,可以按照以上步驟,查看下另一個重復的sdk都包含哪些文件,如下所示和Masonry.framework重復的DCUniVideoPublic.framework分離出armv7架構的文件列表,其實也可以在xcode編譯重復信息裡面找到相關.o文件,看個人喜好。

6.接著我們就要從每個架構文件中,刪除相關的沖突.o文件

命令::ar -d -sv XXXXX-armv7.a  XXXX.o

例:

ar -d -sv Masonry-armv7 MASCompositeConstraint.o

ar -d -sv Masonry-armv7 MASViewConstraint.o

7.最後一步:把armv7 i386  x86_64   arm64 所有架構的重復文件按照上面方法刪除完成後。我們要把這幾個架構合並到原來的庫裡面

和並靜態庫的命令:

lipo -create XXXXX-armv7.a XXXXX-armv7s.a (加上所有架構的編譯庫) -output XXXXX-NOFfmpeg.a

例:

lipo -create Masonry-x86_64 Masonry-armv7 Masonry-i386 Masonry-arm64 -output Masonry

最後將這個新生成的靜態庫文件替換掉之前的,發現沖突解決。

注意:當把Masonry相關沖突.o文件移除後,這個移除合並後的兼容版本是不能單獨拿去使用的,單獨使用以上移除的.o文件會出現丟失的編譯錯誤,因為你已經移除了。

覺得有幫助留個贊再走唄 ~

Ⅳ vs2010 如何編譯多個cpp文件,在一個工程裡面多建幾個cpp文件,調試的時候提示main函數 沖突

Visual Studio裡面C++項目里只能有一個CPP文件有main函數,有多個當然會沖突。需要把其他的變成注釋,只留下你要運行的那個。

熱點內容
行李箱的密碼鎖哪裡修 發布:2025-02-08 23:58:14 瀏覽:531
c語言字母ascii碼表 發布:2025-02-08 23:55:49 瀏覽:838
筆記本電腦一般存儲空間 發布:2025-02-08 23:51:15 瀏覽:835
php網站優化 發布:2025-02-08 23:49:41 瀏覽:455
php網頁列印 發布:2025-02-08 23:40:02 瀏覽:820
windowssmb無法訪問 發布:2025-02-08 23:33:28 瀏覽:467
python27編譯器 發布:2025-02-08 23:29:20 瀏覽:339
如何運行python代碼 發布:2025-02-08 23:28:15 瀏覽:692
新箱子密碼鎖怎麼設置 發布:2025-02-08 23:26:50 瀏覽:148
安卓如何可以看見被撤回的消息 發布:2025-02-08 23:19:17 瀏覽:798