場景1-------> IOS打包出現(xiàn) Found an unexpected Mach -O header code:0x72613c21
當你導入一個***SDK 之后 build 沒有任何問題 然后你開開心心的去打包 發(fā)現(xiàn)WTF 居然報錯了!!!!報錯信息如下~
為啥嘞魁索?那么好吧 點擊show logs 打印日志發(fā)現(xiàn) 出現(xiàn)最多的信息就是Didn't find archived user entitlements (沒有發(fā)現(xiàn)存檔的用戶權(quán)利) 其實說白了就是你導入的SDK 出了問題(至于哪個SDK 日志當中都有指出就不貼圖片出來了)
然后你就發(fā)現(xiàn) 如下圖~
你將一個*** framework 的靜態(tài)庫 放到了 Embedded Binaries(放動態(tài)庫依賴文件) 里面導致 項目打包 報錯侨核。
到了這里 你當然需要 將*** framework 從 Embedded Binaries(動態(tài)庫里來文件)中刪除 撼唾,但是你直接刪除 會發(fā)現(xiàn)下面 linked Frameworks and libraries (簽署了框架和庫)中*** framework也沒了齿兔。那咋辦? 很簡單 你只需在 linked Frameworks and libraries 重新 “+” 那個被刪除的 *** framework 就好了~
到這里 重新打包ipa文件 發(fā)現(xiàn) ipa文件 生成成功~
場景2------->x86_64,i386 錯誤解決方案
但是你以為到這里就完了嗎撬码?你還有可能遇到 如下問題 (如果你沒有遇到 請略過 ) 你雖然 ipa 文件生成成功,但是不代表上傳ipa 文件到appstore 會成功殴瘦,在上傳 appstore 的時候 你可能會遇到 下圖所示問題
遇到這個問題 你可以直接百度 搜索關(guān)鍵詞 "ERROR ITMS - 90209" 就可以找到類似的解決辦法 健盒, 如果你懶得找 那么看我下面的解釋也可以。
首先為啥會報 x86_64,i386 的錯誤 ...........
因為
1巴碗、你導入的 **** 庫文件有可能有兩種, 一種支持真機和模擬器, 一種只支持真機, 如果測試需要用到模擬器, 測試時可以用前一種, 如果不用模擬器全程只用真機, 建議用只支持真機的庫, 在Release文件夾下, 發(fā)布應用時不能使用同時支持真機和模擬器的庫文件, 否則會報錯
2朴爬、使用腳本打包前去掉不需要的架構(gòu)(推薦) 如下圖~
將如下代碼 放置到Run script中
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
# This script loops through the frameworks embedded in the application and
# removes unused architectures.
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
EXTRACTED_ARCHS=()
for ARCH in $ARCHS
do
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done
echo "Merging extracted architectures: ${ARCHS}"
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"
echo "Replacing original executable with thinned version"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
done
搞定這步之后,你需要重新生成ipa文件橡淆,重新提交到Appstore 提交召噩,這回你會發(fā)現(xiàn) 哇塞,居然不報錯了耶~
到這里你的所有沖突解決完畢~ 希望可以幫到你 謝謝~