web-dev-qa-db-ja.com

React-native Android:AppRegistry.runApplicationの呼び出しエラー

ここで何が起こっているのか本当にわかりません。基本的なアプリをセットアップし、コードシェアリング方式 here を使用しました。それはすべて非常に基本的なので、ここにコードがあります:

// index.Android.js
// index.ios.js
import React, { AppRegistry } from 'react-native';
import CompetitionAgent from './app/index';

AppRegistry.registerComponent('CompetitionAgent', () => CompetitionAgent);

そしてコンポーネント:

//./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',
    }
});

エラーにはさまざまな原因が考えられます。したがって、この基本的なレイアウトでは同じエラーが発生します。

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',
    }
});

スタックトレース:

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) 

Android Studioも再起動しませんでした。

10
DerpyNerd

Android Studioからアプリを実行している場合、reactプロジェクトのフォルダーからreact-native startを使用して、コマンドラインからreact-nativeパッケージャーを起動する必要があります。

Android adb reverse tcp:8081 tcp:8081を使用したポート転送も設定する必要があります。

あなたはそれらをしましたか?

19
YSK

の正しいパスを設定したとき、それは私を助けました

Android_HOME = C:\Users\username\AppData\Local\Android\sdk

とツール:

%Android_HOME%\build-tools
%Android_HOME%\platform-tools
%Android_HOME%\tools
5
ivts

Genymotionエミュレータで2番目のReact Nativeプロジェクトを実行すると、最近同じ問題が発生しました。次のエラーが表示されて赤い画面が表示されました。

AppRegistry.runApplicationの呼び出しエラー

ただし、私の場合、最初に追加したため、これらの環境変数が存在しないことが原因ではありません。また、adb reverse tcp:8081 tcp:8081コマンドも機能しません。私はインターネットで見つけることができるほとんどすべてのソリューションを試しましたが、どれもうまくいきませんでした。

私の場合、ソリューションは以下に示すようにデバッグサーバーのホストとポートに設定されています。

CTRL + Mを押して、設定のオーバーレイを開きます

enter image description here

「Dev Settings」をクリックして、設定メニューに移動します

enter image description here

「デバイスのデバッグサーバーホストとポート」をクリックし、ポップアップにlocalhost:8081と入力します

enter image description here

そして今、あなたはそれをリロードすることができます、それは働き始めるはずです。

このソリューションが一部の人々を助けることを願っています。

背景:

実際、Windows 7 Proで開発環境をセットアップした後、最初のReactネイティブアプリを実行すると、次のエラーが表示されました。

アセット「index.Android.bundle」からスクリプトを読み込めません。バンドルが正しくパッケージ化されていること、またはパッケージサーバーを実行していることを確認してください。

この問題を解決するために、[デバッグサーバー]オプションをlocalhost:8081に設定しました。この設定が仮想デバイスでグローバルに有効になると期待していました。しかし、アプリケーションごとに機能しているようです。つまり、新しいReactネイティブプロジェクトでは、何度も何度も設定する必要があります。

また、Windows 10 Homeで環境をセットアップしました(Windows 7 Proで行ったのとまったく同じ手順に従います)。デバッグサーバーオプションを設定する必要はありません。このようなエラーは発生せず、React何も設定しないネイティブプロジェクト。

2
VincentZHANG

同様の問題がありました。デバイスで実行しようとすると、このエラーが発生します。コンピューターのシミュレーターでは問題なく動作していました。

問題は、私がやるときでしたadb devicesまたはreact-native run-Android「ADBが内部または外部コマンドとして認識されない」と表示されます。

したがって、私の修正は、adb.exeの親ディレクトリへのパスを環境変数に追加してから、コマンドプロンプトを再起動することでした。私がそれをした後、adb devicesは「認識されない内部外部エラー」をスローせず、デバイスがリストされます。その後、react-native run-Androidおよび起動時に、完全に役に立たないエラーメッセージを示す赤い画面がもうありませんError calling AppRegistry.runApplication! :)

だから私はADBが私のフォルダにあることがわかりました:

C:\Users\Noitidart\AppData\Local\Android\sdk\platform-tools\adb.exe

私はWindows 10システムを使用しています。 Noitidartはコンピューターのユーザー名です。

そこで、システム環境変数に移動し、「パス」を見つけて「編集」をクリックし、「新規」をクリックして、「C:\ Users\Mercurius\AppData\Local\Android\sdk\platform-tools」に追加しました。ここにスクリーンショットがあります:

1
Noitidart