React-native Android CodePush无法在发布模式下工作

时间:2017-06-22 07:56:58

标签: android react-native redux-saga code-push react-native-code-push

我有一个react-native个应用,包含3个android产品风格,即dev,prod和staging。问题是,当我尝试通过Crashlytics分发应用时,基本上当我构建一个发布已签名的apk文件时,CodePush就会停止工作。我在我的应用中使用redux-saga,我使用react-native-redux-saga包来检查CodePush更新。所有内容都适用于iOS,但不适用于Android,如上所述。

在我的Android项目中,每个产品口味都有strings.xml个文件,如下所示:

<resources>
    <string moduleConfig="true" name="reactNativeCodePush_androidDeploymentKey">_My_CodePush_Key</string>
    <string name="app_name">MyApp Staging</string> 
</resources>

产品口味设置如下:

productFlavors {

        prod {
            versionCode 6
            versionName "1.1"
        }

        staging {
            minSdkVersion 16
            applicationId 'com.myapp.staging'
            versionCode 6
            versionName "1.1"
        }

        dev {
            minSdkVersion 16
            applicationId 'com.myapp.dev'
            versionCode 6
            versionName "1.1"
        }
    }

我的MainApplication.java文件如下所示:

public class MainApplication extends Application implements ReactApplication {

  private final MyReactNativeInstanceHolder mReactNativeHost = new MyReactNativeInstanceHolder(this) {

    @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(),
            // ...Some packages
            new CodePush(getResources().getString(R.string.reactNativeCodePush_androidDeploymentKey), getApplicationContext(), BuildConfig.DEBUG),
            // ...More packages
      );
    }
  };

  @Override
  public void onCreate() {
    CodePush.setReactInstanceHolder(getReactNativeHost());
    super.onCreate();
    Fabric.with(this, new Crashlytics());
  }

  @Override
  public MyReactNativeInstanceHolder getReactNativeHost() {
      return mReactNativeHost;
  }
}

我尝试从BuildConfig.DEBUG包中删除CodePush参数,但问题并没有消失。

MyReactNativeInstanceHolder.java文件如下所示:

public class MyReactNativeInstanceHolder extends ReactNativeHost implements ReactInstanceHolder {
    protected MyReactNativeInstanceHolder(Application application) {
        super(application);
    }

    @Override
    public boolean getUseDeveloperSupport() {
        return false;
    }

    @Override
    protected List<ReactPackage> getPackages() {
        return null;
    }
}

我还检查了CodePush应用的密钥,并且没有任何问题。这个问题真的很奇怪,我真的很想得到一些帮助。有什么我想念的吗?

0 个答案:

没有答案