亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

提交到App Store問題:不支持的體系結構x86

提交到App Store問題:不支持的體系結構x86

qq_花開花謝_0 2019-08-06 13:08:19
提交到App Store問題:不支持的體系結構x86所以我想嘗試使用shopify API。當我存檔應用程序并驗證它然后沒有問題但是當我將它提交到應用商店時它會給我以下問題。錯誤ITMS-90087:“不支持的體系結構。您的可執行文件包含不受支持的體系結構'[x86_64,i386]'?!盓RROR ITMS-90209:“無效的段對齊.SJAPP.app/Frameworks/Buy.framework/Buy上的應用程序二進制文件沒有正確的段對齊。嘗試使用最新的xcode版本重建應用程序。” (我已經在使用最新版本了。)錯誤ITMS-90125:“二進制文件無效.LC_ENCRYPTION_INFO加載命令中的加密信息丟失或無效,或者二進制文件已加密。此二進制文件似乎不是使用Apple的鏈接器構建的。”警告ITMS-90080:“可執行的有效負載/ $ / Buy.framework不是位置無關的可執行文件。請確保將您的構建設置配置為創建PIE可執行文件?!?
查看完整描述

3 回答

?
慕森王

TA貢獻1777條經驗 獲得超3個贊

一旦我們切斷了,我們不能運行任何腳本更因為它會嘗試刪除未使用的架構不是現有的切片,因為xcode每次都不會重新嵌入二進制文件。想法是 - 在構建存檔時只刪除i386和x86_64切片,所以我修改了腳本:

echo "Target architectures: $ARCHS"APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORKdoFRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"echo $(lipo -info "$FRAMEWORK_EXECUTABLE_PATH")FRAMEWORK_TMP_PATH="$FRAMEWORK_EXECUTABLE_PATH-tmp"# remove simulator's archs if location is not simulator's directorycase "${TARGET_BUILD_DIR}" in*"iphonesimulator")
    echo "No need to remove archs"
    ;;*)
    if $(lipo "$FRAMEWORK_EXECUTABLE_PATH" -verify_arch "i386") ; then
    lipo -output "$FRAMEWORK_TMP_PATH" -remove "i386" "$FRAMEWORK_EXECUTABLE_PATH"
    echo "i386 architecture removed"
    rm "$FRAMEWORK_EXECUTABLE_PATH"
    mv "$FRAMEWORK_TMP_PATH" "$FRAMEWORK_EXECUTABLE_PATH"
    fi
    if $(lipo "$FRAMEWORK_EXECUTABLE_PATH" -verify_arch "x86_64") ; then
    lipo -output "$FRAMEWORK_TMP_PATH" -remove "x86_64" "$FRAMEWORK_EXECUTABLE_PATH"
    echo "x86_64 architecture removed"
    rm "$FRAMEWORK_EXECUTABLE_PATH"
    mv "$FRAMEWORK_TMP_PATH" "$FRAMEWORK_EXECUTABLE_PATH"
    fi
    ;;esacecho "Completed for executable $FRAMEWORK_EXECUTABLE_PATH"echo $(lipo -info "$FRAMEWORK_EXECUTABLE_PATH")done

如果不是為模擬器運行(這意味著目標文件夾不像“Debug-iphonesimulator”),這個腳本只是從胖二進制文件(如果存在)中刪除i386和x86_64片。

對不起,我不熟悉shell腳本,所以可能有人可以用更優雅的方式編寫它。但它有效)


查看完整回答
反對 回復 2019-08-06
?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

如果您使用的是Carthage,那么您可能會遇到此問題,因為該項目是:

  • 缺少carthage copy-frameworks構建階段。

  • 或者構建階段不包括所有框架(不完整列表)。

此操作將框架過濾為有效體系結構(代碼)列表。

設置復制框架構建階段

來自Carthage建筑的iOS步驟

在應用程序目標的“構建階段”設置選項卡上,單擊“+”圖標并選擇“新建運行腳本階段”。創建一個運行腳本,在其中指定shell(例如:bin / sh),將以下內容添加到shell下面的腳本區域:


/usr/local/bin/carthage copy-frameworks


并在“輸入文件”下添加要使用的框架的路徑,例如:


$(SRCROOT)/Carthage/Build/iOS/Box.framework $(SRCROOT)/Carthage/Build/iOS/Result.framework $(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework


此腳本解決由通用二進制文件觸發的App Store提交錯誤,并確保在歸檔時復制必要的bitcode相關文件和dSYM。


查看完整回答
反對 回復 2019-08-06
  • 3 回答
  • 0 關注
  • 1011 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號