유효성 검사 오류 : 잘못된 번들입니다. …의 번들에 허용되지 않는 파일 'Frameworks'가 포함되어 있습니다.


165

Xcode6 GM으로 앱을 제출하려고하는데 유효성 검사 시이 오류가 발생합니다. 이 앱에는 액션 확장 프로그램과 확장 프로그램과 앱 자체간에 공유되는 동적 프레임 워크가 있습니다.

프로젝트 어딘가에 'Frameworks'라는 파일이 없으므로 이것이 무엇을 의미하는지 잘 모르겠습니다. 누구 든지이 문제를 얻었거나 아이디어가 있습니까?오류는 다음과 같습니다


Frameworks라는 폴더는 어떻습니까?
borrrden

프로젝트에는 Frameworks라는 '그룹'이 있지만 폴더는 없습니다. 나는 그것을 제거하고 다시 보관했는데 여전히 같은 오류가 발생합니다.
Mike

답변:


308

오류가 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

7
당신은 나의 구세주입니다. "내장"은 번들의 확장을 의미하며, 확장에 더 많은 확장이 포함되어 있지 않으므로 빠른 코드가 포함되지 않습니다.
Chris Truman

2
이것은 나를 위해 문제를 해결하지 못했습니다. 나는 또한 CocoaPods를 사용하고 있습니다. 그와 관련된 문제를 본 사람이 있습니까? 다른 아이디어가 있습니까?
timschmitz

8
Runpath 검색 경로에 다음을 확인하기위한 WatchKit 확장을 잊지 마십시오@executable_path/../../Frameworks
Mr. Rogers

1
@ MrRogers 이것은 답변을 따른 후 내 문제를 해결 한 것입니다. 빠른 시계가있는 objC 앱이 있습니다. 내장 된 콘텐츠를 설정하지 않아도 제대로 실행되지만 Apple에서 거부했습니다. 임베디드 콘텐츠를 올바르게 설정하면 앱이 중단되었습니다. 이 검색 경로는 문제를 해결했습니다.
Beau Nouvelle

1
이것은 나를 위해 일하지 않았고, 다른 일을해야했고 문제가있는 대상 확장에 있었고,이 후에 "[CP * Embed Pods Frameworks"의 스크립트를 지 웠습니다. 올바르게 작동합니다!
A. Trejo

122

나를 위해 일한 유일한 해결책은이 실행 스크립트를 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


7
내 응용 프로그램은 Swift를 사용하지 않으므로 이것이 나에게 도움이되는 유일한 수정이었습니다.
Dan Loughney

6
이것은 주요 대상이 아닌 확장에만 추가하면된다는 점을 언급 할 가치가 있습니다.
theDuncs

3
이것은 실제로 문제를 해결하지만 다른 문제는 시뮬레이터에서 내 장치 또는 내 장치에서 응용 프로그램을 실행할 수 없다는 또 다른 문제를 제공합니다. 오류가 발생합니다. dyld: Library not loaded: ... Image not found누구든지 나를 도울 수 있습니까?
Subkhan Sarif

4
그냥 나인가요, 아니면 이런 종류의 미친가요?
bkbeachlabs

1
.ipa 유효성 검사시 수정되었지만 오류 메시지와 함께 설치시 충돌 : dyld : 라이브러리가로드되지 않음 : @ rpath / AFNetworking.framework / AFNetworking 참조 : / var / containers / Bundle / Application / .... 이유 : 이미지를 찾을 수 없음
Aleem

45

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

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

2
컨테이너 대 확장, 나는 Xcode를 처음 사용합니다. 확장 코코아 포드는 어디에 있습니까? 아니면이 두 곳은 어디에 있습니까?
Serge Pedroza

16

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

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

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

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


7
나를 위해 해결했습니다! 다시 한 번 CocoaPods는 1 시간 이상 동안 무엇이 잘못되었는지 알아 내려고 노력합니다. 나는 그 제품과 진지한 사랑과 증오 관계가 있습니다.
fguchelaar

2
Cocoapod를 업그레이드 1.1.0.rc.2 하여 문제 해결했습니다.
Otávio

1
키보드 익스텐션의 Build Phases에서 Embed Pods Frameworks를 삭제하면 나에게 도움이되었습니다! Xcode 8 및 CocoaPods v1.0.1을 사용하고 있습니다. 감사!
Storm Factory

13

모든 빌드 단계 제거embed제목에 단어가있는 확장의 를 .

또한 :

  • Yes확장 대상에 포함 된 컨텐츠에는 스위프트 코드포함되어 있어야합니다 .

11

위의 답변 중 어느 것도 나를 위해 일하지 않았습니다. 오류는 상위 앱이나 확장 프로그램이 아닌 오류 때문입니다. 연결된 라이브러리 중 하나가 잘못되었습니다.

확인하려면 먼저 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의 답변에 자세히 설명되어 있습니다.


10

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


9

필자의 경우 솔루션은 내 확장의 Embedded Binaries에서 내 프레임 워크를 제거하고 내 확장의 Linked Frameworks and Libraries에 추가하는 것입니다. (모두 확장의 일반 탭에서 찾을 수 있습니다.)


7

만약 삽입 포드 프레임 워크 스크립트와 로마의 스크립트 동일한 대상에 모두 존재합니다.

Embed Pods Frameworks가 다른 것보다 먼저 위치하는지 확인하십시오. 그렇지 않다면 로마의 대본을 마지막으로 옮기십시오.


