응용 프로그램에서 iOS 앱 아카이브를 생성하는 데 문제가 있습니다. 응용 프로그램은 잘 컴파일되고 시뮬레이터에서도 작동합니다. 이제 나는 임시 테스트를하고 싶었고 iOS 앱 아카이브를 생성 할 수 없습니다. 제품-> 아카이브를 클릭하면 일반 xcode 아카이브가 생성됩니다. 누구든지 나를 도울 수 있습니까? 이 애플리케이션의 iOS 앱 아카이브를 이미 생성했음을 언급해야합니다. 어떤 이유로 iOS 아카이브 생성을 중단했습니다. 고마워
응용 프로그램에서 iOS 앱 아카이브를 생성하는 데 문제가 있습니다. 응용 프로그램은 잘 컴파일되고 시뮬레이터에서도 작동합니다. 이제 나는 임시 테스트를하고 싶었고 iOS 앱 아카이브를 생성 할 수 없습니다. 제품-> 아카이브를 클릭하면 일반 xcode 아카이브가 생성됩니다. 누구든지 나를 도울 수 있습니까? 이 애플리케이션의 iOS 앱 아카이브를 이미 생성했음을 언급해야합니다. 어떤 이유로 iOS 아카이브 생성을 중단했습니다. 고마워
답변:
빌드 설정 확인 :
/usr/local/include
. 정적 라이브러리를 작성하는 경우 헤더 는 공용 이어야 하므로 # 3이 공용 헤더 폴더 경로를보다 합리적인 것으로 변경하는 것이 더 정확합니다 include/$(TARGET_NAME)
. @CopperCash는 아래 답변에서 이것을 지적합니다.
프레임 워크 / 라이브러리를 추가 한 경우 이런 상황이 발생할 수 있습니다. 해당 라이브러리의 Target-> Build Settings를 편집하고 'Skip Install'설정을 'Yes'로 설정해야합니다. 다시 아카이브 할 때 XCode는 '일반 xcode 아카이브'가 아닌 'iOS App Archive'를 다시 생성하기 시작해야합니다.
의 또한 건너 뛰기 설치 에 예 와 경우에 당신은 당신이에서 (있는 경우) 헤더를 이동해야 앱 프로젝트 내에서 다른 lib 디렉토리 / framwork 프로젝트를 열어 대중 에게 프로젝트 에서 빌드 단계 / 복사 헤더 .
나는 그것이 나를 위해 작동하도록 다음을 수행했다.
Absolute path
로 변경 되었는지 확인하십시오 products directory
. 참고 :이 오류를 발생시키는 라이브러리를 찾으려면 검색 범위를 좁히려면 아래 힌트를 참조하십시오.그게 다야!
힌트 : 아카이브가 ipa가 아닌 아카이브 파일을 작성하게하는 문제가있는 파일에 대한 아이디어를 얻으려면 다음 을 수행하십시오.
usr/local/include
공개에서 프로젝트로 이동해야하는 범인 헤더 파일 또는 절대 경로에서 제품 디렉토리로 변경해야하는 파일 (또는 건너 뛰기 설치를 yes 플래그로 설정하는 것을 잊어 버린 파일)도 식별 할 수 있습니다. 그러나 해당 디렉토리 (예 : usr / local / include)는 서브 라이브러리 디렉토리 구조에 따라 다릅니다. 대부분의 경우. 위의 3 단계에서 파일 복사 아래에 나열된 모든 파일 을 볼 수 있습니다. 여기에서 찾으면 문제의 원인에 대한 명확한 대답이 있습니다.힌트로 업데이트 : 인생을 더욱 단순하게 만듭니다. 위의 힌트 에서 4 단계 아래에 표시되는 모든 파일 . xcode의 전역 검색에서 해당 파일을 검색하기 만하면됩니다. 예를 들어, 이것은 내 폴더의 내용이었습니다 (위 힌트의 단계를 따르십시오).
그래서 나는 그것이 crypto 및 ssl 라이브러리 와 관련이 있다고 말할 수 있습니다.
skip install을 yes로 설정하는 것을 잊었다는 것을 깨달았습니다.
./usr/local/include
.
아카이브를 내보내는 경우이를 열고 제품/urs/local/include
에서 다음 제안 시도를 참조하십시오 .
각 포드, 아래에서
Packaging
,Private Headers Folder Path
그리고이Public Headers Folder Path
설정됩니다/usr/local/include
. 내가 지우면 유효한 아카이브를 얻습니다.
React Native 앱을 0.11.0
Xcode 7
및 CocoaPods 로 업그레이드 한 후 나를 위해 일했습니다 0.39.0.beta.4
.
당신이 CocoaPods뿐만 아니라 WatchKit 또는 오늘 확장을 사용하는 경우, 개방이 문제를 설명에게 문제가 될 수 REPO 무엇 CocoaPods에가.
솔루션 내게는 제거했다 Copy Pod Resources
WatchKit 확장에서의 위상을하고 오늘 확장에 따라 대상 Build Phases
. 이 작업을 수행하면 프로젝트가 예상대로 컴파일 및 보관되었습니다.
이것이 누군가를 도울 수 있기를 바랍니다.
위의 답변 중 하나라도 효과가 없으면 문제가있는 것입니다 cocoaPods
. 최신 업데이트로 0.38.1
인해 문제가 발생했지만 다운 그레이드 0.37.1
되어 정상적으로 돌아 왔습니다. 사용Xcode 6.3.1
나중에 편집 : 업데이트하면 0.38.2
이 문제가 해결됩니다. 이 문제를 일으킨 원인에 대한 추가 정보 : Cocoapods 0.38.1이 유효한 아카이브를 생성하지 못했습니다.
0.38.2
여전히 문제가 있습니다. Xcode 7을 사용하고 있습니까?
/Library/Frameworks
있습니다. 동적 프레임 워크로 구축되지 않은 Google의 코코아 포드와 관련이 있다고 생각합니다. github.com/CocoaPods/CocoaPods/issues/3889
Xcode5를 사용하고 있지만 그것을 정렬 한 것은 구성표를 편집하는 것이 었습니다. 해당되는 위의 모든 제안을 시도해도 도움이되지 않았습니다.
"앱"과 "앱 무료"라는 두 가지 대상이있었습니다. 일반 아카이브와 관련된 문제는 무료 버전을 아카이브하려고 할 때 발생했습니다. 무료 버전은 앱의 '일반'버전 이후에 추가되었습니다. 필자의 경우 툴바에서 Scheme을 선택하고 Edit Scheme ...을 선택했을 때 Build 섹션에 App과 App FREE라는 두 가지 대상이 있음을 알았습니다.
App의 모든 열을 선택 취소하고 App FREE의 열만 선택된 상태로두고 확인을 클릭했습니다. 다음에 Product> Archive를 선택하면 Generic Archive 대신 내 앱이 무료였습니다. :)
iOS 9 및 Xcode 7로 업데이트 한 후이 문제가 발생했습니다. Josh H의 솔루션이 저에게 효과적이었습니다.
각 포드의 패키징에서 개인 헤더 폴더 경로 및 공개 헤더 폴더 경로는 / usr / local / include로 설정되어 있습니다. 내가 지우면 유효한 아카이브를 얻습니다.
또한 Podfile이 자동으로 수행 할 수 있도록 설치 후 스크립트를 만들었습니다.
post_install do |installer_representation|
installer_representation.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['PUBLIC_HEADERS_FOLDER_PATH'] = [""];
config.build_settings['PRIVATE_HEADERS_FOLDER_PATH'] = [""];
end
end
end
Podfile 하단에 추가하고 실행하십시오. pod install
내 작업 공간 (GTL, 포드 및 기본 프로젝트)에 여러 프로젝트가 있으며 이것이 나를 위해 일한 것입니다.
프로젝트를 선택하면 두 가지 유형이 있으며 프로젝트 와 대상이 있습니다.
귀하의 주와 같지 않은 프로젝트의 GTL
경우 PODS
:
프로젝트 :
Skip Install = NO
Installation Directory = /Applications
// For pods
Private Headers Folder Path = ""
Public Headers Folder Path = ""
목표 :
Skip Install = YES
Installation Directory = /Applications
// For pods
Private Headers Folder Path = ""
Public Headers Folder Path = ""
기본 프로젝트 (일반적으로 제품 이름과 동일한 이름) :
프로젝트 :
Skip Install = NO
Installation Directory = /Applications
목표 :
Skip Install = NO
Installation Directory = /Applications
각 프로젝트와 대상에서 iOS 배포 대상을 확인하여 모두 동일한 지 확인하십시오.
나는이 문제가 있었다. 필자의 경우 Mac 앱 대상을 iOS 앱의 종속성으로 유지하여 발생했습니다.
이와 같이 설정 한 이유는 Mac 앱이 iOS 앱용 데이터를 생성하는 데 사용 된 도구 였기 때문에 번들에 포함 되었기 때문입니다.
iOS 앱 자체를 빌드하기 전에 해당 종속성을 제거하고 도구를 별도로 빌드해야했습니다.
내 시나리오에서 나는 주로 Objective-C 프로젝트에 Swift 코드를 포함시키기 시작한 후에 만 잘못된 "Generic Archive"를 얻었습니다. Xcode가 뱉어 낸 아카이브 파일에 대한 많은 문제 해결 및 검사 후 SwiftSupport
Swift 런타임에 필요한 dylib 가있는 폴더가 바닐라의 새로운 Swift 프로젝트 앱 아카이브와 다른 위치에 있음을 알았습니다. .
Installation Directory
빌드 설정을 찾았고 프로젝트에서 사용자 정의 경로로 설정 되었음을 알았습니다. 나는 단순히 그것을 삭제하고 (일반적인 값으로 설정 /Applications
) 다음 빌드-> 아카이브는 예상대로 작동했으며 적절한 iOS 앱 아카이브를 제공했습니다.
TL; DR :Installation Directory
빌드 설정이 /Applications
앱에 Swift 코드를 포함시킬 때 의 기본값으로 설정되어 있는지 확인하십시오 . 특히 예상치 못한 레거시 빌드 설정이있는 오래된 프로젝트 파일로 시작하는 경우에 특히 그렇습니다.
동일한 여정에서 다른 사람들을 구하기 위해 여기에 남겨 두십시오.
내 작업 공간의 정적 라이브러리 대상에서 동일한 Copy Pod Resources 빌드 단계를 제거해야한다는 것을 알았습니다.
오랜 시간이 지난 후에도 위의 방법으로도 도움이되지 않았다면 ......
Bundle Version Short 1.0만으로도 만족하기 때문에 Info.plist에서 Bundle Version의 값을 삭제했습니다 . 나쁜. 이러지 마
* 참고 실제로 Info.plist 파일에 빈 키를 넣을 것이라는 사실을 알지 못하고 오른쪽 UI에서 편집 하여이 작업을 수행했습니다. 나는 그것이 무효라고 생각합니다. 보관하는 동안 번들이 다른 항목으로 표시되어 아이콘이 없어서 아무 곳에 나 업로드 할 수 없습니다.
이것은 Info.plist에서 유효하지 않은 값으로 귀결됩니다. 유효한 아카이브가 아닌 경우 이전 아카이브의 압축을 풀고 현재 아카이브를 삭제 / 덮어 쓰고 아카이브를 다시 빌드 할 때 수정되는지 확인하십시오.
빌드 설정으로 이동하여 추가
코드 서명 권한 에 대한 yourAppName / Resources / dist.plist
iOS 장치 또는 빌드 대상으로 선택된 실제 장치로 cmd + B 를 누릅니다.
완료되면-> "제품"폴더로 스크롤하여 yourAppName.app을 마우스 오른쪽 버튼으로 클릭하십시오
"파인더에 표시"를 선택하십시오
이름 페이로드 ( 대문자 "P" )가 있는 폴더를 만듭니다.
페이로드 폴더에 yourAppName을 복사 하십시오.
페이로드 폴더에서 zip 생성
zip의 이름 을 yourAppName.ipa 로 바꾸십시오.
끝난
Project> Targets> Build Phases> target dependencies에 .xcodeproj 파일이 있으면 거기에서 파일을 제거하고 ipa를 빌드하십시오. 그것은 나를 위해 작동합니다. 건배
철저히하기 위해 솔루션을 게시하고 있습니다.
Xcode 5.1.1 (5B1008)에서 iOS 프로젝트의 아카이브를 빌드하는 것과 똑같은 문제가 발생했습니다. 위의 제안 중 어느 것도 문제를 해결하지 않았으며 대부분 관련이 없었습니다 (프레임 워크를 추가하지 않았으며 빌드 단계의 헤더 복사 섹션에 공개 항목이 없습니다).
필자의 경우 문제를 해결하는 것은 단순히 프로젝트를 닫고 이전에 만든 아카이브를 삭제하고 환경 설정> 계정으로 이동하여 개발자 계정 제거, Xcode 종료, 다시 시작, 개발자 계정 다시 추가, 아카이브 프로세스 시작으로 구성되었습니다. 다시. 이것은 내 문제를 즉시 해결했습니다.
XCode 에서 앱 프로젝트 만 열어서이 오류를 해결했습니다 . 응용 프로그램 및 기타 프로젝트 / 라이브러리 / 프레임 워크로 구성된 작업 영역을 열지 않습니다 .
2 별도의 프로젝트, 프레임 워크 또는 공유 라이브러리와 아이폰 OS 응용 프로그램을 가지고, 내가 직접 열어이 다른 엑스 코드 창 각을 열 수 있었다 .xcodeproj의 대신 공통의 파일 .xcworkspace을 preperly 빌드 각 순서.
좋은 부작용으로, XCode는 Clean을 한 후에 더 이상 모든 프로젝트의 모든 대상을 다시 작성하지 않으므로 빌드 시간이 단축됩니다.
배경 : 오픈 소스 SDK 및 데모 iOS 응용 프로그램을 만들고 있습니다. 둘 다 하나의 작업 공간에서 열었습니다. SDK 대상에서 설치 건너 뛰기 를 YES로 설정 하면 아카이브가 비어 있으므로 누구나 아카이브를 작성할 수 없으므로 이는 옵션이 아닙니다. 공용 헤더 대신 Project 를 사용하면 배포해야 할 헤더 파일이없는 아카이브가 생성되므로 옵션도 아닙니다.
작업 공간에서 작업하고 있었기 때문입니다. 프로젝트가 보관되었지만 관리자 창에 표시됩니다. 작업 공간을 닫고 프로젝트를 자체적으로 열었습니다. 보관함이 주최자에서 열렸습니다 ... 도움이 되길 바랍니다.
xcodebuild
. 해결책은 대상을 지정하는 것입니다.xcodebuild -destination generic/platform=iOS