我已经预编好了我的react本机包,并将它上传到我的服务器(假url):
对于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’的能力”:
返回包文件的自定义路径。这是在包应该从自定义路径加载的情况下使用的。默认情况下,它是从Android资产,从{@link getBundleAssetName}指定的路径加载的。例如"file://sdcard/myapp_cache/index.android.bundle“
它似乎不适用于偏远地区。值得一提的是,我正在应用程序中创建我的主机,这样我就可以在我的应用程序的不同片段中重用它。
如何为Android应用程序定义预编译的包位置以加载?
发布于 2018-03-18 05:33:24
默认实现似乎使用文件系统实现:
但是,似乎有可能公开一个可以在此加载远程url的绑定程序(否则,dev server url如何从localhost加载包?):
在这里,与外部面向api一起设置自定义的bundleloader:
我没有试过以上任何一种方法,但似乎是可行的。
发布于 2021-03-27 15:20:42
作为Jay答案的后续,下面是一个远程包的工作实现
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,但是绑定器可以工作,并被触发。
https://stackoverflow.com/questions/49204337
复制相似问题