[ios] 유효성 검사 오류 : 잘못된 번들입니다. …의 번들에 허용되지 않는 파일 ‘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 LibrariesXcode 8 및 9에서 이름이 다음과 같이 변경되었습니다 .

Always Embed Swift Standard Libraries: YES

그리고 연장을 위해 :

Always Embed Swift Standard Libraries: NO


답변

나를 위해 일한 유일한 해결책은이 실행 스크립트를 App Extension 대상에 추가하는 것입니다.

cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"
if [[ -d "Frameworks" ]]; then
    rm -fr Frameworks
fi

여기에 이미지 설명을 입력하십시오
출처 : https://github.com/CocoaPods/CocoaPods/issues/4203


답변

빌드 설정에서이 문제를 해결하는 3 단계

  1. 컨테이너 앱 : Embedded Content Contains Swift Code: YES
  2. 신장: Embedded Content Contains Swift Code: NO
  3. 확장명 : Runpath Search Path = @executable_path/../../Frameworks

답변

필자의 경우 방금 CocoaPods 1.0.1로 업그레이드했는데 이것은 새로운 버그 인 것 같습니다.

포드 업데이트는 내 확장의 대상에 실행 스크립트를 추가하여 Frameworks 폴더를 만듭니다. @Roman의 실행 스크립트를 추가하여 제거하려고했습니다.

해결책은 확장의 빌드 단계에서이 스크립트를 삭제하는 것이 었습니다. 여기에 가야했던 것이 있습니다 …

여기에 이미지 설명을 입력하십시오


답변

모든 빌드 단계 제거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의 답변에 자세히 설명되어 있습니다.


답변

필자의 경우 “항상 내장 된 Swift 표준 라이브러리”에 대해 Yes를 지정하는 CocoaPod 라이브러리 “Blockly”가 있습니다. 옵션에 대해 NO를 만든 후 효과가있었습니다.여기에 이미지 설명을 입력하십시오