1

我有一个react-native具有 3android种产品风格的应用程序,即 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应用程序的密钥,那里没有任何问题。这个问题真的很奇怪,我真的很想得到一些帮助。有什么我想念的吗?

4

0 回答 0