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


167

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

間違い

そしてそれを解決する方法を見つけることができませんでした。パッケージャを再起動し、デバイスを再接続して、react Nativeを再インストールして新しいプロジェクトを開始してみました。6.0.0以降のバージョンでは問題なく動作します。


1
実行後にこのエラーが発生しましたreact-native run-androidか?この場合、エラーが発生します。これは、デバッグモードでは、パッケージサーバーに接続することになっているため、JSバンドルafaikは必要ないためです。
Ryan H.

同じ問題の答えをここに投稿しました:stackoverflow.com/a/45110063/706798
Anton

これと同じエラーメッセージが表示されますが、iOS用です。誰かアドバイスはありますか?「react-native run-ios」を実行してみましたが、XCodeが外部ドライブにあるため、機能しません。
ryanwebjackson

回答:


145

このための考えられる解決策は、最初にアプリケーションをバンドルせず、次の手順を実行してから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に置くことができます。これは、react-nativeの今後のリリースで修正され、最終的な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/"
  },

または言及されているようにカール相当ですが、ほとんどの場合、上記はより堅牢です


4
はい、動作します!!! 私は何をしましたか?なぜカール?また、これは自動化できますか?
Zygro

私のアプリはReactネイティブバンドルをリンクしていないので、どうもありがとう。
GeekHades

3
これはハックのようです。JavaScriptを1つのファイルにパッケージ化している場合、開発中にアプリを実行しているときにライブの再読み込み機能を利用できませんか?
Liron Yahdav

2
これは開発用ではなく、実際のAPKパッケージ用です
tbo

まだエラーが発生しているのに何も起こらない:-com.facebook.react.devsupport.JSException:BatchedBridgeを取得できませんでした。バンドルが正しくパッケージ化されていることを確認してください
Dinesh R Rajput

110

私もこの問題に出くわしました。私がやったことは私のデバイス上のアプリを強制終了することでした、そして私は別のコンソールを開いて実行しました

react-native start

その後、デバイスからアプリを再度開いたところ、再び動作し始めました。

編集:USB経由でAndroidデバイスを使用していて、プラグを抜いた場合、またはコンピューターがスリープ状態になった場合は、最初に実行する必要があります

adb reverse tcp:8081 tcp:8081

5
これはを使用するときの私の問題を解決しましたreact-native run-androidreact-native start私が使用しているときは、使用する必要はありませんでしたreact-native run-ios
Dylan Pierce

2
これはうまくいきましたが、なぜこれが起こっているのですか?これは修正されますか?常に2つのターミナルを開く必要があり、デバイスで実行する前に最初に「開始」する必要がありますか?
マルコ2017

それも私のために働きます!解決策を見つけるために何時間も費やした
dtjmsy 2017年

adb reverse tcp:8081 tcp:8081私にはそれで十分でした。どうもありがとう!
ダリウス

./adb installを実行できるようになった後は、これはすばらしいことです
Faris Rayhan

27

このエラーが発生しました。ここで私が修正したものです:を選択Dismissし、[開発者]メニューに移動してからDev Settings、[選択]を選択しDebug server host & port for device、コンピューターのIPアドレスとポートを追加しました192.168.0.xx:8xxx。ポートは通常:8081

これをしたら、すべてうまくいきました。また、あなたはDEVメニューにいる間は、選択するために覚えているEnable Live Reloadし、Debug JS Remotelyデバッグ中にそれが簡単にあなたの人生はずっと、ずっとます。


動作します!ubuntuユーザーの場合:を実行しifconfig、次にinet addr:xxx.xxx.xxx.xxxを見つけます。ここで、xxx *は開発者のマシンのIPです
。– henggana

これは、APIレベル19 /キットカット4.4に私のために働いた、参照stackoverflow.com/questions/31525431/...facebook.github.io/react-native/docs/...
マイケル・リボン

ありがとうございました!USBケーブルなしで(WiFi ADBなどのツールを使用して)デバッグする場合にのみ、この構成を行う必要があります。
Fidan Hakaj

