更改react-native项目中android和ios的入口文件path
使用react-native init awesomeProject启动一个新项目后,我尝试重新构build项目,将index.ios.js和index.android.ios放入一个名为src的公用文件夹中。
当我执行react-native run-android时 ,出现以下错误:
在Android设备上的错误
在哪里我必须改变,以正确的path反应原生search条目文件?
我已经使用了反应原生0.35的以下步骤
为了发展,你需要打开一个文件
MyProject/android/app/src/main/java/com/MyProject/MainApplication.java
并重写一个名为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 }; // ... }
这样,应用程序就会知道从包装服务器获取模块的位置。
对于生产,当您使用cd android && ./gradlew assembleRelease
构buildAPK时,您将不得不修改文件
MyProject/android/app/build.gradle
并添加自定义生成选项,请确保将它们放在apply from: "../../node_modules/react-native/react.gradle"
之前apply from: "../../node_modules/react-native/react.gradle"
行:
apply plugin: "com.android.application" import com.android.build.OutputFile // ... // ADD THE LINES BELOW project.ext.react = [ // the entry file for bundle generation entryFile: "src/index.android.js", ] // ADD THE LINES ABOVE // ... apply from: "../../node_modules/react-native/react.gradle"
不幸的是,我现在没有安装iOS,我还是不能帮你。
感谢Michael的信息! 我做了iOS的情况,并为Android和iOS完成答案。
与Android相同,开发和生产的答案是不同的。
-
开发(debugging模式)
去
AppDelegate.m
将参数
jsBundleURLForBundleRoot
设置为条目文件的path,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];
-
对于生产(发布模式)
对于生产模式,Xcode在生成时生成一个jsbundle文件。 除了我们为debugging模式所做的,我们需要告诉Xcode jsbundle的入口文件。
进入当前目标的“ Build Phases ”标签。 在“ Bundle React Native代码和映像 ”阶段,将您的条目文件追加到shell的末尾
有关如何在iOS上运行开发/产品模式的信息