App Store, 개발자 프로그램 하위 또는 탈옥없이 Xcode 7로 컴파일 된 iOS 앱을 원격으로 배포 하시겠습니까?


10

다음 지시 사항 (참조 : 애플의 개발자 문서 및에 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의 도움 덕분에 몇 가지 진전이 있었으며 여기에 요약 할 것입니다.

  1. XCode는 아카이브 (제품-> 아카이브)를 생성하지만 유료 ADP 계정 계층을 구독하지 않고 임시 배포를 위해 아카이브를 .ipa 파일로 내보낼 수 없습니다.
  2. 명령 행 xcode 도구 유료 ADP 계정이 없어도 .ipa 실행 파일을 작성 하므로 문제 가 없습니다. 와 같은 명령을 사용하십시오 xcodebuild -exportArchive -archivePath Provenance-Release\ 11-20-15\,\ 22.24.xcarchive/ -exportOptionsPlist ~/manifest.plist -exportPath ~/Provenance( Apple 개발자 계정없이 xcode 6에서 ipa를 만드는 방법에 대한 Khawar의 답변 참조 )
  3. 그러나이 명령을 사용하려면 매니페스트 .plist 파일을 지정해야합니다. Razvan의 OTA (Over The Air) iOS IPA 파일 배포에 대한 답변은 ? SSL 웹 페이지에서 호스팅해야하는 다운로드 링크를 제공하는 데 필요한 하이퍼 링크 형식에 대한 지침과 샘플 manifest.plist를 포함합니다. SSL URL이 앱의 번들 ID를 계산해야 할 수도 있지만 확실하지 않습니다.
  4. 그러나 위의 내용은 앱을 다운로드하는 장치에 앱이 제공되고 장치가 이미 개발자 인증서를 설치 한 경우에만 작동합니다. 예를 들어 USB를 통해 Xcode에 이전에 연결된 장치는 이제 무선으로 앱을 다운로드 할 수 있습니다. 진행 중입니다. 그러나 깨끗한 장치의 경우 Could not install embedded profile: 0xe8008012 (This provisioning profile cannot be installed on this device.)Xcode-> 창-> 장치 또는 Apple Configurator 앱에서 볼 수있는 장치의 콘솔에서 볼 때 오류가 발생 합니다.
  5. 응용 프로그램이 장치에 대한 프로비저닝 할 경우, 그것은에서 장치의 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.)}
  6. 좋아, 그래서 우리는 앱을 사임해야합니다. 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이 더 이상 사용되지 않으므로 전체 앱에 서명해야하기 때문에 플래그가 사용 되었다고 설명합니다 .
  7. 이제 응용 프로그램이 추가 된 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 기기에 개발자 인증서를 원격으로 설치하려면 어떻게해야합니까?
  8. Keychain Access에서 iPhone 개발자 인증서를 내보내고 장치로 이메일을 보내려고했습니다. 장치는 인증서를 설치할 수 있었지만 서명되지 않았다는 빨간색 경고와 함께 표시되었지만 Xcode / USB를 통해 인증서를 설치할 때는 그러한 경고가 없었습니다. Rhythmic Fistman에 따르면 embed.mobileprovision 파일을 다시 암호화 할 수 있습니까? , Apple에서 프로필을 서명해야 작동합니다. 이것은 고집 포인트 일 수 있습니다. 유료 ADP 계정이있는 경우에만 Apple에서 인증서에 서명합니다.
  9. 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.


1
이것을 나누는 것을 고려하십시오. 질문은 간단하고 이해하기 쉬워야합니다. 답변 및 블로그 게시물에 대한 모든 답변 / 프로세스는 답변 섹션에 있어야합니다.
bmike

답변:


2

대답은 거의 그렇습니다!

Apple dev 구독없이 Fabric.io를 통해 장치에 동일한 앱의 새로운 빌드를 설치할 수있었습니다. (iTunes와 함께 배포 할 수도 있습니다. ipa를 테스터에게 보내면 iTunes를 통해 설치할 수 있습니다.)

유일한 단점은 장치를 Xcode 에 한 번 이상 연결해야한다는 것 입니다. 그런 다음 원격으로 새 버전을 설치할 수 있습니다. (나는 udid를 수동으로 알 수있는 방법을 찾지 못했습니다)

