我最近发现了如何更改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定义自定义网址?
答案 0 :(得分:2)
这取决于预期用途是用于调试还是用于生产:
<强>调试强>
有关如何切换url
和port
for android的信息,请参阅connecting-to-the-development-server。
<强>生产强>
据我所知,您需要首先下载该捆绑包,然后在getJSBundleFile
实例上使用重写方法ReactNativeHost
(根据问题中提供的代码段创建)
@Override
protected String getJSBundleFile() {
return pathToBundleFileDownloaded; // change this
}
如果预期用途是用于制作,我建议查看一些提供此类功能的库。 CodePush是一个很好的例子,是免费的。