<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      舊版本Flutter使用xcode16打包上架時報錯(contain bitcode)

      如圖,最近在Xcode16中打包flutter項目出現了如下的問題。

      其實最正統的方法就是升級flutter到最新的版本,它是不添加bitcode。但是由于一些原因,我們是不能升級版本的,于是只能進行修復。解決方案請看最下面,中間是我解決流程。

      初始沒細看,一看bitcode就想到是不是在iOS項目中沒有設置bitcode或者pod的三方庫沒有清理bitcode。于是我就在進行了以下檢查。

      (1)在Xcode中禁用Bitcode:
      打開你的Xcode項目。
      選擇你的項目在Project Navigator中。
      選擇你的目標應用。
      選擇“Build Settings”標簽。
      搜索“Enable Bitcode”并將其設置為“No”。
      清理并重建你的項目(使用快捷鍵Shift + Command + K進行清理,然后使用Command + B進行重建)。

      (2)更新或替換第三方庫:

      如果問題是由第三方庫引起的,聯系庫的供應商獲取更新版本,或者尋找不包含Bitcode的替代庫。
      使用CocoaPods的post_install鉤子:

      如果你使用CocoaPods管理依賴,可以在Podfile中添加一個post_install鉤子來自動剝離所有frameworks中的Bitcode。

      post_install do |installer|
        installer.pods_project.targets.each do |target|
          target.build_configurations.each do |config|
            # Flutter iOS build settings
            flutter_additional_ios_build_settings(target)
      
            # 強制關閉 Bitcode,防止被覆蓋
            config.build_settings['ENABLE_BITCODE'] = 'NO'
            
            # 統一 Swift 版本 (如果需要)
            config.build_settings['SWIFT_VERSION'] = '5.3'
      
            # 設置最低 iOS 版本
            config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
          end
        end
      end
      

      經過上述兩個方法的檢查,我發現我之前都設置了這些,我就很奇怪這是為什么。后面發現人家已經提示的很清楚了是App.app/Frameworks/Flutter.framework/Flutter‘ contains incomplete bitcode。他說的是flutter.framework包含bitcode。這時候我們就需要手動剝離這里面的bitcode。

      無效方法一、 使用 --no-bitcode 構建標志

      flutter build ipa --no-bitcode --export-options-plist=ios/ExportOptions.plist
      

      但是這個方法是需要一定版本的。第一個build ipa 低版本是build iOS,但是--no-bitcode也是低版本不支持。

      無效方法二、手動修改 Xcode 架構腳本
      用 Xcode 打開項目:在 Xcode 導航器中選中 Runner target,點擊頂部的 "Build Phases" 標簽頁。展開 "Thin Binary" 或 "Strip Frameworks"。在其中一個腳本之前或者之后添加以下內容。

      # 移除 Flutter.framework 中的 Bitcode 段
      "${PODS_ROOT}/../flutter/bin/flutter" --suppress-analytics
      echo "Stripping Bitcode from Flutter.framework"
      strip -r -t -o "${BUILT_PRODUCTS_DIR}/App.framework/App" "${BUILT_PRODUCTS_DIR}/App.framework/App" 2>/dev/null || true
      strip -r -t -o "${BUILT_PRODUCTS_DIR}/Flutter.framework/Flutter" "${BUILT_PRODUCTS_DIR}/Flutter.framework/Flutter" 2>/dev/null || true
      

      編譯成功后,重新上傳還是失敗。

      無效方法三、手動驗證和強制剝離
      1.構建后手動檢查:

      # 構建后,找到 Flutter.framework
      find build/ios -name "Flutter.framework" -type d
      
      # 檢查是否包含 Bitcode
      otool -l /path/to/Flutter.framework/Flutter | grep __LLVM
      

      2.移除

      # 進入 Flutter.framework 目錄
      cd /Users/weichenyang/Downloads/KuaizhunCode/flutter/ops-app/ios/Flutter/Flutter.framework
      
      # 移除二進制文件中的 bitcode
      xcrun bitcode_strip -r Flutter -o /Users/weichenyang/Downloads/Export/Flutter
      
      
      // 詳細流程
      # 1. 創建輸出目錄
      mkdir -p /Users/user/Downloads/Export/Flutter.framework
      
      # 2. 復制整個框架結構
      cp -R /Users/user/Downloads/flutter/app/ios/Flutter/Flutter.framework/* /Users/user/Downloads/Export/Flutter.framework/
      
      # 3. 進入輸出目錄處理二進制文件
      cd /Users/user/Downloads/Export/Flutter.framework
      
      # 4. 移除 bitcode(這會創建新的二進制文件)
      xcrun bitcode_strip -r Flutter -o Flutter_stripped
      
      # 5. 替換原二進制文件
      mv Flutter_stripped Flutter
      
      # 6. 確保執行權限
      chmod +x Flutter
      

      3.檢查

      # 檢查移除后的文件
      otool -l /Users/weichenyang/Downloads/Export/Flutter.framework/Flutter | grep __LLVM
      
      # 或者使用更詳細的檢查
      xcrun bitcode_strip -t /Users/weichenyang/Downloads/Export/Flutter.framework/Flutter
      

      4.替換
      把當前的famework替換項目中的 但是這樣的話需要重新編譯打包,這時候就會自動生成bitcode,無效

      手動有效方法:
      1.打開Xcode的Organizer,找到打包時生成的Archive文件,右鍵show in finder選擇找到相應的.archieve文件,然后再選擇顯示包內容,進入到.archive文件的內容文件夾,依次進入Products->Applications->Runner(打包生成的.app文件),再右鍵Runner,選擇顯示包內容,然后找到Frameworks->Flutter.framework
      2.打開終端,cd到Flutter.framework文件夾,然后依次輸入以下命令檢測framework是否包含bitcode

      otool -l Flutter | grep __LLVM | wc -l
      

      3.輸入以下命令,將framework的bitcode移除

      xcrun bitcode_strip -r Flutter -o Flutter
      

      4.現在你可以返回到,剛才的Organizer頁面,愉快的打包上架Appstore了.

      終極懶人方法:腳本運行參考:文章

      #!/bin/bash
      
      # 檢查是否提供了路徑參數
      if [ -z "$1" ]; then
        echo "Usage: $0 <path_to_xcarchive>"
        exit 1
      fi
      
      XCARCHIVE_PATH="$1"
      APP_PATH="$XCARCHIVE_PATH/Products/Applications/Runner.app/Frameworks/Flutter.framework/Flutter"
      
      # 檢查 Flutter.framework 是否存在
      if [ ! -f "$APP_PATH" ]; then
        echo "Error: Flutter.framework not found at $APP_PATH"
        exit 1
      fi
      
      # 檢查 Flutter.framework 是否包含 bitcode
      BITCODE_CHECK=$(otool -l "$APP_PATH" | grep -q '__LLVM' && echo 1 || echo 0)
      
      if [ "$BITCODE_CHECK" -eq 0 ]; then
        echo "Info: Flutter.framework does not contain bitcode."
      else
        echo "Info: Flutter.framework contains bitcode. Removing it..."
        
        # 創建一個臨時目錄來保存修改后的 Flutter.framework(實際上我們只需要修改 Flutter 可執行文件)
        TEMP_DIR=$(mktemp -d)
        TEMP_FLUTTER_PATH="$TEMP_DIR/Flutter"
        
        # 復制 Flutter 可執行文件到臨時目錄
        cp "$APP_PATH" "$TEMP_FLUTTER_PATH"
        
        # 刪除臨時目錄中的 Flutter 的 bitcode
        xcrun bitcode_strip -r "$TEMP_FLUTTER_PATH" -o "$TEMP_FLUTTER_PATH"
        
        # 將修改后的 Flutter 可執行文件復制回原位置
        cp "$TEMP_FLUTTER_PATH" "$APP_PATH"
        
        # 清理臨時目錄
        rm -rf "$TEMP_DIR"
        
        echo "Info: Bitcode has been removed from Flutter.framework."
      fi
      
      echo "Script execution completed."
      

      使用說明:
      將上述腳本保存為一個文件,例如 remove_bitcode_from_xcarchive.sh。
      給腳本添加執行權限:chmod +x remove_bitcode_from_xcarchive.sh。
      運行腳本,并傳入 .xcarchive 文件的路徑:./remove_bitcode_from_xcarchive.sh /Users/wen/Library/Developer/Xcode/Archives/2025-01-07/Runner 2025-1-7, 10.50.xcarchive。

      posted @ 2025-09-10 11:06  weicy  閱讀(85)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品久久久久影院亚瑟| 好吊视频在线一区二区三区| 色欲av无码一区二区人妻| 亚洲欧美人成电影在线观看| 国产精品中文字幕久久| 少妇人妻偷人精品无码视频新浪| 免费无码又爽又刺激高潮虎虎视频 | 在线播放国产女同闺蜜| 丁香五月天综合缴情网| 国产乱人伦av在线无码 | 国产漂亮白嫩美女在线观看| 91蜜臀国产自产在线观看| 少妇人妻偷人偷人精品| 国产亚洲一二三区精品| 乱人伦人妻中文字幕无码久久网| 免费午夜无码视频在线观看| 国产欧美另类精品久久久| 免费人成年激情视频在线观看| 国产成人综合久久亚洲精品| gogo无码大胆啪啪艺术| 日夜啪啪一区二区三区| 日本人一区二区在线观看| 一面膜上边一面膜下边视频| 亚洲精品www久久久久久| 草草浮力地址线路①屁屁影院| 日韩精品亚洲精品第一页| 97久久综合亚洲色hezyo| 精品国产午夜福利在线观看| 日韩有码国产精品一区| 久热这里只有精品12| 麻豆精品一区二区三区蜜臀 | 中文字幕无码不卡在线| 日韩有码中文在线观看| 亚洲人成网7777777国产| 69精品丰满人妻无码视频a片| 久久精品国产91精品亚洲| 午夜福利国产精品视频| 日韩午夜一区二区福利视频| 亚洲精品国自产拍影院| 亚洲欧美牲交| 香港日本三级亚洲三级|