Xcode6 GM으로 앱을 제출하려고하는데 유효성 검사 시이 오류가 발생합니다. 이 앱에는 액션 확장 프로그램과 확장 프로그램과 앱 자체간에 공유되는 동적 프레임 워크가 있습니다.
프로젝트 어딘가에 'Frameworks'라는 파일이 없으므로 이것이 무엇을 의미하는지 잘 모르겠습니다. 누구 든지이 문제를 얻었거나 아이디어가 있습니까?
Xcode6 GM으로 앱을 제출하려고하는데 유효성 검사 시이 오류가 발생합니다. 이 앱에는 액션 확장 프로그램과 확장 프로그램과 앱 자체간에 공유되는 동적 프레임 워크가 있습니다.
프로젝트 어딘가에 'Frameworks'라는 파일이 없으므로 이것이 무엇을 의미하는지 잘 모르겠습니다. 누구 든지이 문제를 얻었거나 아이디어가 있습니까?
답변:
오류가 Swift 사용과 관련이 있음을 알 수 있습니다 (앱과 확장 프로그램 모두 Swift를 사용함).
응용 프로그램의 경우 다음을 설정해야했습니다.
Embedded Content Contains Swift Code: YES
그리고 연장을 위해 :
Embedded Content Contains Swift Code: NO
Xcode 8 및 9
Always Embed Swift Standard Libraries
Xcode 8 및 9에서 이름이 다음과 같이 변경되었습니다 .
Always Embed Swift Standard Libraries: YES
그리고 연장을 위해 :
Always Embed Swift Standard Libraries: NO
@executable_path/../../Frameworks
나를 위해 일한 유일한 해결책은이 실행 스크립트를 App Extension 대상에 추가하는 것입니다.
cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"
if [[ -d "Frameworks" ]]; then
rm -fr Frameworks
fi
dyld: Library not loaded: ... Image not found
누구든지 나를 도울 수 있습니까?
빌드 설정에서이 문제를 해결하는 3 단계
Embedded Content Contains Swift Code: YES
Embedded Content Contains Swift Code: NO
@executable_path/../../Frameworks
필자의 경우 방금 CocoaPods 1.0.1로 업그레이드했는데 이것은 새로운 버그 인 것 같습니다.
포드 업데이트는 내 확장의 대상에 실행 스크립트를 추가하여 Frameworks 폴더를 만듭니다. @Roman의 실행 스크립트를 추가하여 제거하려고했습니다.
해결책은 확장의 빌드 단계에서이 스크립트를 삭제하는 것이 었습니다. 여기에 가야했던 것이 있습니다 ...
1.1.0.rc.2
하여 문제 해결했습니다.
모든 빌드 단계 제거embed
제목에 단어가있는 확장의 를 .
또한 :
Yes
확장 대상에 포함 된 컨텐츠에는 스위프트 코드 가 포함되어 있어야합니다 .위의 답변 중 어느 것도 나를 위해 일하지 않았습니다. 오류는 상위 앱이나 확장 프로그램이 아닌 오류 때문입니다. 연결된 라이브러리 중 하나가 잘못되었습니다.
확인하려면 먼저 Xcode를 사용하여 보관 한 다음 Organizer를 사용하여 항목을 선택하고 Finder에서 표시를 사용하여 찾습니다. 이 표시됩니다.xcarchive
파일 됩니다.
해당 파일을 선택하고 "패키지 내용 표시"를 선택하십시오.
Products / Applications 폴더에서 .app를 선택하고 "Show Package Contents"를 다시 선택하십시오.
Frameworks 폴더에서 문제가되는 모듈을 찾으십시오. 예를 들어 오류가 다음과 같은 경우
ERROR ITMS-90206: "Invalid Bundle. The bundle at 'MyApp.app/Frameworks/MyLib.framework' contains disallowed file 'Frameworks'."
그러면 Frameworks/MyLib.framework
다음과 같이 보일 것입니다.
../Frameworks/libswiftContacts.dylib
../Frameworks/libswiftCore.dylib
../Frameworks/libswiftCoreData.dylib
../Frameworks/libswiftCoreGraphics.dylib
../Frameworks/libswiftCoreImage.dylib
../Frameworks/libswiftCoreLocation.dylib
../Frameworks/libswiftDarwin.dylib
../Frameworks/libswiftDispatch.dylib
../Frameworks/libswiftFoundation.dylib
../Frameworks/libswiftLocalAuthentication.dylib
../Frameworks/libswiftObjectiveC.dylib
../Frameworks/libswiftPassKit.dylib
../Frameworks/libswiftUIKit.dylib
../Frameworks/libswiftWebKit.dylib
부모 응용 프로그램에 포함 된 연결된 라이브러리 또는 모듈이 EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;
Xcode에서 종속 모듈을 찾고 플래그를 업데이트하십시오.
이 문제를 극복 한 후에도 iTunes Store에서 설명 이메일로 앱이 거부 될 수 있습니다.
Invalid Swift Support - The Watch OS application has Swift libraries at both...
다시 이것은 EMBEDDED_CONTENT_CONTAINS_SWIFT
깃발로 돌아옵니다 . 상위 앱만이로 설정되어 있는지 확인하십시오 YES
. WatchKit 앱과 확장 프로그램 모두이 플래그를로 설정해야합니다 NO
. 위의 @Mike의 답변에 자세히 설명되어 있습니다.
만약 삽입 포드 프레임 워크 스크립트와 로마의 스크립트 동일한 대상에 모두 존재합니다.
Embed Pods Frameworks가 다른 것보다 먼저 위치하는지 확인하십시오. 그렇지 않다면 로마의 대본을 마지막으로 옮기십시오.
cd "$ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} /"if [[-d "Frameworks"]]; 그런 다음 rm -fr Frameworks fi
나는 이와 같은 많은 질문을 발견했지만 아무도 내 문제를 해결하는 데 도움이되지 않았으므로 이것이 누군가를 도울 수 있기를 바랍니다.
Apple에서 권장하는대로 확장 기능 (Siri 바로 가기 용)이있는 응용 프로그램을 만들고 확장 프로그램과 내 응용 프로그램간에 공유되는 코드 프레임 워크를 사용하고 있습니다.
대상에 대한 "일반"설정의 "프레임 워크 및 라이브러리"섹션에서 확장에 내 프레임 워크를 추가했습니다. 여기에 프레임 워크를 추가하면 두 개의 열이 있습니다. 하나는 프레임 워크의 이름이고 다른 하나는 "Embed"라는 제목입니다. "Embed"열에 아무 것도 나타나지 않아서 괜찮다고 생각했지만 내 프레임 워크의 해당 열에 대해 "Be Not Embed"옵션을 명시 적으로 선택해야했습니다. 내가 그것을하고 Xcode에 보관했을 때, 프레임 워크가 ipa 컨텐츠에 각 대상 아래에 더 이상 나열되지 않고 한 번만 표시되고 유효성 검사가 마침내 성공했음을 확인할 수 있습니다.
오늘 확장 기능이있는 앱의 XCode 7.1.1 에서이 문제가 처음으로 발생했습니다 (프로젝트에는 Swift가 없습니다). 스크립트 ( https://github.com/CocoaPods/CocoaPods/issues/4203 )가 작동하지 않았습니다.
cocoapod를 버전 0.39.0.beta.3으로 다운 그레이드 pod install
한 다음을 다시 보관하면 문제가 해결되었습니다.