1. 程式人生 > >關於react-native-code-push的原生整合攻略

關於react-native-code-push的原生整合攻略

注:此文整合code-push是基於自建熱更新伺服器來維護的,如果使用微軟的熱更新伺服器整合有部分區別。

首先通過npm 或者 yarn 將依賴下載下來:

npm install --save react-native-code-push 

or

yarn add react-native-code-push 

Android 整合

1. 常規整合依賴,執行link,一鍵配置原生:

如果react native 在^ 0.27版本及以上則用以下指令

react-native link react-native-code-push

如果react native 版本低於^ 0.27版本(基本不可能低於...)

rnpm link react-native-code-push

文中此後的配置不考慮react native 低版本的原生配置(React Native> = v0.29

2. 手動整合依賴,執行link後,必須手動配置檢查原生配置問題:

  • 在您的android/settings.gradle檔案中,進行以下新增:
include ':app'
...
include ':react-native-code-push'
project(':react-native-code-push').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-code-push/android/app')
  • 在您的android/app/build.gradle檔案中,將:react-native-code-push專案新增為編譯時依賴項:
...
dependencies {
    ...
    compile project(':react-native-code-push')
}
  • 在您的android/app/build.gradle檔案中,將檔案codepush.gradle新增在react.gradle下面進行構建:
...
apply from: "../../node_modules/react-native/react.gradle"
apply from: "../../node_modules/react-native-code-push/android/codepush.gradle"
...
  •  配置MainApplication.java檔案
...

// 1.導包
import com.microsoft.codepush.react.CodePush;

...

public class MainApplication extends Application implements ReactApplication {

  private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {

    // 2.覆蓋的getJSBundleFile方法,為了讓app啟動時,在CodePush執行時找到JS的bundle檔案
    @Override
    protected String getJSBundleFile() {
        return CodePush.getJSBundleFile();
    }

    @Override
    public boolean getUseDeveloperSupport() {
      return BuildConfig.DEBUG;
    }

    @Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
        new MainReactPackage(),
        // 3. 例項化CodePush執行時的一個例項
        // 可傳三個引數也可傳四個,用微軟提供的伺服器則可以不用傳第四個引數
        // 引數1: code push key,引數4: 熱更新伺服器地址
        new CodePush(BuildConfig.CODEPUSH_KEY, getApplicationContext(), BuildConfig.DEBUG, "https://your.hotUpdateServer.com/"),
        ...
      );
    }
  };
  • 上圖的“BuildConfig.CODEPUSH_KEY”,需在您的android/app/build.gradle檔案中新增如下配置:
    buildTypes {
        debug {
            signingConfig signingConfigs.release
            buildConfigField "String", "CODEPUSH_KEY", '"這裡輸入你的Staging key"'
        }
        releaseStaging {
            signingConfig signingConfigs.release
            buildConfigField "String", "CODEPUSH_KEY", '"這裡輸入你的Staging key"'
        }
        release {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            signingConfig signingConfigs.release
            buildConfigField "String", "CODEPUSH_KEY", '"這裡輸入你的Production key"'
        }
    }

注:可以通過執行./gradlew assembleReleaseStaging輸出Staging包來測試,也可以通過debug包來更方便的測試熱更新功能。

IOS 整合

對於IOS方面的小白,有幾個配置細節可以提一提:

1. 配置 Staging key :

  • 選擇專案Info,點選Configurations下的“+”新增Staging模式

  • 在Build Setting檔案下新增CODEPUSH_KEY配置

2. 需在Info.plist檔案配置熱更新key“CodePushDeploymentKey”及熱更新伺服器地址“CodePushServerURL”。

完結。