Skip to main content

2026년 이온틱 앱 배포 가이드

Master Ionic app deployment. Our end-to-end guide covers building for iOS & Android, PWA hosting, CI/CD automation, and live updates with Capgo.

이온틱 앱 배포: 2026년 완전 가이드

배포는 이온틱 프로젝트를 단순한 프로젝트에서 세 가지 다른 릴리즈 트랙으로 바꾸며, 각 트랙에는 자신의 도구, 서명 규칙, 검토 프로세스 및 업데이트 전략이 있습니다.

그것은 기능을 작성하는 데 시간을 낭비하는 것이 아니라, 네이티브 빌드, 웹 호스팅, 릴리즈 자동화 및 후속 릴리즈 수정을 하나의 프로세스로 통합하여 사람들이 반복할 수 있는 프로세스를 만드는 데 시간이 많이 소요됩니다. 아이오닉 앱 배포 iOS, Android, PWA 배포를 별개의 프로젝트로 다루지 않고 하나의 릴리즈 시스템으로 다루면 더 잘 작동합니다.

목차

Ionic 앱이 빌드되었습니다. 이제 무엇을 해야 하나요?

대부분의 개발자는 동일한 지점에 도달합니다. ionic serve 웹 브라우저에서 잘 보이게 만들었고, API 로컬 호출이 작동하고, 앱이 완료된 것처럼 느껴집니다. 완료된 것은 아닙니다. 브라우저 테스트만 되고, 서명되지 않았으며, App Store 리뷰, Play signing, 및 프로덕션 웹 호스팅 제약조건과 연결되지 않았습니다.

프로덕션 배포는 질문을 바꿉니다. 앱이 렌더링되는지 여부를 묻는 대신, 배포가 reproducible 하며, 네이티브 프로젝트가 동기화되었는지, 환경 변수가 깨끗하게 분리되었는지, 배포 후에 비네이티브 버그를 수정할 수 있는지 여부를 묻습니다. 이 변화를 고려해야 하는 이유는 Ionic이 하이브리드 차선에 위치하고 있기 때문입니다. 앱에는 웹层이 있지만 네이티브 셸이 앱이 설치, 서명, 리뷰, 업데이트되는 방법을 결정합니다. 배포를 생각하지 않는 팀은 플랫폼 간의 config drift,陈舊한 네이티브 프로젝트, 그리고 취약한 수동 릴리스 단계를 경험합니다. 배포를 잘하는 팀은 모든 대상에 대한 하나의 릴리스 경로를 정의하고, 각 플랫폼에 대한 명시적인 단계를 정의합니다.정확한 배포 라이프 사이클은 다음과 같습니다:

프로젝트 준비

Prepare the project

  • Prepare the project 이러한 Capacitor 설정, 앱 식별자, 아이콘, 환경 변수 및 프로덕션 빌드는 일관적이다.
  • Android 및 iOS용 네이티브 릴리즈 아티팩트를 생성합니다. Ionic 명령어만 사용하지 않고 플랫폼 도구를 사용하여 Android 및 iOS용 네이티브 릴리즈 아티팩트를 생성합니다.
  • 웹 앱 사용자에게 즉시 브라우저 접근이 필요한 경우 PWA 빌드를 배포합니다. 빌드가 개발자가 체크리스트를 기억하는 한에만 의존하지 않도록 일상적인 부분을 자동화합니다.
  • 웹 자산 수정이 앱 스토어 검토를 기다리지 않도록 앱 업데이트를 계획합니다. 현재 앱이
  • 웹 앱을 모바일 앱으로 변환하는 데 도움이 되는 참고 자료로 이 __CAPGO_KEEP_0__ 가이드를 참조하세요. 첫 번째 성공적인 스토어 제출은 교과서적인 지혜가 아니라 discipline입니다.

첫 번째 성공적인 스토어 제출은 교과서적인 지혜가 아니라 discipline입니다. turning a web app into a mobile app with Capacitor.

첫 번째 성공적인 스토어 제출은 교과서적인 지혜가 아니라 discipline입니다.

프로젝트를 운영 환경에 배포하기 위해 준비하는 방법

배포 전에 프로젝트를 릴리스候補처럼 다루세요. 대부분의 배포 오류는 개발 환경에서 무해한 작은 불일치로 인해 발생하며 운영 환경에서 비용이 많이 들 것입니다.

A developer reviewing a comprehensive code quality checklist on his laptop screen while working at a desk.

환경 설정을 시작하세요

기본적인 것을 먼저 실행하세요:

ionic doctor
npm ci
npx cap doctor

ionic doctor catches common CLI and environment issues. npm ci 릴리스 작업에 사용하는 것이 더 좋습니다. 왜냐하면 그것은 lockfile에서 정확히 커밋된 것과 동일한 설치를 합니다. npm install 플러그인 및 플랫폼 불일치가 Xcode 또는 Android Studio에서 더 어려운 오류로 변환되기 전에 표면화하는 데 도움이 됩니다. npx cap doctor 가능한 한 항상 깨끗한 상태에서 릴리스 빌드를 사용하세요. 앱이 로컬 패치, 삭제된 폴더, 또는 수동으로 편집된 네이티브 파일로 인해 빌드되기만 하면, 배포 프로세스가 아직 안정적이지 않다는 것을 의미합니다.

일정한 시간마다 몇 가지 체크를 하세요:

앱 ID를 확인하세요

  • __CAPGO_KEEP_0__. 변경 appId 늦을수록 저장소와 서명 혼란을 일으킬 수 있습니다.
  • 플러그인 상태 확인. 네이티브 플러그인 변경은 일반적으로 최신 싱크가 필요하고, 때로는 플랫폼 재개동이 필요합니다.
  • 환경 주입 검토. API 엔드포인트, 키 및 기능 플래그는 환경별로 구분된 구성에서 가져와야 하며, 인라인 상수에서 가져와서는 안됩니다.

릴리즈 대상 간에 차이점을 더 깊이 이해하기 위해서는 __CAPGO_KEEP_0__ 앱에서 개발과 프로덕션의 차이점에 대한 이 기사 development vs production differences in Capacitor apps __CAPGO_KEEP_0__ 구성 잠금

Lock down Capacitor config

프로덕션 인프라와 앱 메타데이터가 아닌_like_ 프로덕션 인프라와 같이 리뷰하세요. capacitor.config.ts __CAPGO_KEEP_0__

A typical file looks like this:

import type { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
  appId: 'com.example.myapp',
  appName: 'My App',
  webDir: 'www',
  bundledWebRuntime: false,
};

export default config;

Three fields matter immediately:

설정 왜 중요합니까? 일반적인 오류
appId 스토어 및 서명에 사용되는 네이티브 패키지 식별자 시작 프로젝트에서 플레이스 홀더를 남겨두기
appName 네이티브 셸에서 사용하는 사용자 대면 앱 이름 개발 라벨을 사용하고 변경하지忘기
webDir 디렉터리 Capacitor이 네이티브 프로젝트로 복사됩니다. Capacitor이 예상하는 다른 출력 폴더로 빌드합니다.

개발 중에 로컬 개발 서버를 사용하는 경우, 프로덕션 설정이 네이티브 빌드를 해당 서버로 지시하는 것을 확인하세요. 단 하나의 실수 때문에 '개발에서 작동하지만 릴리스에서 화면이 비어있는' 문제가 발생합니다.

실용적인 규칙: 릴리스 빌드가 라이브 로컬 서버 설정에 의존하는 경우, 릴리스 빌드가 아닙니다.

자산을 한 번 생성하세요.

아이콘과 스플래시 스크린을 수동으로 크기 조정하지 마세요. 고품질의 원본 자산 하나를 사용하고 플랫폼 출력을 생성하세요.

현재 Capacitor 워크플로우에서 많은 팀이 공식 자산 도구를 통해 CLI 생태계를 사용합니다. 스택 버전에 따라 패키지의 정확한 이름은 달라질 수 있지만, 규칙은 동일합니다: 하나의 표준 아이콘과 하나의 표준 스플래시 소스를 버전 관리하에 두고, 출력을 생성한 후 Xcode와 Android Studio에서 결과를 검토하세요.

