Cambiar la ruta del archivo de entrada de android y ios en el proyecto reactivo-nativo

Después de iniciar un nuevo proyecto con react-native init awesomeProject , intento reestructurar mi proyecto, poniendo index.ios.js e index.android.ios dentro de una carpeta común llamada src .

Cuando ejecuto reaccionar-nativo run-android , consigo el siguiente error:

Error en el dispositivo Android

¿Dónde debo cambiar para reaccionar-búsqueda nativa de archivos de entrada en el camino correcto?

He utilizado los siguientes pasos en react-native 0.35

Para el desarrollo es necesario abrir un archivo

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

y anular un método de ReactNativeHost llamado 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 }; // ... } 

De esta manera, la aplicación sabrá dónde recoger el módulo desde un servidor empaquetador.

Para la producción, cuando usted construye su APK usando cd android && ./gradlew assembleRelease tendrá que modificar un archivo

MyProject/android/app/build.gradle

y agregar opciones de compilación personalizadas, asegúrese de colocarlas antes de apply from: "../../node_modules/react-native/react.gradle" línea:

 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" 

Lamentablemente no tengo configuración de iOS en este momento, no puedo ayudarte con eso todavía.

Gracias por la información de Michael! Hice el caso de iOS y hacer la respuesta completa para Android e iOS.

Como lo mismo que Android, las respuestas para el desarrollo y la producción son diferentes.

  1. Para el desarrollo (modo de depuración)

    ir a AppDelegate.m

    establezca el parámetro jsBundleURLForBundleRoot como la ruta del archivo de entrada y moduleName como el componente registrado en RN js. Por ejemplo, si quiero cambiar el archivo js de entrada a js / screen / LoginScreen.js y el componente a LoginScreen, haga lo siguiente:

     jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"js/screen/LoginScreen" fallbackResource:nil]; rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation moduleName:@"LoginScreen" initialProperties:nil launchOptions:launchOptions]; 
  2. Para la producción (modo de liberación)

para el modo de producción, Xcode genera un archivo jsbundle mientras se construye. Además de lo que hicimos para el modo de depuración, necesitamos decirle a Xcode el archivo de entrada de jsbundle.

vaya a la pestaña " Fases de construcción " del destino actual. en la fase " Reagir código nativo e imágenes ", agregue su archivo de entrada al final de la shell

introduzca la descripción de la imagen aquí

Información sobre cómo ejecutar el modo de desarrollo / producción en iOS aquí

  • Reaccionar Native Memory Leakage Animation Issue
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.