콘텐츠로 건너뛰기

디버깅

코드설명
InvalidIp사용자가 Google 데이터 센터에 위치하고 업데이트가 4시간 미만입니다. Google 봇의 기기가 계정의 기기로 집계되는 것을 방지하기 위해 수행됩니다.
needPlanUpgrade (이전: needUpgrade)플랜 한도에 도달했으며, 업그레이드하거나 다음 달까지 기기가 업데이트를 받지 않음을 나타냅니다.
noNew기기에 최신 사용 가능한 버전이 있습니다.
disablePlatformIos기기가 iOS 플랫폼이지만 채널 설정에서 비활성화되어 있습니다.
disablePlatformAndroid기기가 Android 플랫폼이지만 채널 설정에서 비활성화되어 있습니다.
disableAutoUpdate”major"
disableAutoUpdateUnderNative기기 버전(1.2.3)이 있고 채널에 기기 버전보다 낮은 업데이트(1.2.2)가 있지만 채널 설정에서 비활성화되어 있습니다.
disableDevBuild기기에 개발 빌드가 있지만 채널 설정에서 비활성화되어 있습니다.
disableEmulator기기가 에뮬레이터이지만 채널 설정에서 비활성화되어 있습니다.
cannotGetBundle번들 다운로드를 위한 유효한 서명된 URL 생성에 실패했습니다. 번들 URL 생성이 실패하거나 유효하지 않은 URL(http/https로 시작하지 않음)을 반환하고 대체할 매니페스트가 없을 때 발생합니다.
cannotUpdateViaPrivateChannel기기가 비공개 채널과 자동 연결을 시도했지만 채널 설정에서 기기 자동 연결을 허용하지 않으며(allow_device_self_set이 false) 채널이 공개되지 않았습니다.
channelMisconfigured채널이 버전 번호로 자동 업데이트를 비활성화하도록 구성되었지만(disable_auto_update: 'version_number') 번들의 min_update_version 필드가 null이어서 어떤 기기가 업데이트를 받아야 하는지 결정할 수 없습니다.
disableAutoUpdateMetadata버전 번호 메타데이터로 자동 업데이트가 비활성화되었습니다. 채널은 기기 버전이 최소한 min_update_version이어야 하지만 기기의 현재 버전이 이 임계값보다 낮습니다.
disableAutoUpdateToMajor채널 설정 disable_auto_update: 'major'는 주 버전 번호를 증가시키는 업데이트를 방지합니다(예: 1.x.x에서 2.x.x로 업데이트 차단).
disableAutoUpdateToMinor채널 설정 disable_auto_update: 'minor'는 부 버전 번호를 증가시키는 업데이트를 방지합니다(예: 1.2.x에서 1.3.x로 업데이트 차단).
disableAutoUpdateToPatch채널 설정 disable_auto_update: 'patch'는 패치 버전 번호를 증가시키는 업데이트를 방지하거나 동일한 major.minor 버전 내에서 패치 수준 업데이트만 허용합니다(예: 1.2.3은 1.2.4로 업데이트할 수 있지만 1.2.2 또는 1.3.0은 안됨).
missingBundle이 채널에 할당된 번들에 다운로드 가능한 콘텐츠가 없습니다. 번들에 external_url, r2_path가 없고, 내장 버전이 아니며, 다운로드할 매니페스트 항목이 없음을 의미합니다.
NoChannelOrOverride이 앱에 대한 기본 채널이 구성되지 않았으며 기기에 할당된 특정 채널 재정의가 없습니다. 업데이트가 작동하려면 최소한 하나가 있어야 합니다.
rateLimited과도한 요청으로 인해 기기가 속도 제한되었습니다.
코드설명
ping통계 시스템이 올바르게 작동하는지 확인하는 내부 테스트 작업입니다.
get새 버전을 다운로드하기 위한 정보가 기기로 전송되었습니다.
delete기기에서 하나의 번들이 삭제되었습니다.
set기기에 번들이 설정되었습니다.
set_fail번들 설정에 실패했습니다.
reset기기가 builtin 번들로 재설정되었습니다.
download_XX새 번들이 다운로드되었습니다 - XX%로 진행률 표시(10% 단위 증가).
download_complete새 번들 다운로드가 완료되었습니다.
download_manifest_start기기가 업데이트 매니페스트 다운로드를 시작했습니다.
download_manifest_complete기기가 업데이트 매니페스트 다운로드를 완료했습니다.
download_zip_start기기가 번들 아카이브 다운로드를 시작했습니다.
download_zip_complete기기가 번들 아카이브 다운로드를 완료했습니다.
download_manifest_file_fail매니페스트 항목 하나가 다운로드에 실패했습니다. 통계 페이로드는 version_nameversion:fileName 형식으로 넣어 자산을 정확히 찾습니다.
download_manifest_checksum_fail매니페스트 파일이 체크섬 검증에 실패했습니다.
download_manifest_brotli_fail매니페스트 파일이 Brotli를 사용한 압축 해제에 실패했습니다.
download_fail새 번들 다운로드에 실패했습니다.
update_fail새 번들이 설치되었지만 notifyAppReady 호출에 실패했습니다.
checksum_fail새 번들이 체크섬 검증에 실패했습니다. Capgo Cloud를 사용 중이고 이 오류가 발생하면 일반적으로 앱 버전이 다른 체크섬 유형을 예상하고 있음을 의미합니다. 최신 버전의 CLI 및 플러그인(버전 5.10.0+, 6.25.0+ 또는 7+)은 SHA256 체크섬을 사용하는 반면 이전 플러그인은 CRC32를 사용했습니다. 체크섬 실패가 표시되면 체크섬이 SHA256이 아닌 CRC32(더 짧은 해시)인지 확인하세요. 이는 일반적으로 번들이 이전 버전의 CLI로 업로드되었음을 나타냅니다. Capgo 대시보드에서 번들 버전을 확인하세요 - 버전 5.10.0/6.25.0/7 이후 생성된 번들은 SHA256을 사용해야 합니다. CRC32 체크섬이 표시되면 로컬에 최신 플러그인 버전이 설치되어 있는지 확인한 다음(CLI는 로컬 플러그인 버전을 확인하여 업로드할 체크섬 유형을 결정합니다) CLI를 업그레이드하고 번들을 다시 업로드하세요.
windows_path_failzip에 불법적인 Windows 경로를 포함하는 파일이 있습니다
canonical_path_fail파일 경로가 표준 형식이 아닙니다
directory_path_failzip 파일 경로에 오류가 있습니다
unzip_fail압축 해제 실패
low_mem_fail기기의 메모리 부족으로 다운로드 실패
app_moved_to_background애플리케이션이 백그라운드 상태로 전환되었습니다.
app_moved_to_foreground애플리케이션이 포그라운드 상태로 전환되었습니다.
decrypt_fail다운로드한 번들 암호 해독에 실패했습니다.
getChannel기기의 현재 채널을 쿼리했습니다.
setChannel기기에 채널이 성공적으로 설정되었습니다.
uninstall애플리케이션이 제거되었거나 Capgo 데이터가 지워졌습니다.
blocked_by_server_urlcapacitor config에 Server.url이 있으면 Capacitor가 원격 URL을 제공하고 로컬 파일을 무시하게 되는데, 우리 업데이터는 로컬 파일로 작동하도록 만들어졌습니다. Server.url은 Capacitor 제작자들이 프로덕션에서 나쁜 관행으로 간주하며 많은 문제와 플러그인이 올바르게 작동하지 않는 원인이 됩니다.
  • SUCCESS: 번들 설치 완료
  • ERROR: 설치 또는 다운로드 실패
  • PENDING: 다운로드 완료, 릴리스 대기 중
  • DELETED: 번들 삭제됨, 통계용으로 여전히 표시됨
  • DOWNLOADING: 현재 번들 다운로드 중