이러한 방식으로, PWA 아이콘은 최신 상태이지만, Android는 이전의 전면 자산을 사용하고, iOS는 업데이트된 시작 이미지 대신 outdated launch image를 표시하는 문제를 피할 수 있습니다.

강력한 프로덕션 패스는 다음과 같습니다:

  1. 웹 자산을 프로덕션 모드에서 빌드하세요.
  2. 네이티브 프로젝트를 동기화하세요.
  3. 각 네이티브 IDE에서 앱 이름, 아이콘, 권한, 서명 설정을 수동으로 검사하세요.
  4. 스토어에 배포하기 전에 물리적 장치에서 테스트하세요.

iOS 및 Android용 네이티브 배포

네이티브 배포는 Ionic 앱이 “웹만”이 아닌 플랫폼 규칙에 응답하기 시작할 때입니다. 웹 번들만 공유할 수 있지만, 서명, 패키징 및 스토어 요구 사항이 프로세스에 들어가면 Android와 iOS는 швидко 분기됩니다.

태블릿과 스마트폰을 사용하는 사람이 네이티브 모바일 앱 빌드 및 릴리스 상태를 모니터링하는 사람입니다.

웹层를 먼저 빌드하세요.

네이티브 패키징에 도전하기 전에 항상 최신 웹 자산을 생성하세요:

ionic build
npx cap sync

어떤 팀은 ionic build --prod 습관으로 말합니다. 현대 프로젝트에서는 프레임워크 도구에 따라 정확한 프로덕션 동작이 달라지지만, 원칙은 변하지 않습니다: 최적화된 릴리스 빌드를 생성한 후, 그 빌드를 네이티브 플랫폼에同步하세요.

sync 후, 네이티브 프로젝트를 직접 열어보세요:

npx cap open android
npx cap open ios

이것도 네이티브 프로젝트를 검토하는 좋은 시점입니다. Capacitor 앱을 위한 Android 설정 프로젝트가 아직 불안정한 네이티브 설정을 가지고 있다면.

안드로이드 릴리스 워크플로우

안드로이드의 릴리스 경로는 일반적으로 iOS보다 더 예측 가능하지만, 서명 설정이 편리하게 설정되면 여전히 깨질 수 있습니다.

한 번에 업로드 키 스토어를 생성하고 안전하게 저장하세요:

keytool -genkeypair -v -keystore upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload

키 스토어 파일, 별칭 및 암호를 안전한 비밀 저장소에 저장하세요. 그들을 커밋하지 마세요. 팀 채팅에 그들을 남기지 마세요. 누군가가 그들을 저장했다고 가정하지 마세요.

그런 다음 Gradle에 서명 설정을 연결하세요. 팀은 이 설정을 파일에 구성하거나 Android Studio의 서명 UI를 사용하여, 그들이 스크립트화하고 싶은 프로세스의 양에 따라 결정합니다. 일반적인 설정에는 블록과 릴리스 빌드 타입이 포함됩니다. 릴리스 빌드 타입은 블록을 참조합니다. build.gradle Play Store 제출을 위해 일반적으로 원하는 안드로이드 릴리스 아티팩트는 AAB입니다. debug APK가 아닙니다. Android Studio에서 메뉴 경로를 사용하여 서명된 번들을 생성하세요. 릴리스 버전을 선택하고 앱 번들을 내보내세요. 명령줄 빌드를 선호하는 경우, 서명 설정이 구성되면 Gradle도 이를 처리할 수 있습니다. signingConfigs 안드로이드의 일반적인 함정은熟悉한 방식으로 나타납니다:

__CAPGO_KEEP_0__ __CAPGO_KEEP_1____CAPGO_KEEP_2__

