Je ne sais vraiment pas ce qui se passe ici. J'ai installé une application de base et utilisé une méthode de partage de code trouvée ici . Tout est très basique, alors voici le code:
// index.Android.js
// index.ios.js
import React, { AppRegistry } from 'react-native';
import CompetitionAgent from './app/index';
AppRegistry.registerComponent('CompetitionAgent', () => CompetitionAgent);
Et le composant:
//./app/index.js
import React, { Component } from 'react';
import {
StyleSheet,
Text,
TextInput,
View
} from 'react-native';
export default class CompetitionAgent extends Component {
constructor() {
super();
this.state = {nickname:''};
}
render() {
return (
<View style={styles.container}>
<View style={styles.information}>
<Text style={styles.welcome}>
Welcome to the Competition Agent Connect app!
</Text>
<Text style={styles.instructions}>
When you are near a Competition Agent, you can join the session.
</Text>
</View>
<View style={{padding:10}}>
<TextInput style={styles.inputStyle} />
</View>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
},
information: {
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
inputStyle: {
flexDirection: 'row',
backgroundColor: '#3E3134',
color: '#FFFFFF',
}
});
Je sais que l'erreur peut être due à plusieurs choses. Cette disposition de base produit donc la même erreur.
import React, { Component } from 'react';
import {
StyleSheet,
Text,
TextInput,
View
} from 'react-native';
export default class CompetitionAgent extends Component {
constructor() {
super();
this.state = {nickname:''};
}
render() {
return (
<View style={styles.container}>
<Text style={styles.information}>
Welcome to the Competition Agent Connect app!
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
},
information: {
alignItems: 'center',
backgroundColor: '#F5FCFF',
}
});
Le stacktrace:
E/unknown:React: Exception in native call
Java.lang.RuntimeException: Error calling AppRegistry.runApplication
at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
at Android.os.Handler.handleCallback(Handler.Java:739)
at Android.os.Handler.dispatchMessage(Handler.Java:95)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.Java:31)
at Android.os.Looper.loop(Looper.Java:158)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.Java:208)
at Java.lang.Thread.run(Thread.Java:818)
Caused by: com.facebook.jni.CppException: Could not get BatchedBridge, make sure your bundle is packaged correctly
at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
at Android.os.Handler.handleCallback(Handler.Java:739)
at Android.os.Handler.dispatchMessage(Handler.Java:95)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.Java:31)
at Android.os.Looper.loop(Looper.Java:158)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.Java:208)
at Java.lang.Thread.run(Thread.Java:818)
Il a très bien fonctionné hier, redémarrant Android Studio n'a pas aidé non plus.
Si vous exécutez votre application à partir de Android Studio, vous devrez démarrer le packager React-Native à partir de la ligne de commande en utilisant react-native start
depuis le dossier de votre projet React.
Vous devrez également configurer la redirection de port Android à l'aide de adb reverse tcp:8081 tcp:8081
.
Les avez-vous fait?
Cela m'a aidé lorsque j'ai mis en place un chemin correct pour
Android_HOME = C:\Users\username\AppData\Local\Android\sdk
et outils:
%Android_HOME%\build-tools
%Android_HOME%\platform-tools
%Android_HOME%\tools
J'ai récemment rencontré le même problème lors de l'exécution d'un second React projet natif dans l'émulateur Genymotion, j'ai eu l'écran rouge avec une erreur disant:
Erreur lors de l'appel de AppRegistry.runApplication
Cependant, dans mon cas, cela n'est pas dû à l'absence de ces variables d'environnement, comme je les ai ajoutées au tout début. Et la commande adb reverse tcp:8081 tcp:8081
Ne fonctionne pas non plus pour moi. J'ai essayé presque toutes les solutions que je pouvais trouver sur Internet, et aucune n'a fonctionné.
Dans mon cas, la solution est définie l'hôte et le port du serveur de débogage, comme indiqué ci-dessous:
Appuyez sur CTRL + M
, Pour ouvrir la superposition de réglage
Cliquez sur "Paramètres de développement" pour accéder au menu des paramètres
Cliquez sur 'Debug Server Host & port for device' et tapez localhost:8081
Dans la fenêtre contextuelle
Et maintenant vous pouvez simplement le recharger, il devrait commencer à fonctionner.
J'espère que cette solution peut aider certaines personnes.
Contexte:
En fait, après avoir configuré mon environnement de développement sur Windows 7 Pro, lorsque j'ai exécuté ma première React application native, j'ai eu une erreur qui dit:
Impossible de charger le script à partir de l'index des actifs.Android.bundle. Assurez-vous que votre bundle est correctement emballé ou que vous exécutez un serveur de packages.
Pour résoudre ce problème, j'ai défini l'option Serveur de débogage sur localhost: 8081 et je m'attendais à ce que le paramètre prenne effet globalement sur le périphérique virtuel. Mais cela semble fonctionner par application, ce qui signifie que je dois le définir encore et encore pour les nouveaux projets React Native).
J'ai également configuré l'environnement sur Windows 10 Home (en suivant exactement la même procédure que je l'ai fait sur Windows 7 Pro), inutile de définir l'option de serveur de débogage, cela ne me donne pas de telles erreurs, et je peux simplement exécuter n'importe quel React Projet natif sans rien définir.
J'avais un problème similaire. J'obtiendrais cette erreur en essayant de le faire fonctionner sur l'appareil. Cela fonctionnait bien sur mes simulateurs sur mon ordinateur.
Le problème était quand je ferais adb devices
ou react-native run-Android
J'obtiendrais "ADB n'est pas reconnu comme une commande interne ou externe".
Mon correctif a donc été d'ajouter le chemin d'accès au répertoire parent d'adb.exe à mes variables d'environnement, puis de redémarrer mes invites de commande. Après avoir fait ça, adb devices
ne lancerait pas le "blah externe interne non reconnu" et il a répertorié mon appareil. J'ai ensuite couru react-native run-Android
et au démarrage plus d'écran rouge affichant le message d'erreur complètement inutile Error calling AppRegistry.runApplication
! :)
J'ai donc trouvé que ADB se trouvait dans mon dossier:
C:\Users\Noitidart\AppData\Local\Android\sdk\platform-tools\adb.exe
Je suis sur un système Windows 10. Noitidart est mon nom d'utilisateur de l'ordinateur.
Je suis donc allé dans System Environemnt Variables, puis j'ai trouvé "Path" puis j'ai cliqué sur "Edit", puis j'ai cliqué sur "New" et j'ai ajouté dans "C:\Users\Mercurius\AppData\Local\Android\sdk\platform-tools". Voici une capture d'écran: