天天看點

ANDROID和IOS 編譯交接坑爹的報錯,_OBJC_CLASS_$_xxxxx,Gralde 報錯

一個客戶的項目,啥都沒有,沒有文檔,隻有兩份孤零零的文檔,談崩了,我們要混飯接手了,會不會坑爹呢?

習慣就好。

Android項目:

1)Android的項目用老一點的AS 3.0。

    1)開始打開報錯,坑爹開始。調整gradle的下載下傳路徑。

         最後,點選是否更新gradle.結果噩夢開始。

2)最後,重新導入,老的架構,不更新任何。

     編譯通過。

結論:沒事不要更新gradle,否則坑死你,一個接着一個的錯誤。無法玩。

IOS項目:

1)隻能安裝到XCODE11:

   第一關: 結果客戶是一體機IOS,不能拷貝代碼,不能上網查資料,最後再mac os 10.10更新到MAC OS 10.13結果重新開機藍屏。

   更新需要驗證碼,老版本的OS 10.10需要提示輸入驗證碼,結果沒有輸入,結果需要再密碼框後面直接輸入,坑爹!!!

   第二關:更加坑爹的是,不提示能否更新,結果更新後藍屏,坑爹。最後客戶換了一台N萬的蘋果一體機,最新的可以更新到10.15,終于完事。最後結論,一體機不要亂更新,    拿到項目,裡面有路徑警告,都是知道xcode的路徑有點坑爹,配置一下,結果出現了老的噩夢。

2)編譯之後,當時打算用虛拟機編譯試試看,結果噩夢開始了。

ld: warning: ignoring file xxxxxx.a, missing required architecture x86_64 in file xxxxx.a (2 slices)

Undefined symbols for architecture x86_64:

  "_OBJC_CLASS_$_xxxxx", referenced from:

      objc-class-ref in xxxxx.o

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

老生常談,解決配置路徑Header路徑,framework路徑,配置啊,配置啊,最後找來高手,還是都是正确。結果發現,連接配接的是虛拟機,虛拟機是X86架構的。結果architecture x86_64:,直接連接配接真機或者選擇Genirec Ios Device,所有的

_OBJC_CLASS_$_xxxxx", referenced from:全部消失了。

結論:開發IOS就算調試也要用真機。不要用虛拟機,如果沒有也加以用Gencirec IOS Device,因為第三方庫沒有X86的虛拟機的庫。這是好習慣。