__CAPGO_KEEP_3__

  • 잘못된 키 스토어 비밀번호 잘못된 키 스토어 비밀번호를 사용하면 더 드라마틱한 보안 실패를 유발합니다.
  • 디버그 시그닝 남은 것 웹 빌드가 로컬에서 설치되지만 스토어 릴리즈에 유효하지 않은 빌드가 생성됩니다.
  • 플러그인 비동기 플러그인 의존성 변경 후 스킵하는 경우에 발생합니다. npx cap sync.
  • 웹 __CAPGO_KEEP_0__에 커밋하고 웹层를 빌드한 후 네이티브를 싱크하고 네이티브 프로젝트에서 릴리즈 아티팩트를 빌드한 후 정확한 커밋 해시를 함께 생성된 배ंडल과 함께 아카이브하는 패턴이 잘 작동합니다. iOS 릴리즈 워크플로우

iOS는 더 엄격하고, 대부분의 배포 문제는 시그닝 식별자 혼란 때문이 아니라 code 문제 때문입니다.

Xcode에서 프로젝트를 열고 바로

code은 생략되었습니다.

__CAPGO_KEEP_0__은 생략되었습니다. 인증 및 기능선택한 팀이 올바른지 확인하고, 배포할 앱 레코드와 일치하는 번들 식별자가 설정되어 있는지, 자동 인증이 기대되는대로 작동하거나 수동 프로비저닝으로 대체되어 있는지 확인하세요.

일반적으로 이러한 움직이는 부분과 대면합니다:

아이템 무엇을 수행하는가 누구에게도 문제가 발생하는 곳
번들 식별자 앱 스토어 레코드와 프로비저닝과 앱을 연결합니다. 애플이 기대하는 것과 일치하지 않습니다.
인증서 인증자 식별 잘못된 인증서가 설치되어 있거나 만료되어 있습니다.
프로비전 프로파일 특정 앱과 컨텍스트에 대한 빌드 권한을 부여합니다 프로파일이 앱 ID 또는 팀과 일치하지 않습니다

로컬 릴리즈 작업을 위해 앱을 Xcode에서 빌드하고 물리적 장치 또는 일반 iOS 장치 대상으로 선택한 다음 아카이브. 아카이브가 완료되면 Organizer 창을 사용하여 App Store Connect로 유효성 검사 및 배포합니다.

Xcode가 서명이 깨진다고 말한다면, 정확한 번들 ID, 팀, 프로파일 이름을 읽기 전에 변경하는 것을 피하세요. 인증서를 임의로 재생성하는 것은 문제를 더 악화시킵니다.

Mac을 소유하지 않는 경우에도 iOS 릴리즈 아티팩트를 생성하기 위해 macOS 환경이 필요합니다. 실제로 팀은 로컬 Mac, 임대된 클라우드 Mac, 또는 macOS 빌드를 실행하는 모바일 CI/CD 서비스를 사용하여 문제를 해결합니다.

이 walkthrough는 첫 번째 아카이브 및 제출 전에 유용한 프라이머입니다:

한 가지 더 어려운 교훈: 유니폼 빌드 파일을 조심스럽게 편집하지 마십시오. 반복 가능한 구성은 올바른 프로젝트 설정, 플러그인 구성, 또는 빌드 스크립트에 넣으십시오. nobody가 문서화하지 않은 수동 편집은 릴리즈가 한 번 성공하고 다음 릴리즈에서 실패하는 이유입니다.

아이오닉 앱을 PWA로 배포합니다

PWA 경로를 사용하면 아이오닉 앱이 사용자에게 가장 빠른 경로를 제공합니다. 스토어 리뷰가 필요하지 않습니다. 서명식이 필요하지 않습니다. 설치의 마찰이 필요하지 않습니다. 브라우저에서 즉시 접근이 필요한 사람들에게만 필요합니다.

native 앱이 주된 채널로 남아도 그 속도는 유용합니다. 많은 팀은 내부 도구, 로그인 전 경험, 관리자 패널, 또는 설치가 불필요한 저항을 추가하는 시장에서 PW를 병렬 배포 표면으로 사용합니다.

웹을위한 개발을 의도적으로

PWA는 다음 프로덕션 웹 빌드와 시작됩니다:

ionic build

중요한 부분은 명령 자체가 아니라, 출력이 최적화되어야 하며, 프로덕션 서비스를 향하고, 배포할 수 있는 최종 자산과 매니페스트를 포함해야 한다는 것입니다.

