5분 만에 반응 네이티브 앱을 Codepush-fy! 🚀
14109 단어 reactnative
코드푸시란?
Codepush는 반응 네이티브(또는 코르도바) 앱을 업데이트할 때 스토어 리뷰를 우회할 수 있는 멋진 도구입니다.
앱 번들의 클라우드 스토리지처럼 작동합니다. 모든 것을 설정하고 앱을 시장에 게시한 후에는 출시될 때마다 앱이 새 버전과 업데이트가 있는지 확인할 수 있습니다.
react-native 또는 cordova로 만든 iOS, Android 및 Windows 앱을 지원합니다.
자바스크립트 번들(RN 앱인 경우)만 업데이트하므로 자산 또는 네이티브 코드를 포함한 일부 업데이트로 인해 앱이 충돌하고 이전 버전으로 롤백될 수 있다고 합니다.
그러나 이 도구를 약 4개월 동안 사용하는 동안 그런 사고는 한 번도 발생하지 않았습니다. 따라서 기본 모듈을 추가하거나 js 외부 항목을 코딩하지 않는 한 걱정할 필요가 없습니다.
어떻게 사용할 수 있습니까?
1. Appcenter-cli 설치
yarn global add appcenter-cli
or
npm i -g appcenter-cli
2. Appcenter에 앱 및 배포 트랙을 추가합니다.
먼저
appcenter-cli
를 사용하여 appcenter에 로그인해야 합니다.appcenter login # browser will open up. after you login to appcenter, you'll get auth code to type in terminal
이제 appcenter에 앱(실제 애플리케이션이 아니라 앱 번들의 원격 저장소라고 생각하세요)을 생성해야 합니다.
# change appname and os as you want
appcenter apps create -d {appname} -o {os}(Android/iOS) -p React-Native
프로덕션에서는 각각
appname-ios, appname-android
라는 두 개의 앱을 만듭니다. 그런 다음 앱의 배포 트랙을 추가할 수 있습니다. 원격 앱 번들 저장소의 분기로 간주하십시오. 여러 트랙을 만들고 서로 다른 업데이트 스트림을 별도로 제어할 수 있습니다.appcenter codepush deployment add -a {username/appname} {trackname}
이렇게 하면 터미널에 배포 키가 표시됩니다. 당신은 이것을 필요로 할 것입니다, 그것을 복사합니다. 실수로 터미널을 지웠다면 이 명령어로 다시 얻을 수 있습니다.
appcenter codepush deployment list -a {username/appname} -k
3. 앱에 codepush를 추가합니다.
반응 네이티브 프로젝트에 codepush 종속성을 추가합니다.
yarn add react-native-code-push
iOS 설정
react-native 프로젝트의 루트 디렉토리에서.
cd ios && pod install && cd ..
AppDelegate.m
. codepush용 가져오기 헤더.
#import "AppDelegate.h"
#import <CodePush/CodePush.h> // codepush add this line
#import <React/RCTBridge.h>
...
그리고 react-native가 소스 번들을 읽기 위해 사용하는 url을 변경합니다.
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
#if DEBUG
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
// change the line above to the below
return [CodePush bundleURL];
#endif
}
Info.plist
이제 codepush 배포 키와 http 예외 도메인을
Info.plist
에 추가해야 합니다.먼저 배포 키를 설정하여 액세스할 원격 저장소를 앱에 알려야 합니다. 키
CodePushDeploymentKey
를 Info.plist
에 추가하고 이에 대한 값을 설정합니다. 위에서 복사한 키입니다.<plist version="1.0">
<dict>
...
<key>CodePushDeploymentKey</key>
<string>mydeploymentkey</string>
...
</plist>
그리고 앱 번들을 다운로드하려면 HTTPS 네트워크 액세스를 허용해야 합니다.
<plist version="1.0">
<dict>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>codepush.appcenter.ms</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
...
</dict>
</plist>
마지막으로
Info.plist
는 아래와 같으며 앱의 iOS 부분은 코드 푸시할 준비가 되었습니다.<plist version="1.0">
<dict>
...
<key>CodePushDeploymentKey</key>
<string>mydeploymentkey</string>
...
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>codepush.appcenter.ms</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
...
</dict>
</plist>
안드로이드 설정
codepush.gradle
를 android/app/build.gradle
에 추가...
apply from: "../../node_modules/react-native/react.gradle"
apply from: "../../node_modules/react-native-code-push/android/codepush.gradle"
...
MainApplication.java
....
// 1. import codepush package
import com.microsoft.codepush.react.CodePush;
public class MainApplication extends Application implements ReactApplication {
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
...
// 2. override getJSBundleFile
@Override
protected String getJSBundleFile() {
return CodePush.getJSBundleFile();
}
};
}
strings.xml
에 배포 키 추가다시 같은 키.
<resources>
<string name="app_name">AppName</string>
<string moduleConfig="true" name="CodePushDeploymentKey">mydeploymentkey</string>
</resources>
4. 실제로 앱을 코드푸시합니다.
네이티브 측의 원격 저장소에 액세스하도록 앱 설정을 완료했습니다. 이제 반응 네이티브 코드에 버전을 확인하고 자체적으로 업데이트하도록 지시해야 합니다.
많은 시나리오와 옵션이 있을 수 있지만 가장 쉬운 방법을 설명하겠습니다.
// Consider it's your root Component
import React from 'react'
import codePush from 'react-native-code-push'
const App = () => (
<AwesomeWrapper>
<AwesomeContent />
</AwesomeWrapper>
)
// set options for codepush.
const codePushOptions = {
checkFrequency: codePush.CheckFrequency.ON_APP_START,
installMode: codePush.InstallMode.IMMEDIATE,
}
// wrap your root component with codepush and let this to be registered in index.js
export default codepush(codePushOptions)(App)
이 경우
checkFrequency
, installMode
옵션을 설정하고 루트 구성 요소만 래핑했습니다. 그러나 버전 확인을 트리거하고 codepush.sync()
를 사용하여 수동으로 업데이트할 수 있습니다. 자세한 내용은 codepush api 에서 읽을 수 있습니다.5. 코드를 푸시하세요!
모든 설정이 완료되었습니다. 이 명령으로 새 앱 번들을 배포할 수 있습니다.
appcenter codepush release-react -a {username/appname} -d {trackname}
# you should do this at the root directory of your react-native project
# because it read and run commands from your package.json
Reference
이 문제에 관하여(5분 만에 반응 네이티브 앱을 Codepush-fy! 🚀), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/eatnug/codepush-fy-your-react-native-app-in-5-minutes-2el7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)