programing

잘못된 Swift 지원 - 파일이 일치하지 않습니다.

bestprogram 2023. 5. 2. 23:04

잘못된 Swift 지원 - 파일이 일치하지 않습니다.

저는 방금 스위프트 2에서 앱을 다시 작성했습니다.내부 테스트를 위해 앱을 (Xcode 7 GM을 통해) iTunesConnect에 업로드하려고 합니다.

한동안 "Invalid Swift Support" 오류와 씨름했지만(다른 관련 질문이 있음) 지금은 조금 다른 것으로 바뀌었습니다.

이제 Apple의 오류는 다음과 같습니다.

잘못된 Swift 지원

libswiftCoreLocation.dylib, libswiftCoreMedia.dylib, libswiftCoreData.dylib, libswiftAVFoundation.dylib가 일치하지 않습니다.

/Payload/App.app/Frameworks/libswiftCoreLocation.dyllib, /Payload/App.app/Frameworks/libswiftCoreMedia.dyllib, /Payload/App.app/Frameworks/libswiftCoreData.dyllib, /App.app/App/FrameworkswiftAVFoundation.dylib

파일이 올바른지 확인하고(?) 앱을 재구성한 후 다시 제출합니다.

다음에 후 처리 적용 안 함

/Payload/App.app/Frameworks/libswiftCoreLocation.dyllib, /Payload/App.app/Frameworks/libswiftCoreMedia.dyllib, /Payload/App.app/Frameworks/libswiftCoreData.dyllib, /App.app/App/FrameworkswiftAV Foundation.dylib.

"후처리 적용 안 함", "파일이 올바른지 확인하고 앱을 다시 빌드한 후 다시 제출하십시오" 등을 검색하여 유사한 오류를 찾을 수 없었습니다.

파일이 올바른지 확인하거나 다른 권장 사항이 있는지 확인하는 방법을 아는 사람이 있습니까?감사해요.

여기도 같은 문제입니다.나는 이것이 비트코드와 관련된 개발자 도구의 버그일 가능성이 높다고 생각합니다.