배포하기 전에 다음 파일을 확인하세요:

  • index.html should는 올바른 컴파일된 자산을 참조해야 합니다.
  • manifest.webmanifest should는 프로덕션 이름, 아이콘, 표시 설정이 포함되어야 합니다.
  • 서비스 워커 파일 should는 오프라인 캐싱을 사용할 계획이 있다면 존재해야 합니다.
  • 환경 출력 should는 라이브 엔드포인트를 참조해야 하며, 로컬 또는 스테이징 서비스를 참조하지 않아야 합니다.

오프라인 동작을 주의 깊게 활성화하세요

Ionic 스택이 Angular을 사용한다면 Angular 서비스 워커는 일반적인 오프라인 지원 및 캐싱 경로입니다. 강력하지만 쉽게 잘못 구성할 수 있습니다.

캐싱이 너무 과도하게 되면 사용자는 outdated 데이터에 갇히게 됩니다. 캐싱이 너무 적게 되면 앱이 flaky한 연결 상황에서도 resilien트하지 않습니다. 올바른 설정은 앱에 따라 달라집니다. 마케팅 지향 셸은 캐싱을 많이 할 수 있습니다. 빠르게 변하는 운영 데이터를 가진 대시보드는 보수적인 전략이 필요합니다.

오프라인 지원을 제품 결정으로 다루세요. 일부 화면은 캐싱을 해야하고 일부 화면은 항상 최신 데이터를 가져와야 합니다.

실제 시나리오를 테스트하세요. Lighthouse-style 가정만으로는 충분하지 않습니다. 앱을 한번 열고, 장치를 연결 해제하고, 다시 시작한 후, 여전히 작동하는 것을 확인하세요. 그런 다음 다시 연결하고, 서비스 워커가 사용자가 stale UI에 갇히지 않도록 업데이트 되는지 확인하세요.

호스팅을 기반으로 workflow를 선택하세요

Ionic PWAs의 경우 정적 호스팅 플랫폼이 일반적으로 충분합니다. 팀이 가장 많이 사용하는 옵션은 Netlify, Vercel, Firebase Hosting입니다.

실용적인 트레이드 오프를 보세요:

플랫폼 최적의 적합성 주의하세요
Netlify 간단한 정적 배포 및 미리보기 Redirect 동작이 명확한 검토가 필요합니다.
Vercel Git 기반 워크플로우를 사용하는 프론트엔드 팀 어떤 앱 라우팅 설정이 조정 필요합니다.
Firebase Hosting Firebase 서비스를 사용하는 팀 Firebase가 너무 많은 일을 할 경우 프로젝트 구조가 혼잡해집니다.

어느 하나의 호스팅 설정에서 단순한 배포 흐름은 저장소에 연결, 빌드 명령어 설정, 출력 디렉토리 설정, 환경 변수 추가, 리프레시 시 클라이언트 사이드 라우팅이 깨지지 않도록 리프레시 규칙을 확인하는 것과 같습니다.

Ionic 앱이 라우터 기반 네비게이션을 사용하는 경우 호스팅 설정은 일치하지 않는 경로를 앱 진입점으로 다시 보내야 합니다. 리프레시 규칙이 설정되지 않은 경우 홈 페이지가 작동하고 깊이 링크가 실패합니다. PWA 배포 오류 중 가장 일반적인 오류입니다.

CI/CD Pipeline을 사용한 빌드 자동화

수동 릴리즈 작업은 한 번은 허용됩니다. 하지만 그 이후로는 부담이 됩니다. 누군가가 싱크 단계를 잊어버리거나, 누군가가 더러운 branch에서 빌드하거나, 누군가가 잘못된 config로 서명하고, suddenly 생성된 아티팩트가 신뢰할 수 없게 됩니다.

CI/CD는 릴리즈 시퀀스를 code으로 변환하여 릴리즈 시퀀스를 명확하게 정의합니다. 빌드, 싱크, 테스트, 패키징 단계를 매번 명확하게 정의하여 릴리즈 시퀀스를 자동화합니다.

