在react-native项目中更改android和ios的条目文件路径

时间:2016-10-14 18:57:27

标签: java android ios reactjs react-native

在使用 react-native init awesomeProject 启动新项目后,我尝试重构我的项目,将 index.ios.js index.android。 ios 在名为 src 的公共文件夹中。

当我执行 react-native run-android 时,我收到以下错误:

Error on android device

我必须在正确的路径中更改为反应原生搜索条目文件吗?

2 个答案:

答案 0 :(得分:22)

我在react-native 0.35

上使用了以下步骤

对于开发,您需要打开文件

MyProject/android/app/src/main/java/com/MyProject/MainApplication.java

并覆盖名为ReactNativeHost的{​​{1}}方法:

getJSMainModuleName

这样,应用程序就会知道从打包服务器获取模块的位置。

对于制作,当您使用package com.MyProject; // ... public class MainApplication extends Application implements ReactApplication { private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { // ... // ADD THE LINES BELOW @Override protected String getJSMainModuleName() { return "src/index.android"; } // ADD THE LINES ABOVE }; // ... } 制作APK时,您必须修改文件

cd android && ./gradlew assembleRelease

并添加自定义构建选项,请务必将它们放在MyProject/android/app/build.gradle行之前:

apply from: "../../node_modules/react-native/react.gradle"

不幸的是我现在没有设置iOS,但我无法帮助你。

答案 1 :(得分:12)

感谢Michael的信息! 我为iOS做了这个案例,并为Android和iOS提供了完整的答案。

与Android一样,开发和生产的答案也不同。

  1. For Development(调试模式)

    转到AppDelegate.m

    将参数jsBundleURLForBundleRoot设置为条目文件的路径,将moduleName设置为您在RN js中注册的组件。例如,如果我想将条目js文件更改为js / screen / LoginScreen.js并将组件更改为LoginScreen,请执行以下操作:

    jsCodeLocation = [[RCTBundleURLProvider sharedSettings] 
        jsBundleURLForBundleRoot:@"js/screen/LoginScreen"
        fallbackResource:nil];
    rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation                                                
        moduleName:@"LoginScreen"
        initialProperties:nil                                            
        launchOptions:launchOptions];
    
  2. 适用于制作(发布模式)

  3. 对于生产模式,Xcode在构建时生成jsbundle文件。除了我们为调试模式所做的,我们还需要告诉Xcode jsbundle的入口文件。

    转到当前目标的“构建阶段”标签。 在“ Bundle React Native code and images ”阶段,将您的条目文件追加到shell的末尾

    enter image description here

    有关如何在iOS here

    上运行开发/产品模式的信息