이전글에서 Appcenter 관련하여 설정을 하였으며 오늘은 React Native에서 코드를 적용해 볼 예정입니다.
이글에서는 Android 관련한 설정을 알아보도록 하겠습니다.
yarn add react-native-code-push
CODEPUSH_DEPLOYMENT_KEY_STAGING=<Staging key>
CODEPUSH_DEPLOYMENT_KEY_PRODUCTION=<production key>
그 다음, settings.gradle 파일을 열고 다음의 코드를 추가해줍니다.
include ':app', ':react-native-code-push'
project(':react-native-code-push').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-code-push/android/app')
import com.microsoft.codepush.react.CodePush
override val reactNativeHost: ReactNativeHost =
object : DefaultReactNativeHost(this) {
override fun getPackages(): List<ReactPackage> =
PackageList(this).packages.apply {
// Packages that cannot be autolinked yet can be added manually here, for example:
// add(MyReactNativePackage())
}
override fun getJSMainModuleName(): String = "index"
override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG
override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
+ override fun getJSBundleFile(): String? {
+ return CodePush.getJSBundleFile()
+ }
}
apply from: "../../node_modules/react-native-code-push/android/codepush.gradle"
그 다음 같은 파일 내에서 buildTypes 부분에서 다음과 같은 코드를 추가시켜 줍니다.
buildTypes {
degug {
...
resValue "string", "CodePushDeploymentKey", CODEPUSH_DEPLOYMENT_KEY_STAGING
}
release {
...
resValue "string", "CodePushDeploymentKey", CODEPUSH_DEPLOYMENT_KEY_PRODUCTION
}
}
staging {
initWith release
resValue "string", "CodePushDeploymentKey", CODEPUSH_DEPLOYMENT_KEY_STAGING
matchingFallbacks = ['release']
}
그리고 필자는 debug 모드에서는 statging키를 같이 사용합니다. 따로 debug용 키를 만드셔도 상관없습니다.
staging buildTypes 는 기존에는 없는 것이기 때문에 따로 추가해주셔야 합니다.
그 다음 같은 파일 내에 android 안 쪽에 defaultConfig 에 다음과 같은 코드를 추가해줍니다.
android {
...
defaultConfig {
...
"CODE_PUSH_APK_BUILD_TIME", String.format("\"%d\"", System.currentTimeMillis())
}
이렇게 되면 안드로이드쪽 설정은 마무리되었습니다.