A code commit에서 Ionic CI/CD 배포 흐름을 나타내는 다이어그램입니다.

pipeline에 속하는 것은 무엇인가?

Ionic 프로젝트의 경우 일반적으로 다음 작업을 순서대로 수행하는 유용한 pipeline이 있습니다.

  1. lock파일에서 의존성을 설치합니다.
  2. 웹 앱을 빌드합니다.
  3. Capacitor 플랫폼과 동기화합니다.
  4. 테스트를 실행하거나 적어도 기본 검증을 수행합니다.
  5. 목표 플랫폼에 대한 네이티브 아티팩트를 생성합니다.
  6. 빌드 출력을 저장하거나 게시합니다.

이 흐름은 또한 좋은 인프라 습관이 중요합니다. 빌드 러너, 아티팩트 저장소 또는 배포 단계가 약간 느슨한 느낌이 들면, 이 가이드를 읽는 것이 가치가 있습니다. 작은 기업의 필수 클라우드 최적화 가이드 작은 기업의 필수 클라우드 최적화 가이드

A practical GitHub 액션 형태

GitHub 액션은 많은 Ionic 팀이 이미 code을 GitHub에 호스팅하고 있기 때문에 기본값으로 좋습니다. 아래의 워크플로우는 Android 릴리즈 빌드의 전체 형태를 보여줍니다.

name: Android Release Build

on:
  push:
    branches:
      - main

jobs:
  build-android:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: 20

      - name: Install dependencies
        run: npm ci

      - name: Build web assets
        run: npm run build

      - name: Sync Capacitor
        run: npx cap sync android

      - name: Setup Java
        uses: actions/setup-java@v4
        with:
          distribution: temurin
          java-version: 17

      - name: Build Android bundle
        run: cd android && ./gradlew bundleRelease

이것만으로는 릴리즈를 서명하지 않습니다. 키스토어 자료와 Gradle 서명 구성도 제공해야만 릴리즈를 서명할 수 있습니다. 이것은 의도적인 것입니다. 서명은 공개 워크플로우 파일과 분리되어야 합니다.

모바일에 집중된 구현 경로를 원한다면 __CAPGO_KEEP_0__ 앱을 위한 CI/CD 설정에 관한 이 포스트는 직접 관련이 있습니다. setting up CI/CD for Capacitor apps 모바일 CI/CD의 가장 어려운 부분은 YAML을 작성하는 것이 아닙니다. 미래의 사고를 일으키지 않는 비밀 관리입니다.

다음의 비밀을 저장소나 조직 비밀로 사용하세요:

키스토어 비밀번호

키 별칭

  • 인코딩된 키스토어 파일
  • __CAPGO_KEEP_0__ 앱을 위한 CI/CD 설정에 관한 이 포스트는 직접 관련이 있습니다.
  • 비밀과 서명 관리는 CI/CD에서 가장 어려운 부분입니다. 그것은 YAML을 작성하는 것이 아닙니다. 미래의 사고를 일으키지 않는 비밀 관리입니다.
  • API 토큰이 릴리스 중에 사용됩니다.
  • 환경에 따라서 빌드 값을 사용합니다.

안드로이드에서 일반적인 패턴은 키 스토어를 base64로 인코딩하고 인코딩된 문자열을 비밀로 저장하고 워크플로우 중에 재구성하고 Gradle에 재구성된 파일을 지정하는 것입니다. 동일한 원칙은 모든 서명 자료에 적용됩니다: 빌드 시에 삽입하고 저장소에 저장하지 마세요.

CI/CD는 인간의 오류를 제거해야 하지만 숨겨진 민감한 지식의 중앙화를 막아야 합니다. 만약에 하나의 개발자가 릴리스 비밀들이 어떻게 맞물려 있는지 이해한다면 pipe line은 여전히 약한 것입니다.

실용적인 추천: 유효성 검사와 릴리스를 분리하세요. pull request는 설치, lint, 테스트, 웹 빌드를 실행하고 보호된 branch 또는 수동 승인 게이트가 트리거되면 signed production artifact를 실행하세요. 이로써 normal 개발을 위해 pipe line이 빠르고 실제 배포를 위해 제어됩니다.

