Android中自定义网址的React-native jsbundle

时间:2017-03-21 08:16:35

标签: android swift react-native

我最近发现了如何更改iOS中AppDelegate.swift中的jsBundle URL,以便我可以下载自己的jsBundle并在应用启动时使用它:

bundleLocation = URL(string: "http://www.example.com/myJsBundle.js")!

let rootView = RCTRootView(bundleURL: bundleLocation, moduleName: "ReactApp", initialProperties: nil, launchOptions:launchOptions)

self.bridge = rootView?.bridge

self.window = UIWindow(frame: UIScreen.main.bounds)
let rootViewController = UIViewController()

rootViewController.view = rootView

self.window!.rootViewController = rootViewController;
self.window!.makeKeyAndVisible()

return true

当我现在想要在Android项目中执行相同操作时,我打开MainApplication.java文件并查看此代码:

public class MainApplication extends Application implements ReactApplication {

  private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
    @Override
    public boolean getUseDeveloperSupport() {
      return BuildConfig.DEBUG;
    }

    @Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
          new MainReactPackage()
      );
    }
  };

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

  @Override
  public void onCreate() {
    super.onCreate();
    SoLoader.init(this, /* native exopackage */ false);
  }
}

我现在的问题是,我在哪里以及如何为Android中的jsBundle定义自定义网址?

1 个答案:

答案 0 :(得分:2)

这取决于预期用途是用于调试还是用于生产:

<强>调试

有关如何切换urlport for android的信息,请参阅connecting-to-the-development-server

<强>生产

据我所知,您需要首先下载该捆绑包,然后在getJSBundleFile实例上使用重写方法ReactNativeHost(根据问题中提供的代码段创建)

@Override
protected String getJSBundleFile() {
  return pathToBundleFileDownloaded; // change this
}

如果预期用途是用于制作,我建议查看一些提供此类功能的库。 CodePush是一个很好的例子,是免费的。