React Nativeプロジェクトの更新

3526 ワード

次に、アプリケーション内のバージョンの更新が可能なReact NativeのプラグインCodePushについて説明します.
このプラグインは、マイクロソフトが開発者向けに提供するツールです.プロジェクト詳細アドレスはプロジェクトgithubをスタンプしてください
使用する場合は、RNバージョンは>=0.15である必要があります.低バージョンRNこのコンポーネントのサポートにはいくつかの問題がありますが、開発者は低バージョンをサポートする準備ができていません.

インストール


1)iOSプラットフォームのインストール

npm install react-native-code-push
 node_modules/react-native-code-push  CodePush.xcodeproj   Xcode  Libraries 。
 Build Phases   libCodePush.a libz.tbd
  Header Search Paths  ,  $(SRCROOT)/../node_modules/react-native-code-push

2)Androidプラットフォームのインストール

react-native link react-native-code-push

 : link       。    settings.gradle  :
project(':react-native-code-push').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-code-push/android/app')

プログラム呼び出し


プログラム呼び出しの前に、code-pushでアプリケーションを作成する必要があります.iOSとAndroidプラットフォームの2つを作成することをお勧めします.

1)iOSでの呼び出し

 AppDelegate.m   CodePush.h
    jsCodeLocation [CodePush bundleURL]

ここではまずcode-pushコマンドでアプリケーションを作成する必要があります.作成後に適用されるDeployment Keyがあります.この値はInfo.plistで設定します.info.plistにCodePushDeploymentKeyを追加し、上記のkey値に設定します.Infoも必要だplilstにbundleVersion値を追加するには、1.0.10などの小さなバージョン番号に具体的に指定する必要があります.

2)Androidで呼び出す


linkの後、必要なパケットと処理方法はMainActivity.javaにインポートされます.code-push関連のコードがない場合.手動でインポートします.
import com.microsoft.codepush.react.CodePush;

@Override protected void onCreate(Bundle savedInstanceState) { 
    ... //       
    CodePush codePush = new CodePush("xxx", this, BuildConfig.DEBUG);
    ...
    mReactInstanceManager = ReactInstanceManager.builder()
        .setApplication(getApplication()) 
    ... 
    //       --> .setBundleAssetName("index.android.bundle") 
    //      :
        .setJSBundleFile(codePush.getBundleUrl("index.android.bundle")) 
    //     
        .addPackage(codePush.getReactPackage())
android/app/build.gradleディレクトリのバージョン情報を次のように変更します.
android { 
    ... 
    defaultConfig { 
      ... 
      versionName "1.0.10" 
      ... 
    } 
 ...
 }

アップグレード操作


MyDemo(iOSプラットフォーム)とMyDemo-android(Androidプラットフォーム)の2つのCodePushアプリケーションがそれぞれ作成されています.対応するディレクトリreleaseとrelease_Androidは先に作成する必要があります.
mkdir release release_android

1)iOSのアップグレード

react-native bundle --platform ios --entry-file index.ios.js  --bundle-output ./release/main.jsbundle --assets-dest ./release --dev false
code-push release MyDemo ./release/main.jsbundle 1.0.10 

  :   1.0.10   bundleVersion   ,                     ,              。

2)Androidのアップグレード

react-native bundle --platform android --entry-file index.android.js  --bundle-output ./release_android/main.jsbundle --assets-dest ./release_android --dev false
code-push release MyDemo-android ./release_android/main.jsbundle 1.0.10 

パッケージのディレクトリも違いますので注意してください.静的リソースの問題に関連します.

RNではJSで以下の操作が可能です

chekForUpdate        
getCurrentPackage         
notifyApplicationReady         
restartApp     ,           
sync           ,          。

マイクロソフトのこのコンポーネントを除いて.AppHubでバージョンを管理することもできます.AppHubは、RN、cordovaなどのアプリケーションに対する有料の管理プラットフォームです.
推奨:RNToolsはReact Native記事、インスタンスコード、サードパーティモジュールを共有するプラットフォームです.RNTools公式サイトリンクRNToolsアプリケーションダウンロード