Capgo 업데이트를 즉시 배송하는 방법

릴리스 스토어는 네이티브 code 변경, 권한 변경, 앱 바이너리 수정 등이 필요한 경우에만 필요합니다. 텍스트 수정, 스타일 수정, JavaScript 버그 등이 웹层에만 존재하는 경우에는 좋은 수단이 아닙니다.

그것은 OTA 업데이트 Ionic 및 Capacitor 프로젝트에서 중요합니다. 설치된 앱에 업데이트된 웹 자산을 배포할 수 있기 때문입니다. 만약에 변경 사항이 네이티브 셸이 지원하는 범위 내에 있다면, 스토어 리뷰를 기다리지 않고 업데이트를 즉시 배포할 수 있습니다.

https://capgo.app에서 가져온 스크린샷

OTA 업데이트가 처리해야 하는 것

OTA 업데이트를 사용하여 다음 변경 사항과 같은 변경 사항을 사용하십시오.

  • JavaScript 논리 수정 새로운 네이티브 플러그인을 설치할 필요가 없는 변경 사항
  • 레이아웃이 깨진 경우 또는 브랜드 업데이트와 같은 CSS 조정 단순한 복사 변경
  • 단어, 레이블 및 법적 텍스트와 같은 변경 이미 앱이 어떻게 로드할 수 있는지 알고 있는 정적 자산 교체
  • 실제 네이티브 변경을 우회하는 것은 아님. 새로운 네이티브 의존성을 추가하거나 권한을 변경하거나, 스토어 검토된 바이너리 내에 포함되어야 하는 것을 변경하는 경우 정상적인 스토어 릴리즈를 배포하십시오. 이 경계는 중요합니다. OTA의 목표는 속도와 제어이며, 플랫폼 규칙을 무책임하게 우회하는 것이 아닙니다.

첫 번째 사고 이전에 채널을 설정하십시오.

속도와 제어를 위해 OTA를 사용하십시오.

속도와 제어를 위해 OTA를 사용하십시오.

OTA 워크플로우의 최고 성과를 얻으려면 채널. 프로덕션 채널은 사용자에게 안정적인 업데이트를 제공합니다. 스테이징 또는 베타 채널은 내부 테스터가 실제로 설치된 앱에서 업데이트를 검증할 수 있도록 업데이트를 먼저 받습니다.

그 패턴은 가장 위험한 OTA 실수를 피하는 데 도움이 됩니다. 바로 모든 사용자에게 직접 푸시하는 것입니다. 긴급한修정도 여전히 경계를 세워야 합니다.

일반적인 설정은 플랫폼 문서에 따라 플러그인 설치와 앱 초기화, 채널 assignment by 환경을 시작합니다. 앱 스토어에 안전한 OTA 업데이트에 대한 기사 는 올바른 경계를 설정하는 데 도움이 되는 좋은 참조점입니다.

code

업데이터가 통합된 후, 실제 워크플로우는 간단해집니다. 업데이트된 웹 자산을 빌드하고, 해당 채널에 게시한 후, 앱이 런칭할 때 업데이트 정책에 따라 업데이트를 가져와 적용합니다.

실제 예시는 모바일 레이아웃 회귀에 대한 핫픽스입니다:

  1. Ionic 앱의 CSS를 조정합니다.
  2. 프로덕션 웹 빌드를 실행합니다.
  3. 배포할 결과물은 스테이징 채널에 게시하세요.
  4. 설치된 빌드에 테스트하세요.
  5. 같은 수정을 프로덕션으로 승격하거나 게시하세요.

그 방법은 사고 대응 방식을 바꿉니다. OTA가 없으면, 웹层 버그는 스토어 리뷰와 사용자들이 새로운 바이너리를 채택할 때까지 기다려야 합니다. 그러나 OTA가 있으면, 영향을 받은 파일을 수정하고 올바른 대상에게 배포하여 제어된 방식으로 롤아웃을 관찰할 수 있습니다.

빠른 업데이트는 안전하게 적용하고 필요할 때 롤백할 수 있어야만 유용합니다.

