我已经预编译了我的react-native包并将其上传到我的服务器(假网址):
对于iOS,我可以使用该位置创建一个视图,它可以正常工作:
jsCodeLocation = "http://my-bundle-server.com/index.android.bundle.js";
RCTRootView *rootView = [[RCTRootView alloc]
initWithBundleURL:jsCodeLocation
moduleName:@"MyCoolComponent"
initialProperties:nil
launchOptions:launchOptions];
使用Android它是一个不同的故事,我找不到一种方法可以为远程捆绑定义该路径。我找到了ReactNativeHost
的文档,并试图设置getJSBundleFile
,但它给了我'无法加载文件'http://....js':
返回捆绑文件的自定义路径。这用于案例中 应该从自定义路径加载bundle。默认情况下,它已加载 来自Android资产,来自{@link指定的路径 getBundleAssetName}。例如 “文件://sdcard/myapp_cache/index.android.bundle”
它似乎不适用于远程位置。值得一提的是,我正在Application中创建我的主机,所以我可以在我的应用程序的不同片段中重用它。
如何定义要为Android应用加载的预编译捆绑位置?
答案 0 :(得分:1)
默认实现似乎使用文件系统实现:
但似乎有可能暴露出一个可以在这里加载远程URL的捆绑器(否则dev服务器url如何从localhost- rite加载捆绑包?):
以及面向外部的api来设置自定义的bundleloader:
P.S。我没有尝试过任何上述内容,但似乎可行。
答案 1 :(得分:0)
作为对杰伊回答的跟进, 这是一个远程包的工作实现
ReactInstanceManager.builder()
.setApplication(getApplication())
.setCurrentActivity(this).setJSBundleLoader(
JSBundleLoader.createCachedBundleFromNetworkLoader(
"index.android.bundle",
"http://localhost:8081/index.bundle?platform=android&dev=false&hot=false&minify=false"
)
)
然而,我确实遇到了这个错误:/ TypeError:React.useEffect is not a function 但打包器可以工作并被触发