@Reeonce Zeng, 당신은 내 하루를 저장 놀라운!
mgyky

두 스크립트를 모두 유지해야합니까 아니면 마지막 부분 만 유지해야합니까? "$ {SRCROOT} / Pods / Target 지원 파일 / Pods-Orsys WatchKit 확장 프로그램 / Pods-Orsys WatchKit Extension-frameworks.sh"cd "$ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} /"[[-d "프레임 워크"] ]; 다음 rm -fr Frameworks fi

@stack에서 새로운 실행 스크립트 단계를 추가하고 다음을 채워야합니다.`cd "$ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} /"if [[-d "Frameworks"]]; 다음 RM -fr 프레임 워크 Fi를`
Reeonce 쩡

새 스크립트를 실행한다는 것은 무슨 뜻입니까? 이미 스크립트가 있습니다. 확인 ? 이전 스크립트를 바꾸려면 텍스트를 바꾸어 프로젝트를 한 번 실행해야합니다. "프로그램을 설치할 때 스크립트 실행"옵션을 선택해야합니까?

좀 더 도와주세요. wathckit 확장에 대한 오류가 발생했습니다. 내 워치 킷 확장 프로젝트에는 프로젝트에 "appex에 허용되지 않는 문제 수정 ..."옵션 / 메뉴 / 탭이 없습니다. 어디서 찾을 수 있습니까? "내장 포드 프레임 워크"와 "포드 포드 프레임 워크"만 있습니다. 도와주세요.

6

설정을 찾을 수 없었지만 설정 Embedded Content Contains Swift Code을 찾을 수 있었고 Always Embed Swift Standard Libraries프레임 워크에 대해 이것을 NO로 설정하면이 문제가 해결되었습니다.


4
  1. 컨테이너 앱 : 빌드 설정-> 포함 된 컨텐츠에 스위프트 코드가 포함됨 :
  2. 확장 : 빌드 설정-> 임베디드 컨텐츠에 스위프트 코드 포함 : NO
  3. 확장 : 빌드 단계-> 다음 실행 스크립트 를 추가 했습니다.

cd "$ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} /"if [[-d "Frameworks"]]; 그런 다음 rm -fr Frameworks fi

  1. (중요) 확장 : 빌드 단계-> 실행 스크립트마지막으로 이동 (Pods Frameworks 임베드 스크립트 이후)

"마지막으로"는 중요한 부분이었습니다. 감사합니다.
Andy Obusek

3

CocoaPods를 사용하는 경우 문제가있는 대상 (확장자)에서 Embed 프레임 워크 빌드 단계를 삭제하는 것이 좋습니다. 이렇게하면 문제가 해결되었습니다.


2

동일한 오류가 발생하여 프레임 워크를 확장 번들에 복사했기 때문입니다. 확장 프로그램에서 사용하는 프레임 워크는 기본 앱 번들로 복사되고 확장 빌드 설정에서만 링크되어야합니다 (복사되지 않음). 확장 빌드에 검색 경로 '@ executable_path /../../ Frameworks'가 있어야합니다. XCode 10에 의해 경로가 자동으로 추가되었다고 생각합니다.


1

나는 이와 같은 많은 질문을 발견했지만 아무도 내 문제를 해결하는 데 도움이되지 않았으므로 이것이 누군가를 도울 수 있기를 바랍니다.

Apple에서 권장하는대로 확장 기능 (Siri 바로 가기 용)이있는 응용 프로그램을 만들고 확장 프로그램과 내 응용 프로그램간에 공유되는 코드 프레임 워크를 사용하고 있습니다.

대상에 대한 "일반"설정의 "프레임 워크 및 라이브러리"섹션에서 확장에 내 프레임 워크를 추가했습니다. 여기에 프레임 워크를 추가하면 두 개의 열이 있습니다. 하나는 프레임 워크의 이름이고 다른 하나는 "Embed"라는 제목입니다. "Embed"열에 아무 것도 나타나지 않아서 괜찮다고 생각했지만 내 프레임 워크의 해당 열에 대해 "Be Not Embed"옵션을 명시 적으로 선택해야했습니다. 내가 그것을하고 Xcode에 보관했을 때, 프레임 워크가 ipa 컨텐츠에 각 대상 아래에 더 이상 나열되지 않고 한 번만 표시되고 유효성 검사가 마침내 성공했음을 확인할 수 있습니다.



0

나는 같은 오류가 발생했습니다.

허용되지 않는 중첩 번들 오류

내 문제는 SquareReaderSDK.framework구체적으로 있었지만 지침에 따라 새 실행 스크립트를 추가해야했습니다.

FRAMEWORKS="${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}"
"${FRAMEWORKS}/SquareReaderSDK.framework/setup"

0

여기에 나열된 빌드 설정 중 어느 것도 나를 위해이 문제를 해결하지 못했습니다. 그러나 일부 프레임 워크를 "Embedded Binaries"에서 "Linked Frameworks and Libraries"로 옮긴 후에이 기능을 사용할 수있었습니다.

내 기본 앱과 사용자 지정 프레임 워크 중 하나가 모두 동일한 프레임 워크 종속성을 보였으며 No No 인 것처럼 보이지만 기본 앱에서 포함 영역에서 연결된 영역으로 이동하면 앱을 성공적으로 업로드 할 수있었습니다. 오류가 없습니다.

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