"알 수없는"장치를 xcode 7에 연결하면에 fix issue버튼이 Target general settings있습니다. 문제를 해결하면 Xcode에서이 장치가 포함 된 새로운 프로비저닝 프로파일을 생성합니다. (에서 찾을 수 있습니다 ~/Library/MobileDevice/Provisioning Profiles)

이 프로비저닝 프로파일을 사용하여 Fabric.io를 통해 앱을 배포 할 수있는 것보다

  1. Fabric.io에 가입
  2. 프로젝트의 설치 패브릭 (단계별 가이드가 있음)
  3. xcode가 올바른 prov를 사용하는지 확인하십시오. 서명 할 프로필입니다. Automatic나를 위해 일했다.
  4. Xcode> 프로젝트> 아카이브
  5. 패브릭 헬퍼가 빌드를 감지하여 배포 할 수 있습니다.

Xcode에 능숙하지 않은 미안한 사람들, 오류가 발생하기 쉬운 가이드를 추가 할 시간이 많지 않지만이 답변이 아이디어를 가진 사람을 도울 수 있기를 바랍니다.

팁 : Quicklook 플러그인 을 사용 하여 ipas 및 prov 내부를보십시오. 프로필!


1
예,이 답변은 테스트에서 찾은 내용과 일치합니다. 나는 아직도 엑스 코드는 새 장치의 UDID 애플 서버로 전송하는 메시지를 위장하여 "단계를 한 번에 적어도 엑스 코드에 장치를 연결"고 주위를 얻을 수있을 것인지 궁금
ziggurism

2

내 대답이 원래 게시 된 이후에 릴리스 된 일부 iOS 9.x 버전에서는 더 이상 가능성이 없습니다. Apple은 설치 실패시 장치 로그에 오류가 표시되는 것처럼 OTA 다운로드를 무료 계정이 아닌 계정으로 제한합니다.

내 앱에서도 놀랍기 때문에 이것을 광범위하게 테스트했습니다.

개발자 프로그램 멤버십없이 비용 OTA를 내 앱에 배포 할 수 있습니까?

IPA를 작성 및 서명하고이를위한 Manifest 파일을 작성할 수 있지만 장치에 설치되지 않습니다. 그 이유는 Xcode가 해당 장치의 IPA를 구성해야하기 때문입니다 (UDID로 올바르게 서명해야 함). 새로운 기기를 Mac에 연결하고 Xcode를 통해 앱을 실행하려고하면 이런 일이 발생할 수 있습니다. 짧은 대답은 '아니요'입니다.

이 작업을 수행하려면 어떻게해야합니까?

Apple (개발자 비용)로 개발자 프로그램에 등록하고 장치의 UDID를 프로파일에 추가 한 다음 IPA 및 매니페스트 파일을 생성하고 웹 서버에 업로드하여 URL을 보낼 수 있습니다.

가격 장벽은 일반적으로 악성 앱이 웹을 통해 배포되는 것을 막기 때문에 실제로 보안을위한 것입니다. App Store에서 대부분의 앱 다운로드를 유지하는 것은 말할 것도 없습니다.

개발자 프로그램에 가입 했습니까? 지금 배포하려면 어떻게합니까?

HTTPS 웹 서버 (및 자체 루트를 만들 수있는 SSL 인증서)가 있어야합니다. 또한 UDID를 개발자 프로필에 추가해야합니다 (이 방법을 정확히 모르겠습니다). Xcode를 사용하여 IPA를 생성해야하고 (제품> 아카이브> 내보내기> 임시 배포를 위해 저장> Apple ID로 로그인> 지시 사항을 따르십시오) Plist와 IPA 파일을 얻게됩니다. 둘 다 서버에 넣고 Plist 파일의 값을 변경하여 서버의 HTTPS URL과 일치 시키십시오. 그런 다음 특수 링크를 사용하여 Plist 매니페스트에 연결하면 사용자에게 앱을 설치하라는 메시지가 나타납니다. 모든 것이 제대로되면 사용자에게 앱이 제공됩니다. 원하는 경우 자체 업데이트 방법을 코딩해야합니다.