4
Androidデバイスを物理的に振ることにより、@ cubeが上記で参照する開発者メニューを作成できることに注意することが重要です。それは奇妙に思えるかもしれませんが、それがそれをもたらすでしょう。次に、残りの指示に従います。これで解決しました。
flyingace

22

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

ファイル名を指定して実行adb reverse tcp:8081 tcp:8081内部\Android\sdk\platform-tools


1
このコマンドのどこを実行することができ、プラットフォームのツールでbに持っていけない
goldylucks

1
私はそのreact-native run-androidコマンドを実行しようとすることを発見しpathplatform-toolsパスを含むWindows環境変数に依存しています。
straya 2016

1
ありがとう、これでうまくいきました。PATHはC:\ Users \ USERNAME \ AppData \ Local \ Android \ sdk \ platform-tools
chazefate

いいえ、Windows 10とAndroidエミュレーターでは機能しません
pixel

16

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

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

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


これは文字通り繰り返しであり、私が上で(8月に)言ったことを逐語的に表現します
キューブ

3
デバイスを振る必要があることを知りませんでした。まず、コメントとして投稿しますが、そのためのポイントが足りません。私はあなたの投稿に賛成票を投じました。
Richh94 2016

最もシンプルでクリーンなソリューション。ありがとう!
callOfCode 2017年

7

解決策がどれもうまくいかない場合は、これを試してください:

私の<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、アプリが再び機能し始めました。

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


何が起こっているのかを明確にするために、reactネイティブを既存のプロジェクトに統合する場合、バンドル出力パスは自動的に設定されないため、自分で設定する必要があります。したがって、バンドル出力path = / path / to / assets?
robsstackoverflow 2017年

あなたは最高です。
robsstackoverflow

7

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

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

アプリケーション端末:

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

1
おそらく、回答を拡張して、回答の個々のステップが何を意味するか、コマンドを実行する必要があるディレクトリなどについて、さらに詳細を含めることができますか?私はそれがあなたの答えをはるかに役に立てると思います。
niels

これは正しい答えです。これにより、変更ごとにバンドルを再パッケージ化する必要がなく、reactネイティブサーバーに接続することで、すばやく反復できます。
Joshua Pinter 2017

6

手遅れですが、これは本当に私にとってはうまくいきます。

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

最初のコマンドはapkAndroid用にビルドし、接続されている場合はデバイスにデプロイします。アプリを開くと、エラーのある赤い画面が表示されます。次に、パッケージャーを実行してApp Bundleをビルドする2番目のコマンドを実行します。


5

ターミナルでこのコマンドを試してから、リロードしてください。それは私のために働いた

adbリバースtcp:8081 tcp:8081


5

問題を参照してください:

1.react-nativeスタート

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


5
  1. Genymotionを再起動します
  2. 走る react-native run-android
  3. 問題は解決しました

まじ?実際に?restart the genymotion?タイハタネズミ。
ミハル

これは、「Webサイトが機能しない場合は、サーバーを再起動してみてください」と言うようなものです。
ミハル

4

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

私は.buckconfigファイルを開いて行を変更しました:

target = Google Inc.:Google APIs:23

target = Google Inc.:Google APIs:24

SDK Managerで、Android 6.XのAPIレベルが24であることがわかりました。


3

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


3

Android 5.0未満を使用しているため、デフォルトのadb reverse方法は使用できませんが、Facebookは、Wi-Fi経由で開発サーバーに接続するための公式ドキュメントを追加しました。MacOSの説明を引用していますが、LinuxとWindowsの説明もあります。

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

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

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

ノートパソコンとスマートフォンが同じWi-Fiネットワーク上にあることを確認してください。デバイスでReact Nativeアプリを開きます。エラーのある赤い画面が表示されます。これはOKです。次の手順で修正します。アプリ内デベロッパーメニューを開きます。Dev Settings→Debug server host for deviceに移動します。マシンのIPアドレスとローカル開発サーバーのポートを入力します(例:10.0.1.1:8081)。[開発]メニューに戻り、[JSの再読み込み]を選択します。


3

この問題は「ランダムに」発生し、私のシナリオの何が悪いのかを理解するのに時間がかかりました。

React-native-cli 2.0.1に更新した後、根本的な原因を掘り下げて見つけるのに役立つメッセージがログに出力されました。

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

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

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

私はWindowsを使用しているので、netstatを実行したところ、私のVLCプレーヤーもポート8081で実行されていて、問題の原因であることがわかりました。したがって、私の場合、反応ネイティブサーバーの前にvlcサーバーを起動した場合、動作しません。

この同じログメッセージは、以前のバージョンのreact-native-cliでは出力されなかったため、警告なしに失敗しました。

TL、DR:パッケージマネージャーと同じポートで実行されているものがあるかどうかを確認します(デフォルトでは8081)。


2

私の問題は、AndroidManifest.xmlファイルを調べて行を削除したことでした

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

私のアプリはインターネットを必要としないので。ただし、reactネイティブデバッグアプリには、(パッケージャーにアクセスするための)インターネットアクセスが必要です。:)


1
あなたが私の日を救った男。:)
クリストフ・カディラック2017

2

キャッシュを消去してみてください

react-native start --reset-cache


2

実行時に次のエラーがないか確認してください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(Homebrew)を指していました

そして、両方がポイントされた後に問題が修正されました/Users/sd/Library/Android/sdk/platform-tools/adb(Android SDK)


1

私もこのエラーを受け取りました。本当に混乱しています。すべての答えは機能しません。パスにadbを追加した直後。


1

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


1

使用していたポート(デフォルトでは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

私のやり方は:

react-native start

その後、デバイスを使用して:

click to Reload.

コンソールのreact-nativeを参照してください。jsバンドルデータがフェッチされます。


端末が起動していなかったので、これは私の問題でした。よろしくお願いします!
Nicolas Leucci 2017

1

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

いくつかの調査の後、react-native init AwesomeProject(react native docsのすべての設定を使用)で新しいプロジェクトを開始する方がよいことがわかりました。次に、次のコマンドを実行します。

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

私にとって問題は「adb」が認識されなかったことでした- この回答を確認してください。

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


これはコメントにすぎません。ただし、リンクされた回答の最後の行をここに貼り付けると、これが有効な回答になります。そうしないと、この回答が削除される可能性があります。
Amit Joshi

1

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

いくつかの簡単な手順で問題が解決しました:

次のコマンドを使用してサンプルプロジェクトを作成しました。

react-native init ReactProject1

解決

修正はと同じようにlocal-cli\runAndroid\adb.jsを見つけるのを助けることですadb.exelocal-cli\runAndroid\runAndroid.jsです。

プロジェクト名の下の置換ステートメントを見つけます(あなたが与えたものは何でも)\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バンドルがデバイスのローカルにインストールされます。(成功した)


0

私は上記/以下の提案の多くを試しましたが、最終的に私が直面した問題は、以前に自作でインストールしたwatchmanの権限に関するものでした。エミュレーターを使用しようとしているときに端末メッセージを確認し、エミュレーターでこの「BatchedBridgeを取得できませんでした」メッセージと一緒にウォッチマンに関して「Permission denied」エラーが発生した場合は、次のようにします。

/Users/<username>/Library/LaunchAgentsディレクトリに移動し、アクセス許可の設定を変更して、ユーザーが読み書きできるようにします。これは、実際com.github.facebook.watchman.plistにそこにファイルがあるかどうかには関係ありません。


0

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

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

アプリケーションが正しく実行されるようにします。


0

同じ問題が発生しましたが、それは私自身からの愚かな間違いでした...

Android studioから、installDebug/installReleasegradleスクリプトをappprojetではなくrootprojet から起動していました。


0

最も簡単な方法!

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

よろしくお願いします!


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.