APK 또는 AAB 내에서 React Native 번들 엔트리 확인하기
요약
React Native 번들 엔트리 확인을 위한 도구 'rn-artifact-check'가 소개되었습니다. 이 CLI는 APK 또는 AAB 파일 내에서 예상되는 번들 엔트리가 존재하고, 메타데이터와 바이트 크기 및 CRC 값이 일치하는지 검증합니다. 이 도구는 아카이브의 구조적 무결성만 확인하며, 실제 Android 빌드 가능 여부나 JavaScript 의미론은 검사하지 않습니다.
핵심 포인트
- APK/AAB 내 번들 엔트리 존재 유무 및 경로 확인
- 선택된 엔트리의 크기 및 CRC 일관성 검증에 초점
- Android App Bundle 툴링(bundletool 등)은 별도 사용 권장
- Node.js 환경에서 CLI 형태로 제공되어 빌드 프로세스 통합 용이
저는 아카이브 자체의 작은 릴리스 질문에 답하기 위해 rn-artifact-check를 만들었습니다. 즉, APK나 AAB가 제가 예상하는 번들 엔트리를 포함하고 있는지, 그리고 바이트가 해당 ZIP 디렉터리 메타데이터와 일치하는지 확인합니다.

제가 확인하는 것들
저는 기본적으로 각 아카이브 유형에 대한 표준 엔트리 경로를 사용합니다. APK의 경우 assets/index.android.bundle을 찾고, AAB의 경우 base/assets/index.android.bundle을 찾습니다. 프로젝트가 번들을 다른 곳에 패키징하는 경우 정확한 사용자 지정 경로도 허용합니다.
저는 중앙 디렉터리를 스캔하여 중복된 선택 경로를 찾고, 비어 있지 않은 Android manifest 마커 하나를 요구합니다. 저는 이 마커를 파싱하지 않습니다. 하나의 번들 엔트리를 찾은 후, 이를 스트리밍하고 압축 해제된 바이트 수와 CRC를 엔트리 메타데이터와 비교합니다. 저는 엔트리 수를 제한하고, 중앙 디렉터리 메타데이터, 그리고 압축 및 확장된 번들 바이트를 집계합니다.
'통과(pass)'가 의미하는 것
저는 결과를 의도적으로 제한했습니다. 저는 통과를 선택된 엔트리가 존재하고, 비어 있지 않으며, 선언된 크기 및 CRC와 일관성이 있는 것으로 정의합니다. 저는 APK 서명을 검증하거나, Android가 번들을 로드할 수 있는지 증명하거나, JavaScript 의미론을 검사하거나, Hermes 바이트코드를 검증하거나, 다른 모든 아카이브 엔트리를 확인하지 않습니다.
Android App Bundle 툴링은 bundletool에 맡깁니다. 저는 프로젝트 구성 및 의존성 검사로 Expo Doctor를 사용하고, 패키지 내용을 교체하고 출력을 서명하는 데는 rn-bundle-swapper를 사용합니다. 저는 기존 Android 아카이브만 검사합니다.
사용해 보기
저는 Node.js 20 이상을 사용합니다. 다음 명령어로 패키징된 테스트 시나리오 데모를 실행할 수 있습니다:
npx --yes --package=github:Arthur031221/rn-artifact-check rn-artifact-check --demo
데모에서는 누락된 APK 번들 경로를 보여준 다음 AAB 번들 패스를 진행할 것으로 예상합니다. 이 아카이브들은 작고 합성적인 패키징 테스트용 파일입니다. 저는 이것들을 설치 가능한 Android 빌드로 제시하지 않습니다. Node의 테스트 러너를 사용하여 저장되고 압축 해제된 엔트리, 실패 사례, 아카이브 제한, JSON 출력, 그리고 아티팩트 불변성을 테스트합니다.
저는 이 하나의 아카이브 검사를 릴리스 단계에서 원하는 팀들을 위해 CLI를 작성했습니다. 소스는 MIT 라이선스로 공개하며, 명령어와 관찰된 결과를 포함한 집중적인 버그 보고를 환영합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기