이 시점에서 배포하려는 앱인 경우 실제로 App Store에 배치하거나 베타 테스트 용인 경우 TestFlight를 사용하는 것이 더 합리적 일 수 있습니다. 개발자 계정이 있다면 TestFlight를 사용하고 앱 테스트를 위해이 모든 것을 건너 뛸 수 있습니다. 이메일 만 있으면 App Store에서 TestFlight 앱을 설치할 수 있습니다. TestFlight는 iTunes Connect에서 관리 할 수 ​​있습니다.


그리고 개발자에 가입하면 앱을 어떻게 배포합니까?
ziggurism

지침으로 내 게시물을 업데이트했습니다.
AppleBetas

고마워요, 내가 찾던 것입니다. 유료 개발자 계정과 프로비저닝 UDID가 필요하다고 말했지만 먼저이 방법을 사용하고 싶습니다. 결과를 다시 알려 드리겠습니다.
ziggurism

아카이브를 생성하라는 지시에 따라 "App Store에 업로드", "유효성 검사"및 "내보내기"단추가 모두 회색으로 표시되어 있으며, 아래 링크는 "배포는 Apple 개발자 프로그램에 등록해야합니다"라는 링크가 있습니다. ADP에 가입하려면 웹 페이지로 이동하십시오. 따라서 약속 한 바와 같이, 앱의 OTA (over-the-air) 임시 배포 만하려는 경우에도 Apple 개발자 프로그램에 99 달러의 구독이 필요한 것 같습니다. XCode GUI는 IPA 및 프로비저닝 프로파일을 생성하지 않습니다.
ziggurism

반면에 stackoverflow.com/questions/26928721/…에서 사용자 Khawar xcodebuild는 .ipa 아카이브를 생성하고 -exportProvisioningProfile플래그 를 사용하는 경우 앱에 서명하고 프로비저닝하는 명령 줄을 사용하여 ADP 하위없이 수행 할 수 있다고 주장합니다. (Pankaj Rathor의 코멘트 참조).
ziggurism

1

기본적으로 누군가가 앱에 서명해야합니다. IPA 파일은 얻을 수 있지만 임의의 장치에서는 실행되지 않습니다. 그것에 집중하면 Xcode를 사용하여 각 사람의 번거 로움을 견딜 것인지 또는 애플이 앱에 서명하도록 지불하는 것이 합리적인지 신속하게 결정할 수 있습니다.

이전 Apple ID로 iOS 9 비 개발자 서명에 의존하는 경우 테스터는 모두 앱을 실행하려면 Apple ID로 로그인해야합니다.

1 년간의 개발자 계정을 지불하면 Apple이 계정을 처리하고 서명 할 수 있도록 비용을 지불 할 수 있습니다. 그런 다음 이메일을 보내거나 모든 서버에서 앱을 팝업하거나, TestFlight를 사용하거나, 앱의 테스터 / 사용자에게 Apple ID를 전달하는 것 외에 다른 방법으로 더 쉽게 사용할 수 있습니다.

Xcode가있는 경우 언제든지 동생에게 소스 코드를 보낼 수 있지만, 누군가 앱을 설치하고 서명 할 Mac이없는 점이라고 언급했습니다.

교도소 침입은 Apple의 인증서 체인을 위조하는 것보다 쉽지만 권장하지는 않습니다.


개발자가 서명하지 않은 앱을 실행하려면 테스터가 Apple ID로 로그인해야하는 곳은 어디입니까?
ziggurism

Xcode에서는 Mac을 사용하는 것이 가장 쉽습니다. Xcode에 접속할 수없는 경우 앱을로드하기 위해 휴대 전화를 보내도록
하겠습니다

예, Xcode over USB를 통한 설치는 훌륭합니다. 내 질문은 원격 배포 / 설치 가능성에 관한 것입니다. StackExchange는 베타 앱으로 사용했습니다. 나도하고 싶어
ziggurism

@ziggurism SE는 엔터프라이즈 인증서를 지불했습니다. 이를 위해서는 약간의 법적 서류가 필요합니다. 매년 수백 달러가 추가됩니다. TestFlight는 더 저렴한 옵션이며 회색 영역이 적습니다. SE가 그들이 사용한 인증서의 라이센스에 따라 "책으로"보이지 않았지만 변호사는 아니 었습니다 ...
bmike
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.