핫 업데이트 SourceMap 버전 매칭¶
React Native 앱이 CodePush와 같은 OTA 방식으로 JavaScript Bundle을 핫 업데이트할 때, APK나 IPA의 앱 버전은 변경되지 않습니다. 각 핫 업데이트 패키지가 올바른 SourceMap과 매칭되도록 하려면, 마스터 패키지와 각 핫 업데이트 패키지에 서로 다른 RUM version을 설정하고, 동일한 version을 사용해 해당 SourceMap을 업로드해야 합니다.
version 길이 제한
version의 길이는 20자를 초과하지 않아야 합니다. 1.2-cp-1과 같은 짧은 버전 번호를 사용하고, 지나치게 긴 핫 업데이트 설명은 피하는 것이 좋습니다.
버전 예시¶
앱 버전이 1.2라고 가정합니다:
| JavaScript Bundle | RUM version |
SourceMap 업로드 시 사용할 version |
|---|---|---|
| 마스터 패키지 | 1.2 |
1.2 |
| 첫 번째 핫 업데이트 패키지 | 1.2-cp-1 |
1.2-cp-1 |
| 두 번째 핫 업데이트 패키지 | 1.2-cp-2 |
1.2-cp-2 |
version 구성¶
SDK 초기화 시 dataModifier를 통해 version 필드를 수정합니다:
const rumVersion = '1.2-cp-1';
let config: FTMobileConfig = {
datawayUrl: datawayUrl,
clientToken: clientToken,
env: 'prod',
dataModifier: {
version: rumVersion,
},
};
await FTMobileReactNative.sdkConfig(config);
각 Bundle은 자신만의 rumVersion을 설정합니다. 이 구성은上报 데이터의 version만 수정하며, Android versionName, iOS MARKETING_VERSION 또는 CodePush의 대상 버전은 수정하지 않습니다.
네이티브 심볼 파일¶
완전한 React Native sourcemap.zip에는 현재 Bundle의 JavaScript SourceMap과 해당 마스터 패키지의 네이티브 심볼 파일이 모두 포함되어야 합니다. 네이티브 크래시를 해석하려면 여전히 Android mapping.txt, 심볼 .so 또는 iOS dSYM이 필요합니다.
순수 JavaScript 핫 업데이트는 네이티브 심볼 파일을 변경하지 않으므로 마스터 패키지의 네이티브 심볼 파일을 재사용할 수 있습니다. 그러나 각 핫 업데이트 버전은 이 파일들을 현재 JavaScript SourceMap과 함께 패키징하고, 해당 핫 업데이트 버전의 version을 사용하여 업로드해야 합니다. 구체적인 디렉터리 구조는 React Native 심볼 파일 업로드를 참조하세요.
SourceMap 업로드¶
마스터 패키지 또는 핫 업데이트 패키지를 릴리스할 때마다 다음을 수행합니다:
- JavaScript Bundle을 빌드하고 동시에 해당 SourceMap을 생성합니다;
- React Native 심볼 파일 업로드의 요구 사항에 따라
sourcemap.zip으로 패키징합니다; - 업로드 시 RUM 데이터와 동일한
app_id,env및version을 입력합니다.
예를 들어, update-one이上报한 version이 1.2-cp-1인 경우, 해당 SourceMap을 업로드할 때도 version을 반드시 1.2-cp-1로 입력해야 합니다.
업로드 방법은 스크립트를 통한 SourceMap 업로드 또는 프론트엔드 페이지 업로드를 참조하세요. 여전히 사용자가 있는 이전 버전의 SourceMap은 삭제하지 마십시오.