Capgo 클라우드 사용자를 위한 디버그 명령이 있습니다.

Terminal window
npx @capgo/cli@latest app debug

이를 통해 앱에서 발생하는 모든 이벤트를 확인하고 업데이트가 발생하지 않는 경우 해결책을 찾을 수 있습니다.

Xcode에서 로그를 찾으려면

Android Studio에서 로그를 찾으려면

  • Failed to download from => download_fail과 동일
  • notifyAppReady was not called, roll back current bundle => update_fail과 동일

기기에서 다운로드한 번들 찾기

Section titled “기기에서 다운로드한 번들 찾기”

iOS에서 디버깅하려면 앱을 컴퓨터에 덤프해야 합니다. 다음과 같이 할 수 있습니다:

Xcode에는 iOS 기기에 개발자가 설치한 앱의 파일 시스템을 검사하는 내장 기능이 있습니다. 기기 및 시뮬레이터 옵션을 보여주는 Xcode 윈도우 메뉴

이를 수행하려면:

  • 기기를 Mac에 연결하고 Xcode 메뉴바에서 Window > Devices를 선택합니다.
  • 왼쪽 창의 Devices 섹션에서 기기를 선택합니다.
  • 해당 기기에 대한 개발자 설치 앱 목록이 표시됩니다.
  • 검사하려는 앱을 선택한 다음 화면 하단 근처의 3점 아이콘을 선택합니다.
  • 여기에서 스냅샷을 다운로드하여 현재 파일 시스템을 볼 수 있습니다.

앱 컨테이너 다운로드 옵션을 보여주는 Xcode 기기 패널

Download Container…를 선택하면 탐색할 수 있는 .xcappdata 파일로 파일 시스템의 스냅샷을 다운로드하고 내보냅니다.

패키지 내용 표시 컨텍스트 메뉴가 있는 다운로드된 xcappdata 파일

이 파일을 마우스 오른쪽 버튼으로 클릭하고 Show Package Contents를 선택하여 폴더를 엽니다.

App Data 폴더를 열면 Documents, Library, tmp 등과 같은 몇 개의 폴더가 표시됩니다.

Documents 및 Library 폴더를 보여주는 iOS 앱 컨테이너 폴더 구조

그러면 2개의 폴더에서 버전을 찾을 수 있습니다:

library/NoCloud/ionic_built_snapshots는 앱 재부팅 후 필요합니다

그리고 documents/versions는 핫 리로드용입니다

Android에서 디버깅하려면 Android Studio에서 기기에 액세스해야 합니다:

  • View > Tool Windows > Device File Explorer를 클릭하거나 도구 창 막대에서 Device File Explorer 버튼을 클릭하여 Device File Explorer를 엽니다.
  • 드롭다운 목록에서 기기를 선택합니다.
  • 경로 **data/data/APP_NAME/**을 엽니다. 여기서 APP_NAME은 앱 ID입니다.

앱 데이터 디렉토리를 보여주는 Android Studio Device File Explorer

그런 다음 versions 폴더를 찾아 모든 버전을 확인합니다.

iOS 프로덕션 충돌 로그 이해하기

Section titled “iOS 프로덕션 충돌 로그 이해하기”