简体   繁体   中英

Xcode 12.4 Builds for Simulator and Device but Archiving Fails with Pods-MYAPP-frameworks.sh: line 131: ARCHS[@]: unbound variable

I am using Xcode 12.4 (updated from 12.2 hoping that my problem would be fixed). As you know with xcode 12.x we deleted VALIDARCHS, added arm64 to excluded archs in project and pod files (for simulators only). Otherwise there were build problems. I have finished my development and I am ready for apple's test flight and then eventually app store. As you know we need to archive the app and upload from organizer. However, my application's archiving fails. My problem is that I can successfully build my application for all of simulators and real devices however, when I try to archive the app it gives me an error:

Error Image Here

The bash script is PODS' script line 131 is part: intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"

# Strip invalid architectures
strip_invalid_archs() {
  binary="$1"
  warn_missing_arch=${2:-true}
  # Get architectures for current target binary
  binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
  # Intersect them with the architectures we are building for
  intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
  # If there are no archs supported by this binary then warn the user
  if [[ -z "$intersected_archs" ]]; then
    if [[ "$warn_missing_arch" == "true" ]]; then
      echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
    fi
    STRIP_BINARY_RETVAL=1
    return
  fi
  stripped=""
  for arch in $binary_archs; do
    if ! [[ "${ARCHS}" == *"$arch"* ]]; then
      # Strip non-valid architectures in-place
      lipo -remove "$arch" -output "$binary" "$binary"
      stripped="$stripped $arch"
    fi
  done
  if [[ "$stripped" ]]; then
    echo "Stripped $binary of architectures:$stripped"
  fi
  STRIP_BINARY_RETVAL=0
}

What I have done so far?

  • Probably checked every solution on stackoverflow,apple forums, github etc.
  • My source variable in the script is changed to source:- as you can see in the previous picture
  • I tried xcodebuild archive and other things gone bad there so I dont want to touch terminal for archive.
  • While looking for solutions as post install workaround for podfile, I changed it but nothing worked.
  • Tried different configs for both project and pods.
  • Tried to make a workaround in strip_invalid_archs() in the bash script but obtained other errors.
  • Even tried to manually define ARCHS in strip_invalid_archs() since I could not find anything

I feel like something is wrong with architectures and since archiving needs all of the available archs, it somehow cant archive it. I also think that it is a pod issue but I am really lost.

Here are my project and pod configs for architectures:

Project

Pod

# Uncomment the next line to define a global platform for your project
platform :ios, '14.3'
minimum_deployment_target = 14.3

target 'MYAPP' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for MYAPP
pod 'Firebase/Core'
pod 'Firebase/Auth'
  pod 'Firebase/Database'
        pod 'Firebase/Firestore'
  pod 'Firebase/Storage'
pod 'Firebase/Messaging'
target 'MYAPPTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'MYAPPUITests' do
    inherit! :search_paths
    # Pods for testing
  end

post_install do |installer|
    installer.generated_projects.each do |project|
        project.targets.each do |target|
            target.build_configurations.each do |config|
                # Ensure we set all Pods to match the minimum deployment target specified by the app
                config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = minimum_deployment_target
            end
        end
    end
installer.pods_project.build_configuration_list.build_configurations.each do |configuration|
        configuration.build_settings['ARCHS'] = 'arm64 armv7'
    end
end



end


EDIT The postinstall part in the podfile was added after the archiving failed. Archiving does not work even if I dont have postinstall part in my podfile.

Thanks in advance. It is really disappointing to not be able to archive the app when I think I finished it. I have already spent a few days just on this. It would be great if you can help. Thank you

I had the same issue and this Github issue solved my issue. TLDR: Go under build settings and remove arm64 from the valid and excluded architectures.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM