web-dev-qa-db-ja.com

アプリ起動時のエラー「BatchedBridgeを取得できませんでした。バンドルが正しくパッケージされていることを確認してください」

Android 4.4.2で反応ネイティブプロジェクトを作成しようとしていますこのエラー画面が表示される

said error

そしてそれを解決する方法を見つけることができませんでした。私はpackagerを再起動して、デバイスを再接続しても反応ネイティブを再インストールして、そして新しいプロジェクトを始めさえしました。 6.0.0以降のバージョンでは、それはうまく働きます。

155
Zygro

これに対する可能な解決策は、おそらく最初にアプリケーションをバンドルしないで、次のステップを実行してからapp-debug.apkをデバイスにデプロイすることです。

$ cd myproject  
$ react-native start > /dev/null 2>&1 &  
$ curl "http://localhost:8081/index.Android.bundle?platform=Android" -o "Android/app/src/main/assets/index.Android.bundle"

(フォルダassetsが存在しない場合は作成します)

それからプロジェクトルートから実行

$> (cd Android/ && ./gradlew assembleDebug)

作成したapkをあなたのデバイスに、次の場所からインストールします。Android/app/build/outputs/apk/app-debug.apk

それであなたの問題が解決するかどうか私に知らせて

_編集_

自動化するためのスクリプトとしてあなたのpackage.jsonにそれを単に置くことができます、私はそれが将来のAPKを組み立てる前に実行されるので、私はそれが必要ではないことを同様に)

置く:

"scripts": {
    "build": "(cd Android/ && ./gradlew assembleDebug)",
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "bundle-Android": "react-native bundle --platform Android --dev false --entry-file index.Android.js --bundle-output Android/app/src/main/assets/index.Android.bundle --sourcemap-output Android/app/src/main/assets/index.Android.map --assets-dest Android/app/src/main/res/"
  },

または、前述のように同等のカールですが、ほとんどの場合、上記のほうが堅牢です。

141
tbo

私もこの問題に遭遇しました。私がしたのは、自分のデバイスでアプリを強制終了してから、別のコンソールを開いて実行したことです。

react-native start

それから私は自分のデバイスから再びアプリを開くと、それは再び働き始めました。

編集:あなたがUSB経由でAndroidデバイスを使用していて、それを抜いているか、あなたのコンピュータがスリープ状態になった場合、あなたは最初に実行しなければならないかもしれません

adb reverse tcp:8081 tcp:8081
107
Felipe

このエラーが発生しました。ここで私が修正したのは、私がDismissを選んだ、それからDev Settingsを選び、Debug server Host & port for deviceを選び、私は私のコンピューターのIPアドレスとポートを追加した:192.168.0.xx:8xxx、あなたのwifiネットワーク上のIPアドレスを割り当てた開発者のマシンを使うポートは通常:8081です

私がこれをしたら、すべてはうまくいった。また、devメニューでEnable Live ReloadDebug JS Remotelyを選択するのを忘れないでください。それはデバッグ中あなたの生活をずっとずっと簡単にします。

27
cube

これは私のために働いたものです(私が見つけた他のすべての解決策を試した後...):

adb reverse tcp:8081 tcp:8081内で\Android\sdk\platform-toolsを実行する

22
Chaim Salzer

物理デバイスを使用してReact Nativeを初めて起動したときにもこれが発生しました。その場合は、始める前にいくつか追加の作業を行う必要があります。開発マシンに関する情報をReact Nativeの 'Dev Settings'に入力する必要があります。

エラーが表示されたら、 端末を振ってください 。ダイアログがポップアップし、最後のオプションは 'Dev Settings'になります。 [デバイスのサーバーホットポートとポートのデバッグ]を選択し、ローカルIPと使用されているポート(通常は8081)を入力します。

https://facebook.github.io/react-native/docs/running-on-device-Android.html の最後の段落を参照してください。

16
Richh94

解決策のどれもあなたのためにうまくいかない場合これを試してみてください。

<root>/Android/app/build/intermediates/assets/debugフォルダが空で、cd Android && ./gradlew assembleDebugを実行しても必要なファイルが作成されていないことがわかりました。これらのファイルは、後からネイティブのネイティブアプリケーションのJavaScriptスレッドで使用されます。

Debug buildコマンドで作成したはずの次のコマンドを手動で実行しました。

node node_modules/react-native/local-cli/cli.js bundle --platform Android --dev true --reset-cache --entry-file index.Android.js --bundle-output /<path to dir>/Android/app/build/intermediates/assets/debug/index.Android.bundle --assets-dest /<path to dir>/Android/app/build/intermediates/res/merged/debug

これらのコマンドを実行した後、このディレクトリに2つのバンドルファイルが見つかりました<root>/Android/app/build/intermediates/assets/debug

それから私は再び走ったcd Android && ./gradlew installDebug私のアプリは再び働き始めました。

もっとデバッグし、実際に失敗しているものを更新します。

7
Sumit Kushwaha

separate 端末で、デバイスをコンピュータに接続して次のコマンドを実行します。

react-native start 
cd user/Library/Android/sdk/platform-tools/
./adb reverse tcp:8081 tcp:8081

アプリケーション terminal:

react-native run-Android 
install apk on your device from this location Android/app/build/outputs/apk/app-debug.apk
7

それは少し遅すぎますが、これは本当に私のために働きます。

  1. react-native run-Android
  2. react-native start

最初のコマンドはAndroid用のapkを構築し、接続されていればそれをあなたのデバイスにデプロイします。あなたがアプリを開くと、それはエラーで赤い画面が表示されます。それからpackagerを実行し、あなたのためにアプリバンドルを構築する2番目のコマンドを実行します。

5
Shamsher
  1. genymotionを再開する
  2. react-native run-Androidを実行
  3. 問題は解決しました
5
Yang

端末でこのコマンドを試してから、再ロードしてください。それは私のために働いた

adb reverse tcp:8081 tcp:8081

5
Praneeth

を見てください

1.ネイティブネイティブ起動

2.デバイスのReload(R,R)をクリックします。

5
XYz Amos

デバイスZ3 Compact D5803 - 6.0.1でも同じ例外が発生しました

.buckconfigファイルを開いて次の行を変更しました。

target = Google Inc.:Google APIs:23

target = Google Inc.:Google APIs:24

私はAndroid 6.XがAPIレベル24を持っていることをSDKマネージャで見たので。

4
laszl0

私にとっては、adbPATHに含まれていなかったからです。それは私にとっては/Users/man/Library/Android/sdk/platform-toolsにあります。あなたにとっては他の場所にあるかもしれませんが、とにかくそれを見つけてあなたのパスに追加して助けになるかどうかを確かめてください。

3
h--n

Android <5.0を使用しているので、デフォルトのadb reverseメソッドを使用できませんが、Facebookは Wi-Fi経由で開発用サーバーに接続するための公式文書 を追加しました。 MacOS用の命令を引用していますが、LinuxとWindows用の命令もあります。

方法2:Wi-Fi経由で接続する

Wi-Fiを介して開発サーバーに接続することもできます。最初にUSBケーブルを使用してアプリをデバイスにインストールする必要がありますが、それが完了したら、次の手順に従ってワイヤレスでデバッグできます。先へ進む前に、開発マシンの現在のIPアドレスが必要です。

IPアドレスはシステム環境設定→ネットワークで確認できます。

ラップトップと電話が同じWi-Fiネットワークに接続されていることを確認してください。デバイスでReact Nativeアプリを開きます。エラーのある赤い画面が表示されます。大丈夫です。次の手順でそれを解決します。アプリ内の[開発者]メニューを開きます。デバイスのDev Settings→Debug server hostに移動します。あなたのマシンのIPアドレスとローカルのdevサーバのポート(例:10.0.1.1:8081)を入力してください。 「開発者」メニューに戻り、「Reload JS」を選択します。

3
Jesús Carrera

それはこの問題を「ランダムに」持っていて、私のシナリオで何が間違っていたのかを理解するのにしばらく時間がかかりました。

React-native-cli 2.0.1にアップデートした後、ログにメッセージが出力され、Digを実行して根本的な原因を突き止めるのに役立ちました。

JSサーバーが認識されず、ビルドを続行しています...

いくつかのリンクを調べた後、私はこれを見つけました:

JSサーバーを認識できません

私はWindowsを使っているので、netstatを実行し、私のVLCプレーヤーもポート8081で動作していて問題を引き起こしていることがわかりました。だから、私の場合は、私が反応ネイティブサーバの前にvlcサーバを起動したとしてもそれはうまく行かないでしょう。

これと同じログメッセージが以前のバージョンのreact-native-cliでは出力されず、黙って失敗しました。

TL、DR:パッケージマネージャと同じポートで何か動いているものがあるかチェックします(デフォルトは8081)

私の問題は私が私のAndroidManifest.xmlファイルを見て行を削除したことです

<uses-permission Android:name="Android.permission.INTERNET" />

私のアプリはインターネットを必要としませんので。しかし、反応ネイティブデバッグアプリは(パッケージャにアクセスするために)インターネットアクセスを必要としません。 :)

2
SpencerL

私たちのほとんどは、ネイティブプロジェクト#1に反応し始めたときに初めてこの問題に直面します。

私の問題を解決した簡単なステップはほとんどありませんでした。

私はコマンドを使用してサンプルプロジェクトを作成しました:react-native init ReactProject1

解決策

修正は、local-cli\runAndroid\runAndroid.jsと同じ方法で、local-cli\runAndroid\adb.jsがadb.exeを見つけるのを助けることです。

projectname(あなたが与えたものは何でも)の下にreplaceステートメントを見つけます。\ node_modules\react-native\local-cli\runAndroid

交換してください:

const devicesResult = child_process.execSync( 'adb devices');

投稿者:

const devicesResult = child_process.execSync((process.env.Android_HOME?process.env.Android_HOME + '/ platform-tools /': '')+ 'adb devices');

上記の置き換えを行った後、cmdでreact-native run-Androidを実行すると、apkがバンドルされ、まずjs bundleをデバイスにローカルにインストールしようとします。 (成功しました)

1
DeepakPanwar

使用していたポートを開く必要がありました(デフォルトは8081)。 Linuxでは、次のことができます。

Sudo iptables -A INPUT -p tcp --dport 8081 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
Sudo iptables -A OUTPUT -p tcp --sport 8081 -m conntrack --ctstate ESTABLISHED -j ACCEPT

実際にこれを行う必要があるかどうかを確認するためにテストすることができます。 AndroidデバイスのChromeで開発サーバーに移動するだけです。それが応答しない場合は、これはあなたが必要なものかもしれません。それが反応するならば、これはあなたを助けません。

1
Anthony Naddeo

react-native run-Androidを実行すると、次のエラーがあるかどうか確認してください。adb server version (XX) doesn't match this client (XX); killing...

その場合、/usr/local/opt/Android-sdk/platform-tools/adb/usr/local/bin/adbが同じadbを指していることを確認してください。

私の場合、1つは/Users/sd/Library/Android/sdk/platform-tools/adb(Android SDK)を指していましたが、もう1つは/usr/local/Caskroom/Android-platform-tools/26.0.2/platform-tools/adb(自作)を指していました

そして両方が/Users/sd/Library/Android/sdk/platform-tools/adbを指した後に問題は修正されました(Android SDK)

1

私にとっては、サイドシンクを有効にしてアクティブにしていました。それを閉じることは即座に問題を解決しました。 PCとデバイス間のこれまたは他の通信を閉じる価値があるかもしれません

1
lee_dabiker

私は同じ問題を抱えていました。私が反応ネイティブプロジェクトを作成したとき create-react-native-app AwesomeProject それは電話で万博のアプリでうまくいった。その後、私は自分のプロジェクトを開発するためにそのクイックスタートプロジェクトを使いたかったし、あなたと同じエラーを受けました。

いくつかの調査の結果、私は新しいプロジェクトを始めることがより良いことがわかりました。 反応ネイティブinit AwesomeProject (すべての設定を反応ネイティブドキュメントで)それからこのコマンドを実行してください:

react-native bundle --platform Android --dev false --entry-file index.Android.js --bundle-output Android/app/src/main/assets/index.Android.bundle --assets-dest Android/app/src/main/res/

これでバンドルの問題は解決するはずです(--dev falseは警告を表示しません)

仮想/実デバイス上でアプリを実行するために必要なことは、次のとおりです。

react-native run-Android

そしてそれはうまく働いているはずです。少なくともそれは私のために働いた。

1

私もこのエラーに遭遇しました、本当に混乱しています。 cuzすべての答えはうまくいきません。パスに adb を追加した直後。

1
Bruce Lee

私にとって問題は 'adb'が認識されなかったことでした - check this answer。

これを修正するには、環境変数にC:\ Users\USERNAME\AppData\Local\Android\sdk\platform-toolsを追加します。

1
niceman

私のやり方は:

react-native start

その後、あなたのデバイスで以下を使用します。

click to Reload.

コンソールreact-nativeを見てください、それはjsバンドルデータを取得するでしょう。

1
ThienSuBS

システムまたはバンドル全体を再起動するだけで問題が解決する可能性があります。

0
Vinayak Gupta

キャッシュをきれいにしよう

react-native start --reset-cache

0
Hitesh Sahu

私も追加する必要があることがわかりました

反応ネイティブアップグレード

アプリケーションを正しく実行するために。

0
M. Solle

私は上記/下記の提案の多くを試してみましたが、結局のところ、私が直面した問題は、先に自作を使ってインストールされたwatchmanの許可に関するものでした。エミュレータを使用しようとしているときに端末のメッセージを見て、エミュレータでこの「BatchedBridgeを取得できませんでした」というメッセージと共にwatchmanに関する「権限が拒否されました」というエラーが発生した場合

あなたの/Users/<username>/Library/LaunchAgentsディレクトリに行き、あなたのユーザが読み書きできるようにパーミッション設定を変更してください。これは、あなたが実際にそこにcom.github.facebook.watchman.plistファイルを持っているかどうかには関係ありません。

0
alexfigtree

最も簡単な方法!

  • サーバーを停止してプロジェクトのビルドを終了します。
  • 'Node.js'ターミナルを開きます。
    • 「react-native」プロジェクトのあるフォルダに移動します。
    • 「react-native start」と入力します - 反応ネイティブサーバーを手動で起動します。
  • コードエディタターミナルに移動し、「react-native run-Android」と入力します。

行ってよかった!

0
Jason

私は同じ問題を抱えていたが、それは私自身からのばかげた間違いだった….

Android studio から、app projetの代わりにroot projetからinstallDebug/installRelease gradleスクリプトを起動していました。

0
Martin Choraine