다음 지시 사항 (참조 : 애플의 개발자 문서 및에 BoltClock의 대답 애플 개발자 프로그램이나 탈옥없이 장치에서 테스트 iOS 앱을 ),이 경우에 (아이폰 OS 응용 프로그램을 컴파일 할 수 있었다 기원 ,하지 않는 비디오 게임 콘솔 에뮬레이터 응용 프로그램 Apple의 지침을 준수하고 Xcode 7의 Apple App Store에서 절대 허용되지 않습니다. 개인 iCloud 계정으로 서명하고 USB로 Mac에 연결하고 xcode 메뉴에서 iPhone을 선택하여 iPhone에 사이드로드하십시오. -> 대상)으로 이동 한 다음 설정-> 일반-> 프로필에서이 서명이있는 앱을 "신뢰"하여 내 icloud 계정과 관련된 인증서를 장비에 설치하여 휴대 전화에서 실행할 수 있도록합니다.
무선 다운로드로 이러한 단계를 복제하고 싶습니다. Xcode를 통해 iPhone을 가지고 있지만 Xcode를 사용하여 Mac에 액세스 할 수없는 형제와 공유 할 수있는 실행 파일을 만들 수 있습니까?
이 질문 에서 언급했듯이 StackExchange Network는 모바일 장치 관리를 통한 Apple의 엔터프라이즈 배포를 사용하여 iOS 앱 베타 프로그램에서 이와 비슷한 것을 달성했습니다 . BuildStore ( http://builds.io/ ) 도 있습니다.이 스토어 는 연간 10 달러에 유료 Apple Developer Program 계정과 관련된 "개발자 팀"에 사용자를 추가하여이 기능을 가능하게합니다 ( Apple dev docs 참조 ). . Xcode 7을 사용하면 엔터프라이즈 또는 일반 유료 개발자 계정 없이도 이러한 작업을 수행 할 수 있습니까?
업데이트 : Stacksza의 도움 덕분에 몇 가지 진전이 있었으며 여기에 요약 할 것입니다.
- XCode는 아카이브 (제품-> 아카이브)를 생성하지만 유료 ADP 계정 계층을 구독하지 않고 임시 배포를 위해 아카이브를 .ipa 파일로 내보낼 수 없습니다.
- 명령 행 xcode 도구 는 유료 ADP 계정이 없어도 .ipa 실행 파일을 작성 하므로 문제 가 없습니다. 와 같은 명령을 사용하십시오
xcodebuild -exportArchive -archivePath Provenance-Release\ 11-20-15\,\ 22.24.xcarchive/ -exportOptionsPlist ~/manifest.plist -exportPath ~/Provenance
( Apple 개발자 계정없이 xcode 6에서 ipa를 만드는 방법에 대한 Khawar의 답변 참조 ) - 그러나이 명령을 사용하려면 매니페스트 .plist 파일을 지정해야합니다. Razvan의 OTA (Over The Air) iOS IPA 파일 배포에 대한 답변은 ? SSL 웹 페이지에서 호스팅해야하는 다운로드 링크를 제공하는 데 필요한 하이퍼 링크 형식에 대한 지침과 샘플 manifest.plist를 포함합니다. SSL URL이 앱의 번들 ID를 계산해야 할 수도 있지만 확실하지 않습니다.
- 그러나 위의 내용은 앱을 다운로드하는 장치에 앱이 제공되고 장치가 이미 개발자 인증서를 설치 한 경우에만 작동합니다. 예를 들어 USB를 통해 Xcode에 이전에 연결된 장치는 이제 무선으로 앱을 다운로드 할 수 있습니다. 진행 중입니다. 그러나 깨끗한 장치의 경우
Could not install embedded profile: 0xe8008012 (This provisioning profile cannot be installed on this device.)
Xcode-> 창-> 장치 또는 Apple Configurator 앱에서 볼 수있는 장치의 콘솔에서 볼 때 오류가 발생 합니다. - 응용 프로그램이 장치에 대한 프로비저닝 할 경우, 그것은에서 장치의 UDID를 포함 할 필요가
embedded.mobileprovision
참조 파일 마십시오 퍼가기 아이폰 OS 앱에서 프로비저닝 프로파일이 어떻게 , 어떻게 IPA의 embedded.mobileprovision에서 필드를 검사하는 자동화? , * .ipa 파일 작성에 사용 된 프로파일을 찾는 방법은 무엇입니까? 및 UDID는 빌드에 포함 된 것을 볼 수있는 방법이 있습니까? . 그러나이 파일을 편집하여 UDID를 추가 할 수는 없습니다. 앱의 CODESIGNATURE가 일치하지 않아 장치에서 오류를보고하기 때문입니다.Failed to verify code signature of /private/var/mobile/Library/Caches/com.apple.mobile.installd.staging/temp.7jBjpk/extracted/Payload/Provenance.app : 0xe8008017 (A signed resource has been added, modified, or deleted.)}
- 좋아, 그래서 우리는 앱을 사임해야합니다. Xcode는
codesign
이를 수행 할 수 있는 명령 줄 도구를 제공합니다 . 지침은 ipa 파일을 다시 서명하는 방법에 있습니다. 및 IPA (아이폰)를 사임 하고 아이폰 앱을 사임, 새로운 번들 ID 삽입 및 업로드를위한 엑스 코드 주최자로 전송 하고 수동으로 새 프로비저닝 프로파일을 가진 IPA를 다시 서명하는 방법 . 정확한 인증서 이름은 인증서 탭 아래의 키 체인 액세스에서 확인할 수있는 개발자 인증서를 지정해야했으며 "iPhone 개발자 : username@mac.com (ABCDEFGHIJ)"과 같습니다. 그런 다음 명령은 다음과 같습니다codesign -f -s "iPhone Developer: username@mac.com (ABCDEFGHIJ)" Payload/Provenance.app
. 위 지침의 예제 명령에는--resource-rules
하지만 컴파일 된 앱에서 그러한 파일을 찾지 못했기 때문에 해당 플래그를 제거했습니다. 그것이 무엇인지, 그리고 그것이 필요한지 궁금합니다. 편집 : Thomas Kollbach 의 우수한 블로그 게시물 인 Inside Code Signing 은--resource-rules
서명이 필요하지만 iOS8이 더 이상 사용되지 않으므로 전체 앱에 서명해야하기 때문에 플래그가 사용 되었다고 설명합니다 . - 이제 응용 프로그램이 추가 된 UDID를 가지고 있으며, 신선한 장치에 다운로드, 서명하는 오류를 제공
Could not install embedded profile: 0xe8008003 (This provisioning profile is malformed
하고A valid provisioning profile for this executable was not found
. 내 문제는 이제 장치가 여전히 개발자 인증서를 설치하지 않았다는 것입니다. Xcode를 통해 사이드로드 할 때 앱이 실행되기 전에 설정-> 일반-> 프로필에서 설치된 인증서를 찾아 인증서를 선택하고 "신뢰"를 탭해야합니다. 그러나 Ad Hoc 앱을 무선으로 다운로드 한 후에는이 옵션이 나타나지 않으므로 진행 방법을 잘 모르겠습니다. 장치에 개발자 인증서를 설치하는 방법이 필요하다고 생각합니다. 에 따르면 아이폰 OS 8.0.2에 프로비저닝 프로파일 설치, 단순히 기기에 인증서를 이메일로 보내면 가능했지만 더 이상 iOS 8에서 작동하지 않습니다. 확인하지 않았습니다. iOS 기기에 개발자 인증서를 원격으로 설치하려면 어떻게해야합니까? - Keychain Access에서 iPhone 개발자 인증서를 내보내고 장치로 이메일을 보내려고했습니다. 장치는 인증서를 설치할 수 있었지만 서명되지 않았다는 빨간색 경고와 함께 표시되었지만 Xcode / USB를 통해 인증서를 설치할 때는 그러한 경고가 없었습니다. Rhythmic Fistman에 따르면 embed.mobileprovision 파일을 다시 암호화 할 수 있습니까? , Apple에서 프로필을 서명해야 작동합니다. 이것은 고집 포인트 일 수 있습니다. 유료 ADP 계정이있는 경우에만 Apple에서 인증서에 서명합니다.
- Sean Heber의 프로비저닝 에 대한이 블로그 게시물 은 개발자 인증서 및 프로비저닝 프로파일에 대한 일반적인 이론에 대해 매우 잘 설명하고 있습니다 ( Kolbach 와 함께 읽어야 함). 이 단락이 포함되어 있습니다.
이 모든 것이 효과적이고 안전한 이유는 Apple이 포털에서 프로비저닝 프로파일을 생성 한 다음 사용자에게 전달하기 전에 자체 개인 키로 서명하기 때문입니다. 프로비저닝 프로파일의 서명은 Apple만이 할 수있는 일입니다. 따라서 다운로드 한 파일이 유효하지 않은 상태로 변경되지 않을 수 있습니다. 잘못된 프로비저닝 프로파일은 iOS에서 허용되지 않으므로 Apple은 프로비저닝 포털의 서명에 대한 액세스를 개발자 포털이 처음에 구성 할 수있는 권한으로 제한함으로써 개발자가 프로비저닝 할 수있는 것과 프로비저닝 할 수없는 것을 정확하게 제어 할 수 있습니다. 장소-프로비저닝 프로파일이 탈옥 없이는 사용할 수없는 다른 여러 가지 훌륭한 옵션을 지원할 수 있지만. 이것이 포털에 테스트 장치를 등록해야하는 이유입니다. 포털에 인증서 등을 추가하십시오. 포털에있는 것 (따라서 Apple이 임의로 제어하고 제한 할 수있는 수) 만 생성되고 올바르게 서명 된 프로비저닝 프로파일에 포함될 수 있습니다. 포털은 Apple의 프로비저닝 정책 및 제한 사항이 실제로 적용되는 곳입니다.
이것은 "아니오"로 내 질문에 확실히 대답하는 것 같습니다 (유료 ADP 계정없이 앱을 실행할 수 있습니까). 이 기사는 Xcode 7보다 이전 버전이지만 Xcode 7은 장치의 UDID를 Apple 포털로 보내고 해당 UDID를 포함하는 Apple이 서명 한 프로비저닝 프로파일을 수신합니다. Xcode 7은 장치가 USB를 통해 연결되어 있고 Xcode에서 인식 될 때만이 작업을 수행하지만 Apple에 대한 수동 Xcode 요청을 작성할 수 있는지 궁금합니다. 그것은 내가 생각하는 것보다 Apple의 리버스 엔지니어링에 더 깊이 들어가고 ToS 또는 기타를 위반할 가능성이 있으므로 "아니오"라는 대답에 만족한다고 생각합니다.
BuildStore의 about 페이지에 따르면 이메일을 통해 비슷한 것을 관리하므로 가능할 수 있습니다.
커맨드 라인에서 Xcode“Build and Archive” 는 꽤 오래되었지만 (xcode 3 경), 내가 사용했던 xcrun
대신 사용 하는 것이 좋습니다 xcodebuild
.