Android 4.4.2で反応ネイティブプロジェクトを作成しようとしていますこのエラー画面が表示される
そしてそれを解決する方法を見つけることができませんでした。私はpackagerを再起動して、デバイスを再接続しても反応ネイティブを再インストールして、そして新しいプロジェクトを始めさえしました。 6.0.0以降のバージョンでは、それはうまく働きます。
これに対する可能な解決策は、おそらく最初にアプリケーションをバンドルしないで、次のステップを実行してから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/"
},
または、前述のように同等のカールですが、ほとんどの場合、上記のほうが堅牢です。
私もこの問題に遭遇しました。私がしたのは、自分のデバイスでアプリを強制終了してから、別のコンソールを開いて実行したことです。
react-native start
それから私は自分のデバイスから再びアプリを開くと、それは再び働き始めました。
編集:あなたがUSB経由でAndroidデバイスを使用していて、それを抜いているか、あなたのコンピュータがスリープ状態になった場合、あなたは最初に実行しなければならないかもしれません
adb reverse tcp:8081 tcp:8081
このエラーが発生しました。ここで私が修正したのは、私がDismiss
を選んだ、それからDev Settings
を選び、Debug server Host & port for device
を選び、私は私のコンピューターのIPアドレスとポートを追加した:192.168.0.xx:8xxx
、あなたのwifiネットワーク上のIPアドレスを割り当てた開発者のマシンを使うポートは通常:8081
です
私がこれをしたら、すべてはうまくいった。また、devメニューでEnable Live Reload
とDebug JS Remotely
を選択するのを忘れないでください。それはデバッグ中あなたの生活をずっとずっと簡単にします。
これは私のために働いたものです(私が見つけた他のすべての解決策を試した後...):
adb reverse tcp:8081 tcp:8081
内で\Android\sdk\platform-tools
を実行する
物理デバイスを使用してReact Nativeを初めて起動したときにもこれが発生しました。その場合は、始める前にいくつか追加の作業を行う必要があります。開発マシンに関する情報をReact Nativeの 'Dev Settings'に入力する必要があります。
エラーが表示されたら、 端末を振ってください 。ダイアログがポップアップし、最後のオプションは 'Dev Settings'になります。 [デバイスのサーバーホットポートとポートのデバッグ]を選択し、ローカルIPと使用されているポート(通常は8081)を入力します。
https://facebook.github.io/react-native/docs/running-on-device-Android.html の最後の段落を参照してください。
解決策のどれもあなたのためにうまくいかない場合これを試してみてください。
<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
私のアプリは再び働き始めました。
もっとデバッグし、実際に失敗しているものを更新します。
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
それは少し遅すぎますが、これは本当に私のために働きます。
react-native run-Android
。react-native start
。最初のコマンドはAndroid用のapk
を構築し、接続されていればそれをあなたのデバイスにデプロイします。あなたがアプリを開くと、それはエラーで赤い画面が表示されます。それからpackagerを実行し、あなたのためにアプリバンドルを構築する2番目のコマンドを実行します。
react-native run-Android
を実行端末でこのコマンドを試してから、再ロードしてください。それは私のために働いた
adb reverse tcp:8081 tcp:8081
デバイス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マネージャで見たので。
私にとっては、adb
がPATH
に含まれていなかったからです。それは私にとっては/Users/man/Library/Android/sdk/platform-tools
にあります。あなたにとっては他の場所にあるかもしれませんが、とにかくそれを見つけてあなたのパスに追加して助けになるかどうかを確かめてください。
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」を選択します。
それはこの問題を「ランダムに」持っていて、私のシナリオで何が間違っていたのかを理解するのにしばらく時間がかかりました。
React-native-cli 2.0.1にアップデートした後、ログにメッセージが出力され、Digを実行して根本的な原因を突き止めるのに役立ちました。
JSサーバーが認識されず、ビルドを続行しています...
いくつかのリンクを調べた後、私はこれを見つけました:
私はWindowsを使っているので、netstatを実行し、私のVLCプレーヤーもポート8081で動作していて問題を引き起こしていることがわかりました。だから、私の場合は、私が反応ネイティブサーバの前にvlcサーバを起動したとしてもそれはうまく行かないでしょう。
これと同じログメッセージが以前のバージョンのreact-native-cliでは出力されず、黙って失敗しました。
TL、DR:パッケージマネージャと同じポートで何か動いているものがあるかチェックします(デフォルトは8081)
私の問題は私が私のAndroidManifest.xml
ファイルを見て行を削除したことです
<uses-permission Android:name="Android.permission.INTERNET" />
私のアプリはインターネットを必要としませんので。しかし、反応ネイティブデバッグアプリは(パッケージャにアクセスするために)インターネットアクセスを必要としません。 :)
私たちのほとんどは、ネイティブプロジェクト#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をデバイスにローカルにインストールしようとします。 (成功しました)
使用していたポートを開く必要がありました(デフォルトは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で開発サーバーに移動するだけです。それが応答しない場合は、これはあなたが必要なものかもしれません。それが反応するならば、これはあなたを助けません。
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)
私にとっては、サイドシンクを有効にしてアクティブにしていました。それを閉じることは即座に問題を解決しました。 PCとデバイス間のこれまたは他の通信を閉じる価値があるかもしれません
私は同じ問題を抱えていました。私が反応ネイティブプロジェクトを作成したとき 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
そしてそれはうまく働いているはずです。少なくともそれは私のために働いた。
私もこのエラーに遭遇しました、本当に混乱しています。 cuzすべての答えはうまくいきません。パスに adb を追加した直後。
私にとって問題は 'adb'が認識されなかったことでした - check this answer。
これを修正するには、環境変数にC:\ Users\USERNAME\AppData\Local\Android\sdk\platform-toolsを追加します。
私のやり方は:
react-native start
その後、あなたのデバイスで以下を使用します。
click to Reload.
コンソールreact-nativeを見てください、それはjsバンドルデータを取得するでしょう。
システムまたはバンドル全体を再起動するだけで問題が解決する可能性があります。
キャッシュをきれいにしよう
react-native start --reset-cache
私も追加する必要があることがわかりました
反応ネイティブアップグレード
アプリケーションを正しく実行するために。
私は上記/下記の提案の多くを試してみましたが、結局のところ、私が直面した問題は、先に自作を使ってインストールされたwatchmanの許可に関するものでした。エミュレータを使用しようとしているときに端末のメッセージを見て、エミュレータでこの「BatchedBridgeを取得できませんでした」というメッセージと共にwatchmanに関する「権限が拒否されました」というエラーが発生した場合
あなたの/Users/<username>/Library/LaunchAgents
ディレクトリに行き、あなたのユーザが読み書きできるようにパーミッション設定を変更してください。これは、あなたが実際にそこにcom.github.facebook.watchman.plist
ファイルを持っているかどうかには関係ありません。
最も簡単な方法!
行ってよかった!
私は同じ問題を抱えていたが、それは私自身からのばかげた間違いだった….
Android studio から、app
projetの代わりにroot
projetからinstallDebug/installRelease
gradleスクリプトを起動していました。