2015-11-09 46 views
2

在編譯的cocos2d-JS爲AppleTV的項目,我收到此錯誤:libcocos2d tvOS.a(bio_lib.o)」不包含位碼

ld: '/Users/pepa/Library/Developer/Xcode/DerivedData/GameXY-gwkkxwmtiilmalhdxfdjgqdfhedy/Build/Products/Debug-appletvos/libcocos2d tvOS.a(bio_lib.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE) or obtain an updated library from the vendor for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

我相信,我只包括了AppleTV的目標建庫啓用位碼。但編譯器仍在抱怨。是否提示哪個庫錯過括號中的位代碼? (bio_lib.o)

如果是這樣,你知道它屬於哪個庫嗎?我沒有在我的電腦上找到它。 我使用的是預編譯的二進制從這裏:https://github.com/elvman/cocos2d-x-3rd-party-libs-bin/tree/tvos

+0

缺少位碼的庫是'libcocos2d tvOS.a'。 – trojanfoe

+0

我忘了在說明中提到它。 libcocos2d tvOS.a是一個由許多庫組成的子項目。其中之一是造成這個問題,並沒有一個被稱爲bio_lib。這是我在主lib名稱之後的括號中看到的唯一領導。 –

+0

我不知道你期望我們做什麼? – trojanfoe

回答

2

使用下面的步驟:

  1. 安裝的git,使,的autoconf,automake的,libtool的。

    brew install git make autoconf automake libtool

  2. 克隆庫:如果您使用的是自制,這可以通過完成

    git clone https://github.com/cocos2d/cocos2d-x-3rd-party-libs-src.git

  3. 轉到cocos2d-x-3rd-party-libs-src/build和改變2號線在文件tvos.ini

    cfg_build_release_mode="-O3 -DNDEBUG -fembed-bitcode"

    cfg_build_debug_mode="-O0 -g -DDEBUG -fembed-bitcode"

  4. 運行構建腳本:

    build.sh -p=tvos --libs=curl --arch=arm64,x86_64 --mode=release

  5. 更新libcurl.a加密和SSL庫

1

好了,任何人來到這裏試圖建立的cocos2d-x(3.10) iOS版本啓用Bitcode。我做到了,基於user1675169(https://stackoverflow.com/a/33969215/129202)的答案,但我當然取代了build.sh線的OS,我不得不更換所有這些一個接一個的:

  • libtiff.a
  • libwebp.a
  • libchipmunk.a
  • libjpeg.a
  • libpng.a
  • libfreetype.a

我花了一段時間來取代每個人和每個人。根據您在cocos2d-x項目中使用的內容,您可能還需要替換其他庫。可能最終將會提供cocos2d-x 3.11,首先將所有這些庫重新編譯爲啓用位代碼。

重新編譯行看起來是這樣的:

build.sh -p=ios --libs=tiff --arch=arm64,x86_64 --mode=release 

最終我能夠啓用位碼預編譯整個libcocos2d。我還沒有試過把它發送給iTunes Connect,但我想它最終可能會工作。

+0

只是一個評論:使用這個庫的應用程序自一個月或兩個月以來一直在應用商店中。 – Jonny

+0

如果我遇到以下問題,是否知道我是否遇到同樣的問題?我不確定要替換哪個庫,如果是的話...... ......./Build/Products/Debug-iphoneos/libcocos2d_iOS.a(base64-decode.o)'不包含位碼。您必須使用啓用位碼(Xcode設置ENABLE_BITCODE)重建它,從供應商處獲得更新的庫或禁用此目標的位碼。對於架構arm64 –

+0

啊,我想通了 - base64解碼屬於libwebsockets.a。上面的代碼適用於我(用--libs = websockets)最終編譯帶有bitcode的libcocos2d。 –