Xcode7로 ipa 내보내기, OTA로 보내기

12062 단어 XcodeipaOTA

입문


나는 매년 같은 제목으로 쓴다고 생각한다.
매번 Xcode 리그가 업그레이드될 때마다 애플은 미묘한 변화를 일으킨다.
소스 코드 관리부터 배포까지 CI 환경이 있는 경우 CI 서비스가 중단될 때
나는 누군가가 난처할 것이라고 생각한다.
그 다음에 비기술자도 손을 댈 수 있도록 여기서 정리해 봅시다.

전제 조건


비트코드를 ON으로 설정


Xcode7로 개발을 시작하면 보통 ON나는 이곳의 기본 설정을 보류했다.

항목에 사용되는 언어


swift는 이미 주류이기 때문에 이 언어를 사용합니다.
아마 Obj-C도 마찬가지일 거예요. 다르면 댓글로 남겨주세요.

ipa 내보내기


아카이브 내보내기 버튼을 누릅니다.



내보낼 ipa의 용도 선택


이번에는 adhoc.

Thining


iOS9 이상을 목표로 구축되며 아카이브 시 Thining을 사용할 수 있습니다.
iOS9이 아니면 사용할 수 없습니다. 선택할 수 있는 것은 all compatible devices 의 시작입니다.

관련 설정 내보내기


빨간색 상자를 더한 것은 다음 항목입니다.
  • OTA용 manifest.출력plist
  • iTunesConnect에 업로드된 비트코드에서 내보내기
  • Next 버튼을 눌러 실행합니다.

    내보내기


    데스크톱에 폴더를 만듭니다.
    [어플리케이션 이름] [제작 연월일 시간]

    폴더에는 ipa와 manifest가 포함되어 있습니다.plist의 출력을 설정하면 이 파일도 함께 쓸 수 있습니다.

    OTA 목록 파일 내보내기


    아카이브에서 내보낼 때 OTA의 목록 파일도 함께 내보낼 수 있습니다.
    이미지의 빨간색 상자를 선택하고 Next 버튼을 누릅니다.

    비트코드에서 내보낼 때 빨간색 상자 아래의 체크 상자도 열면 됩니다.

    목록 파일 정보

  • 구성할 ipa의 URL
  • 57픽셀 크기의 png URL
  • 512픽셀 크기의 Jpeg(png도 가능...)의 URL

  • 내보내기


    데스크톱에 쓰다.

    manifest.plist 출력은 다음과 같습니다.
    각종 정보에는 기본 설정이 적혀 있으니 각자 고쳐 쓰세요.
    manifest.plist
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>items</key>
        <array>
            <dict>
                <key>assets</key>
                <array>
                    <dict>
                        <key>kind</key>
                        <string>software-package</string>
                        <key>url</key>
                        <string>https://www.example.com/apps/foo.ipa</string>
                    </dict>
                    <dict>
                        <key>kind</key>
                        <string>display-image</string>
                        <key>url</key>
                        <string>https://www.example.com/image.57x57.png</string>
                    </dict>
                    <dict>
                        <key>kind</key>
                        <string>full-size-image</string>
                        <key>url</key>
                        <string>https://www.example.com/image.512x512.jpg</string>
                    </dict>
                </array>
                <key>metadata</key>
                <dict>
                    <key>bundle-identifier</key>
                    <string>jp.hoge.huga.OTAProg</string>
                    <key>bundle-version</key>
                    <string>1.0</string>
                    <key>kind</key>
                    <string>software</string>
                    <key>title</key>
                    <string>OTAProg</string>
                </dict>
            </dict>
        </array>
    </dict>
    </plist>
    
    
    웹 서버(SSL 설정됨)에 직접 배치한 경우 지정된 이미지 파일도 함께 배치되지 않으면 다운로드에 실패합니다.(실패)
    따라서 이미지를 배치하지 않은 상태에서
    출력된 manifest.주석 부분plist.
    manifest.plist
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>items</key>
        <array>
            <dict>
                <key>assets</key>
                <array>
                    <dict>
                        <key>kind</key>
                        <string>software-package</string>
                        <key>url</key>
                        <string>https://www.example.com/apps/foo.ipa</string>
                    </dict>
    <!--
                    <dict>
                        <key>kind</key>
                        <string>display-image</string>
                        <key>url</key>
                        <string>https://www.example.com/image.57x57.png</string>
                    </dict>
                    <dict>
                        <key>kind</key>
                        <string>full-size-image</string>
                        <key>url</key>
                        <string>https://www.example.com/image.512x512.jpg</string>
                    </dict>
    -->
                </array>
                <key>metadata</key>
                <dict>
                    <key>bundle-identifier</key>
                    <string>jp.hoge.huga.OTAProg</string>
                    <key>bundle-version</key>
                    <string>1.0</string>
                    <key>kind</key>
                    <string>software</string>
                    <key>title</key>
                    <string>OTAProg</string>
                </dict>
            </dict>
        </array>
    </dict>
    </plist>
    
    

    배포 예


    html 폴더를 문서 루트 디렉터리로 각 파일을 놓는 예입니다.
  • html
  • index.html
  • apps
  • foo.ipa
  • manifest.plist
  • 에 사용된 HTML에 a타그린크를 추가했을 때의 예입니다.
    index.html
    <html>
    <head><title>title</title></head>
    
    <body>
    <a href="itms-services://?action=download-manifest&url=https://www.example.com/apps/manifest.plist">install</a>
    </body>
    </html>
    
    

    구성할 웹 서버 측


    mimetype


    plist, ipa 파일의mimetype를 설정해야 합니다.
    plist: text/xmlipa는 application/octet-streamnginx에서/etc/nginx/mime.types.
    mime.types
    types {
    # 他のmimetype
    
    # for OTA
        text/xml                              plist;
        application/octet-stream              ipa;
    
    # 他のmimetype
    
    }
    

    SSL 프로토콜


    사쿠라의 VPS 제작 환경에서 확인된 곳입니다.
    TLSv1.1v1.2에 문제가 없습니다.
    위의 계약에만 한정된 SSL 설정은 다음과 같습니다.
    http://qiita.com/nofrmm/items/5e50f077eb1602a3458e

    인터럽트

  • ipa손상
  • 선언의 쓰기 오류
  • 애플의 인프라가 이상하다
  • 서버 설정 부족
  • SSL 설정
  • mimeType
  • 폴더, 파일 읽기 권한
  • 참조 URL


    무선 내장 어플리케이션 설치
    http://help.apple.com/deployment/ios/#/apda0e3426d7

    마지막


    나는 OTA 파일을 손으로 써 보았다.
    서버를 포함한 지식이 있으면 적당한 부분을 정리할 수 있다.
    앱만 하면 알 수 없는 부분도 생길 수 있다고 생각해요. 그래서 유료 서비스와 제한된 무료 서비스뿐만 아니라 자신도 서버를 만들 수 있는 곳도 좋아요.

    좋은 웹페이지 즐겨찾기