1. 程式人生 > >關於ZBar與支付寶 symbol _base64_encode 的解決方案

關於ZBar與支付寶 symbol _base64_encode 的解決方案

       專案中要使用二維碼掃描的功能,選擇使用二維碼第三方庫:ZBar,匯入之後發現有symbol _base64_encode問題,ZBar和支付寶這兩個第三方中有靜態庫衝突。記錄一下解決的過程。

          1.github上下載ZBar檔案,解壓之後,開啟這個資料夾,找到iPhone資料夾,開啟這個資料夾,找到zbar.xcodeproj。

         

        2.在Xcode中開啟zbar.xcodeproj,設定為release版本。在src/zbar下找到symbol.c,選中這個.c檔案,在其中搜索base64_encode,將所有的base64_encode都改為base64_en(這個可以任意)。修改之後command+B編譯一下,這樣會生成我們想要的檔案,同時也確保沒有任何問題。

       

       3.通過上面的步驟之後,會在/Users/bill/Library/Developer/Xcode/DerivedData/zbar-cbhnistursuyeqcnnknvklqmnxab/Build/Products/Release-iphoneos資料夾下生成libzbar.a檔案(請根據自己的目錄來尋找),這就是所需要的檔案了。同時,可以在模擬器,真機下和debug,release模式下生成4種檔案。


      4.開啟終端,檢視一下這個libzar.a的相關資訊。

       lipo -info /Users/bill/Library/Developer/Xcode/DerivedData/zbar-cbhnistursuyeqcnnknvklqmnxab/Build/Products/Release-iphoneos/libzbar.a

      輸出>>Architectures in the fat file: /Users/bill/Library/Developer/Xcode/DerivedData/zbar-cbhnistursuyeqcnnknvklqmnxab/Build/Products/Release-iphoneos/libzbar.a are: armv7 armv7s
     這說明還少一個i386形式的。

    5.生成一個i386的libzbar.a,我直接放到桌面上了,還是使用命令列(根據自己的修改)

      lipo /Users/bill/Library/Developer/Xcode/DerivedData/zbar-cbhnistursuyeqcnnknvklqmnxab/Build/Products/Release-iphoneos/libzbar.a -arch i386 /Users/bill/Library/Developer/Xcode/DerivedData/zbar-cbhnistursuyeqcnnknvklqmnxab/Build/Products/Release-iphonesimulator/libzbar.a -create -output /Users/bill/Desktop/libzbar.a
    6.在終端檢視一下這個新生成的libzbar.a的架構。

     lipo -info /Users/bill/Desktop/libzbar.a

    輸出>>Architectures in the fat file: /Users/bill/Desktop/libzbar.a are: armv7 armv7s i386

    ok。搞定,現在,可以使用這個libzbar.a去替換ZBarSDK中的libzbar.a檔案。這樣就可以解決zbar和支付寶中關於symbol _base64_encode衝突的問題。