저는 이것에 대한 해결책을 방금 찾았습니다.

  1. 새 빌드 번호로 앱을 보관합니다. :(
  2. Organizer "Show in Finder"에서 Finder에서 아카이브(.xarchive 파일) 찾기
  3. 패키지를 열고 다음과 같은 디렉터리를 찾습니다.Products/Applications/YourApp.ipa/Frameworks/그리고.SwiftSupport/iphoneos/
  4. 모두 복사libswiftXxx.dylib에서 파일SwiftSupport/iphoneos/안으로Products/Applications/YourApp.ipa/Frameworks/덮어씁니다.
  5. 이제 Organizer에서 App Store로 업로드합니다.

이 과정을 통해 저는 제 빌드를 업로드하는 데 성공합니다.지금 저는 리뷰를 기다리고 있습니다.

참고:

저는 코코아 포드를 사용하고 있고, 그리고.ENABLE_BITCODE옵션은 NO였습니다.

편집: 이 문제를 해결하는 코코아 포드 0.39.0이 출시되었습니다!

@orkenstein이 언급했듯이, 몇 가지 코드를 주석 처리함으로써 더 간단한 해결책이 있습니다.Pod-frameworks.sh여기에 좀 더 자세한 내용을 포함합니다.

Xcode 프로젝트 디렉토리에서 를 엽니다.Pods/Target Support Files/Pods/Pods-frameworks.sh

다음 행에 주석을 달아야 합니다.

# Embed linked Swift runtime libraries
local basename
basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
local swift_runtime_libs
swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
for lib in $swift_runtime_libs; do
  echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
  rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
  code_sign_if_enabled "${destination}/${lib}"
done

=>

# Embed linked Swift runtime libraries
# local basename
# basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
# local swift_runtime_libs
# swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
# for lib in $swift_runtime_libs; do
#   echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
#   rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
#   code_sign_if_enabled "${destination}/${lib}"
# done

절약하다Pods-frameworks.sh그리고 당신은 가도 좋습니다!

사항이 인 이 문 대 수 병 으 사 었 며 코 버 있 니 습 다 수 할 서 사 용 에 전 포 드 아 제 코 최 에 신 되 한 항 이 합 정 ▁on ▁the ▁available ▁the 니 다 ▁cocoa 습 있 ▁it ▁is ▁latest 이 s ▁haspod ▁for ▁fix ▁and ▁this ▁been 문 제 수 ▁issue0.39.0.beta.5

https://github.com/CocoaPods/CocoaPods/pull/4268

최신 버전의 코코아 포드를 실행하려면 다음과 같이 하십시오.gem install cocoapods --pre

또는 릴리스되지 않은 기능을 실행하는 지침을 따르십시오. http://guides.cocoapods.org/using/unreleased-features

최신 버전의 CocoaPod를 가지고 있으면 실행합니다.pod install한 번

앱을 빌드하기 위해 패스트레인 체육관 1.9.0을 사용하고 있었는데 파일이 일치하지 않아 애플에서 계속 거부당했고 XCode 8을 통해 업로드하면 승인되었습니다.ipa의 swift support 폴더에서 swift libs를 확인해보니 frameworks 폴더에서 swift support 폴더의 libs는 swift 2.3이고 frameworks 폴더에서는 swift 3입니다.그래서 체육관 파일에 툴체인 옵션을 추가했습니다.

gym(
  scheme: "CoCadre", 
  configuration: "Production Release",
  clean: true,
  use_legacy_build_api: false,
  toolchain: "com.apple.dt.toolchain.Swift_2_3"
)

*툴체인 옵션을 사용하려면 use_legacy_build_api를 false로 변경해야 했습니다.

toolchain 옵션을 사용하려면 use_build_api: false https://github.com/fastlane/fastlane/issues/6003#issuecomment-244792185 를 설정해야 합니다.

GitHub에는 조금 덜 복잡한 솔루션이 있습니다.

Pods-frameworks.sh 둘러본 결과 다음과 같이 언급된 섹션을 발견했습니다.

런타임 를 포함합니다. Swift를 참조하십시오.
이러한 라이브러리를 복사하는 코드 블록(및 코드 서명)에 주석을 다는 것이 제 제출 문제를 해결한 것 같습니다.저는 아직 문제의 원인이 단지 복사 때문인지 아니면 코드 서명 때문인지 깊이 파고들지 않았습니다.저는 거기서 제가 좀 이해할 수가 없습니다.

  1. 하고 최신버로코을업코다니합데트이팟을 입력합니다.sudo gem install cocoapods말기에
  2. 려달을 합니다.pod update프로젝트 디렉토리 아래에 있습니다.
  3. 다음 기간 동안 비트 코드 사용을 NO설정해야 합니다.Debug모든 포드에 대한 옵션입니다.
  4. 고정된.

이문는다코때해다니습결었되문에드음에 있는 다음 코드 되었습니다.Pods-frameworks.sh:

# Embed linked Swift runtime libraries
local basename
basename="$(basename "$1" | sed -E s/\\..+// && exit ${PIPESTATUS[0]})"
local swift_runtime_libs
swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${basename}.framework/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
for lib in $swift_runtime_libs; do
  echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
  rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
  code_sign_if_enabled "${destination}/${lib}"
done

다음으로 변경됨:

# Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
    local swift_runtime_libs
    swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u  && exit ${PIPESTATUS[0]})
  for lib in $swift_runtime_libs; do
    echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
    rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
    code_sign_if_enabled "${destination}/${lib}"
  done
fi

이에 대한 나의 솔루션:

나는 코코팟을 통해 공개를 사용하고 있으며, 공개는 비트코드를 비활성화해야 합니다.그래서 Debug:에만 Display(다른 프레임워크에서 작동해야 함)를 포함했습니다.

pod 'Reveal-iOS-SDK', :configurations => ['Debug']

이제 Debug에 대해서만 내 Dislight가 구성되어 있기 때문에 Debug에 대해서만 Bitcode를 비활성화했습니다.

여기에 이미지 설명 입력

이 설정을 사용하면 해킹 없이 모든 것이 정상적으로 작동합니다.

비트코드를 지원하지 않는 라이브러리(예: 현재 안정된 New Relic 버전)를 통합할 때 이 오류가 발생하는 것을 보았습니다.해결책은 라이브러리를 제거하거나, 비트코드를 사용하지 않도록 설정하거나, 라이브러리 공급업체로부터 비트코드를 지원하는 업데이트된 이진 파일을 기다리는 것입니다.

제가 실수한 것은 스파를 앱스토어에 업로드하기 위해 앱스토어 프로필이 아닌 애드혹 프로필로 빌드한 것입니다.

언급URL : https://stackoverflow.com/questions/32526526/invalid-swift-support-files-don-t-match