OTA가 가장 이익을 얻는 팀은 무모한 팀이 아닙니다. 그들은 명확한 릴리스 경계, 이름이 지정된 채널, 그리고 웹层 수정을 네이티브 릴리스와 분리된 별도의 스트림으로 다루는 규칙적인 팀입니다.

일반적인 배포 문제와最佳 관행

대부분의 배포 문제는 독특하지 않습니다. 팀이 같은 실수를 지속적으로 반복하는 이유는 deadline 압박하에 같은 실수를 반복하기 때문입니다.

반복적으로 나타나는 실패

안드로이드 서명 오류는 일반적으로 잘못된 비밀번호, 잘못된 별칭, 또는 릴리스 구성에서 잘못된 키 스토어 파일이 사용된 경우입니다. 그럴 때는 비밀번호를 무작위로 회전하지 말고 파일, 별칭, 비밀 값이 올바른지 먼저 확인하세요.

iOS 빌드 오류는 일반적으로 배포 식별자, 팀 선택, 인증서, 및 프로비전 프로파일의 일치 여부와 관련이 있습니다. Xcode의 오류 메시지는 밀접하지만 일치 여부는 일반적으로 Literal입니다. 그 중 하나의 값이 다른 것과 일치하지 않습니다.

설치 후 빈 화면이 또 다른 classic입니다. 일반적인 원인은 다음과 같습니다.

  • 개발 서버를 향한 프로덕션 앱 번들된 자산 대신
  • 웹 자산이 재빌드되지 않음 HTML text fragment from a longer Capgo UI string (parent key `create_an_issue_and_discuss_before_working_on_a_new_feature`). Page/area: Capgo marketing website. Role: Long marketing or legal paragraph. Seen in: page contributing.astro. Message key `create_an_issue_and_discuss_before_working_on_a_new_feature` (Create An Issue And Discuss Before Working On A New Feature). | HTML text fragment from a longer Capgo UI string (parent key `mention_issue_before_working`). Page/area: Capgo marketing website. Role: Website copy sentence. Seen in: page contributing.astro. Message key `mention_issue_before_working` (Mention Issue Before Working). npx cap sync
  • 플러그인 변경 사항이 동기화되지 않음 자연어 프로젝트로
  • 런타임 환경 변수가 누락됨 실제 릴리즈 빌드에서

릴리즈 습관이 재작업을 방지하는 습관

최선의 방법은 지루하지만, 그것이 왜 효과가 있는지 알면 이해할 수 있습니다.

환경 설정의 단일 참조 소스 유지. 청결한 branch에서 빌드. 릴리즈 커밋을 태그합니다. 저장소 외부에 서명 자료를 저장합니다. 실제 장치에서 설치된 빌드를 테스트하세요. 시뮬레이터와 브라우저 탭만으로는 충분하지 않습니다. 스토어 메타데이터를 미리 준비하여 배포가 스크린샷, 개인 정보 답변, 또는 누락된 복사본에 걸리지 않도록 하세요.

릴리즈 체크리스트를 작성하는 습관 하나가 많은 고통을 피할 수 있습니다: 자동화가 구축된 후에도 릴리즈 체크리스트를 작성하세요. PIPELINES는 빌드 아티팩트를 빌드합니다. 그러나 앱 설명이 최신인지, 지원 URL이 올바른지, 또는 앱의 동작과 일치하는 최신 네이티브 권한 문자열이 있는지 확인하지 않습니다.


만약 팀이 Capacitor 앱을 배포하고 웹-layer 수정을 안전하게 배포하고 싶다면 Capgo Capgo로 PR을 제출하는 경우

Live updates for Capacitor apps

웹层 버그가 활성화되면 Capgo을 통해修정을 배포하는 대신 앱 스토어 승인까지 며칠 기다리지 마세요. 사용자는 배경에서 업데이트를 받으면서 원본 코드는 일반적인 검토 경로에 남아 있습니다.

마틴의 인간 지원

시작하기

최신 블로그

Capgo은 전문적인 모바일 앱을 만들기 위해 필요한 최고의洞察력을 제공합니다.