ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [iOS] - AdHoc 배포 (github버전)
    iOS/iOS 2023. 11. 3. 17:53
    728x90
    반응형

    정말정말 오랜만에 포스팅이다.

     

    요새 팀프로젝트를 하던 도중 데모앱을 팀원들과 함께 테스트를 해야하는 경우가 생겼다. 안드로이드 같은 경우 빌드해서 나온 .apk파일을 그냥 공유해도 쉽게 앱을 공유할 수 있었는데, 애플은 보안상 여간 까다로운게 아니였다..

     

    팀원들을 만날때 마다 맥북을 챙겨가서 빌드를 해주기는 사실상 불가능에 가깝기 때문에 이걸 원격으로 공유할 수 있는 방법을 찾던 도중 iOS앱 파일(.ipa)을 간단한 웹페이지를 만들어서 공유하는 방법을 채택하게 되었다.

     

    이 방법은 개발자 계정이 있다는 가정하에 진행한다.

     

    1. 디바이스 UDID추가

     

    먼저 애플개발자 사이트를 들어간다. (https://developer.apple.com/account)

     

    앱을 테스터할 사용자에게 기기의 UDID를 알려달라고 한다. 이 사이트에서 확인가능(https://udid.tech/)

    그것을 앱을 배포할 계정 디바이스에 추가한다. 이 과정을 거치는 이유는 xcode에서 앱을 빌드해서 실제 디바이스에서 테스트 하려면 직접적으로 맥북과 기기가 물리적으로 연결이 된 채로 빌드를 해야한다. 그렇게 되면 위 사진과 같이 decives목록에 추가가 되는 듯한데, 이 과정을 수동으로 하는 것이다.

     

     

    디바이스 추가를 클릭하고 여기서 테스터가 알려준 UDID를 Device ID에, 별칭을 Device Name에 적어줘서 추가하면 된다.

     

     

    2. 프로비저닝 생성

     

    디바이스를 추가하면 프로비저닝 프로필에 본인이 추가한 디바이스를 다시 추가해줘야한다.

    먼저 Profiles로 들어가서 추가를 한다.

     

    그 다음은 Ad Hoc으로 선택을 하고 다음으로 넘어간다.

    테스트 앱ID를 선택하고 다음

    본인의 Certificates를 선택 후 확인 후 추가하면 끝이다.

     

    중요) 만약에 프로파일이 만들어진 상태라면 디바이스를 추가할 때마다 프로파일을 수정해서 추가한 디바이스를 선택 후 저장해야한다.

     

     

     

     

    3. ipa파일 추출하기

     

    그 다음 ipa파일부터 추출해야한다. 

     

    앱스토어에 배포할때와 동일하게 Product > Archive를 해서 추출할 파일을 빌드한다.

     

    그럼 이런 화면이 나오는데 Distribute를 클릭한다.

    디폴트로 App Store Connect가 선택되있는데 이걸 Ad Hoc으로 선택한다.

    manifast.plist 파일도 포함 시키고, 

    여기서 manifest 파일에 추가할 url을 작성하라고 한다. 하지만 지금 당장은 url이 필요 없기 때문에 대충 https라고 적고 next를 클릭한다.

    프로필이 이미 만들어 놨기 때문에 그대로 next하고 프로필 선택 후 추출하면 된다.

     

    그러면 이런 파일들이 나온다. 일단 보류

     

     

    4. github pages 호스팅

     

    파일 추출이 완료 됐으니 이제 깃허브 페이지로 배포만 하면 된다. github pages호스팅 방법은 내용이 너무 길어지기 때문에 여기서 따로 다루진 않겠다. 우리가 여기서 얻을 것은 github 호스팅 도메인이다.

     

    이렇게 알아왔다면 성공이다. 레포지토리는 꼭 Public으로 설정한다.

    https://[유저 이름 or 오가니제이션 이름].github.io/[레포지토리 이름]

     

     

    그러고 그 레포지토리에 아까 보류했던 ipa파일을 업로드한다.

     

    그 다음 manifest.plist를 수정해야하는데 기존에 https만 적어놨던 url들을 모두 지우고 새로 깃허브에 ipa파일을 올린 페이지의 링크를 적어준다.

    <?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>[설정한 url]/[ipa파일명(확장자까지)]</string>
                        </dict>
                    </array>
                    <key>metadata</key>
                    <dict>
                        <key>bundle-identifier</key>
                        <string>[번들 ID]</string>
                        <key>bundle-version</key>
                        <string>[버전]</string>
                        <key>kind</key>
                        <string>software</string>
                        <key>platform-identifier</key>
                        <string>com.apple.platform.iphoneos</string>
                        <key>title</key>
                        <string>[프로젝트명]</string>
                    </dict>
                </dict>
            </array>
        </dict>
        </plist>

    이렇게 수정한 뒤 ipa과 같은 레포지토리에 업로드 후 이 파일을 실행 시킬 수 있는 html을 만들어 준다.

     

    <!doctype html>
    <html>
    <head>
      <meta charset="utf-8"/>
      <title></title>
    
      <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"/>
      <style>
        /* 버튼 스타일 */
        .custom-button {
          background-color: indigo;
          color: white;
          padding: 10px 20px;
          border-radius: 10px;
          display: inline-block;
          text-decoration: none;
        }
      </style>
    </head>
    
    <body>
        <a class="custom-button" href="itms-services://?action=download-manifest&url=[manifest.plist파일 경로]">아이매드 다운 ㄱㄱ</a>
    </body>
    </html>

    필자같은 경우 이렇게 만들었다. 그러고 또 업로드.

     

    모든 파일 경로는 아까 만들어둔 경로 도메인으로 모두 통일한다.

     

    그러고 html링크를 공유하면 모든게 끝이다. 

Designed by Tistory.