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


116

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

나는 잠시 동안 "Invalid Swift Support"오류 ( 다른 관련 질문이 있음 ) 와 씨름 했지만 이제는 약간 다른 것으로 변경되었습니다.

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

잘못된 Swift 지원

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

/Payload/App.app/Frameworks/libswiftCoreLocation.dylib, /Payload/App.app/Frameworks/libswiftCoreMedia.dylib, /Payload/App.app/Frameworks/libswiftCoreData.dylib, /Payload/App.app/Frameworks/libswiftAVFoundation. dylib

파일이 올바른지 (?) 확인하고 앱을 다시 빌드 한 다음 다시 제출하세요.

사후 처리를 적용하지 마십시오.

/Payload/App.app/Frameworks/libswiftCoreLocation.dylib, /Payload/App.app/Frameworks/libswiftCoreMedia.dylib, /Payload/App.app/Frameworks/libswiftCoreData.dylib, /Payload/App.app/Frameworks/libswiftAVFoundation. dylib.

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

누구든지 "파일이 올바른지 확인"할 수있는 방법을 알고 있거나 다른 권장 사항이 있습니까? 감사합니다.


나는 똑같은 문제가 있습니다. 해결책이 있습니까?
Beny Boariu 2015 년

이 앱에서 탈퇴 하시나요? Xcode에서 직접 업로드합니까?
Andy

@Andy는 보관 후 즉시 Xcode에서 직접 업로드합니다.
Dan

답변:


82

여기에도 같은 문제가 있습니다. 저는 이것이 Bitcode와 관련된 개발자 도구의 버그 일 가능성이 높습니다.

방금 해결 방법을 찾았습니다.

  1. 새 빌드 번호로 앱 보관 :(
  2. Organizer“Show in Finder”에서 Finder의 아카이브 (.xcarchive 파일)를 찾습니다.
  3. 패키지를 열고 같은 디렉터리를 찾을 수 Products/Applications/YourApp.ipa/Frameworks/SwiftSupport/iphoneos/
  4. 모든 libswiftXxx.dylib파일을에서 SwiftSupport/iphoneos/복사Products/Applications/YourApp.ipa/Frameworks/ 하고 덮어 씁니다.
  5. 이제 오거나이저에서 App Store업로드

이 프로세스를 통해 빌드 업로드에 성공했습니다. 이제 검토를 기다리고 있습니다.

노트:

CocoaPods를 사용하고 있으며 ENABLE_BITCODE옵션은 NO였습니다.


어떤 iOS SDK를 타겟팅하고 있습니까? 비트 코드가 비활성화 된 상태에서 상점에 제출할 수 없다고 생각했습니다.
JAL

3
제 경우에는 SwiftSupport / iphoneos /가 비어 있습니다.
Lim Thye Chean 2015-09-13

2
유효성 검사는 성공했지만 빌드는 ProcessingiTunes Connect의 프리 릴리즈 섹션에서 ~ 12 시간이 지난 후에도 계속 됩니다.
ldiqual 2015 년

2
이거 고마워! API 분석 파일이 너무 큰 cl.ly/image/0s0N0s441s0X 에 대한 경고가 여전히 표시 되지만 중요한 것은 여전히 ​​통과했으며 TestFlight에 들어갈 수 있다는 것입니다.
ded sep.

1
.ipa 안에 SwiftSupport / iphoneos / 폴더가 없으면 어떻게해야합니까?
Alexander Yakovlev

51

편집 : CocoaPods 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하고 잘 가야합니다!


4
이것은 나를 위해 일했습니다. 참고로, pod-install 또는 pod-update를 실행하면 다시 주석을 달아야 할 수도 있습니다!
최대 알렉산더

Cocoapods 문제는 여기에 있습니다 : github.com/CocoaPods/CocoaPods/issues/4188 ,이 PR을 시도 할 수 있습니다 : github.com/CocoaPods/CocoaPods/pull/4221 : guides.cocoapods.org/using/unreleased-features
ldiqual

cocoaPods 0.39.0 업데이트 나를 위해이 문제를 해결하지 않습니다
nwales

@DJ Tarazona 레시피 감사합니다 !! 그것은 완전히 내가 최신 버전으로 cocopods 보석 업데이트 한 경우에도, 나를 위해 속임수를 썼는지
호르헤 비센테 멘도사

16

이 문제에 대한 수정 사항이 병합되었으며 최신 CocoaPods 버전에서 사용할 수 있습니다. 0.39.0.beta.5

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

CocoaPods의 최신 버전을 얻으려면 gem install cocoapods --pre

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

CocoaPods의 최신 버전이 있으면 pod install다시 실행 하십시오.


이 돈 메이커입니다
tommybananas

눈물이오고있다. 감사합니다!
MQLN 2015

오류는 CocoaPods와 특별히 관련이있을 필요는 없습니다. 우리는 같은 문제를 겪고 있으며 CocoaPods를 사용하지 않습니다.
devios1 2016

8

나는 fastlane gym 1.9.0을 사용하여 내 앱을 빌드했는데 파일이 일치하지 않아서 애플에서 계속 거부 당했지만 XCode 8을 통해 업로드하면 수락되었습니다. ipa의 swift support 폴더와 Frameworks 폴더에서 swift libs를 확인한 결과 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로 변경해야했습니다.

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


감사합니다! Fastlane과 Gym도 사용 중이며 이로 인해 문제가 해결되었습니다.
Eystein Bye

감사합니다. 이는 Gym을 사용할 때도 문제를 해결하는 데 도움이되었습니다. use_legacy_build_api와 함께이 솔루션을 계속 사용할 수있었습니다. true
Viktor Malyi

6

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

Pods-frameworks.sh를 둘러 본 결과 다음과 같은 주석이 달린 섹션을 찾았습니다.

링크 된 Swift 런타임 라이브러리
포함 이러한 라이브러리를 복사하는 코드 블록 (및 코드 서명)을 주석 처리하면 제출 문제가 해결 된 것 같습니다. 나는 문제를 일으키는 것이 단지 복사인지 또는 코드 서명인지 확인하기 위해 아직 더 깊이 파고 들지 않았습니다. 나는 거기 내 깊이에서 약간 벗어나고 있습니다.


4
  1. cocoapods를 최신 버전으로 업데이트 sudo gem install cocoapods하고 터미널을 입력하십시오 .
  2. pod update프로젝트 디렉토리에서 실행하십시오 .
  3. 모든 포드에 대한 옵션에 대해 비트 코드 활성화아니오 로 설정해야합니다 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

2

이에 대한 내 솔루션 :

Cocoapods를 통해 Reveal을 사용하고 있으며 Reveal은 Bitcode를 비활성화해야합니다. 그래서 Debug에만 Reveal (다른 Framwork에서 작동해야 함)을 포함했습니다.

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

내 Reveal은 이제 디버그 용으로 만 구성되었으므로 디버그 용으로 만 비트 코드를 비활성화했습니다.

여기에 이미지 설명 입력

이 설정으로 모든 것이 해킹없이 잘 작동합니다.


0

이 오류는 비트 코드를 지원하지 않는 라이브러리 (예 : 현재 안정적인 버전의 New Relic)를 통합 할 때 발생하는 것을 보았습니다. 해결책은 라이브러리를 제거하거나 비트 코드를 비활성화하거나 (잠재적으로 스토어에 제출할 수 없음) 라이브러리 공급 업체의 비트 코드를 지원하는 업데이트 된 바이너리를 기다리는 것입니다.


0

나에게 오류는 앱 스토어에 스파를 업로드하기 위해 App Store 프로필 대신 Adhoc 프로필을 사용하여 구축했다는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.