Android 4.4.2で反応ネイティブプロジェクトを作成しようとすると、このエラー画面が表示されます
そしてそれを解決する方法を見つけることができませんでした。パッケージャを再起動し、デバイスを再接続して、react Nativeを再インストールして新しいプロジェクトを開始してみました。6.0.0以降のバージョンでは問題なく動作します。
Android 4.4.2で反応ネイティブプロジェクトを作成しようとすると、このエラー画面が表示されます
そしてそれを解決する方法を見つけることができませんでした。パッケージャを再起動し、デバイスを再接続して、react Nativeを再インストールして新しいプロジェクトを開始してみました。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に置くことができます。これは、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/"
},
または言及されているようにカール相当ですが、ほとんどの場合、上記はより堅牢です
私もこの問題に出くわしました。私がやったことは私のデバイス上のアプリを強制終了することでした、そして私は別のコンソールを開いて実行しました
react-native start
その後、デバイスからアプリを再度開いたところ、再び動作し始めました。
編集:USB経由でAndroidデバイスを使用していて、プラグを抜いた場合、またはコンピューターがスリープ状態になった場合は、最初に実行する必要があります
adb reverse tcp:8081 tcp:8081
react-native run-android
。react-native start
私が使用しているときは、使用する必要はありませんでしたreact-native run-ios
adb reverse tcp:8081 tcp:8081
私にはそれで十分でした。どうもありがとう!
このエラーが発生しました。ここで私が修正したものです:を選択Dismiss
し、[開発者]メニューに移動してからDev Settings
、[選択]を選択しDebug server host & port for device
、コンピューターのIPアドレスとポートを追加しました192.168.0.xx:8xxx
。ポートは通常:8081
これをしたら、すべてうまくいきました。また、あなたはDEVメニューにいる間は、選択するために覚えているEnable Live Reload
し、Debug JS Remotely
デバッグ中にそれが簡単にあなたの人生はずっと、ずっとます。
ifconfig
、次にinet addr:xxx.xxx.xxx.xxxを見つけます。ここで、xxx *は開発者のマシンのIPです
これは私のために働いたものです(私が見つけた他のすべての解決策を試した後...):
ファイル名を指定して実行adb reverse tcp:8081 tcp:8081
内部\Android\sdk\platform-tools
react-native run-android
コマンドを実行しようとすることを発見しpath
、platform-tools
パスを含むWindows環境変数に依存しています。
これは、物理デバイスを使用して初めて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
、アプリが再び機能し始めました。
さらにデバッグし、実際に失敗しているものを更新します。
で、別の端末、デバイスをコンピュータに接続し、次のコマンドを実行します。
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
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の再読み込み]を選択します。
この問題は「ランダムに」発生し、私のシナリオの何が悪いのかを理解するのに時間がかかりました。
React-native-cli 2.0.1に更新した後、根本的な原因を掘り下げて見つけるのに役立つメッセージがログに出力されました。
JSサーバーが認識されません。ビルドを続行しています...
いくつかのリンクを調査した後、私はこれを見つけました:
私はWindowsを使用しているので、netstatを実行したところ、私のVLCプレーヤーもポート8081で実行されていて、問題の原因であることがわかりました。したがって、私の場合、反応ネイティブサーバーの前にvlcサーバーを起動した場合、動作しません。
この同じログメッセージは、以前のバージョンのreact-native-cliでは出力されなかったため、警告なしに失敗しました。
TL、DR:パッケージマネージャーと同じポートで実行されているものがあるかどうかを確認します(デフォルトでは8081)。
私の問題は、AndroidManifest.xml
ファイルを調べて行を削除したことでした
<uses-permission android:name="android.permission.INTERNET" />
私のアプリはインターネットを必要としないので。ただし、reactネイティブデバッグアプリには、(パッケージャーにアクセスするための)インターネットアクセスが必要です。:)
キャッシュを消去してみてください
react-native start --reset-cache
実行時に次のエラーがないか確認してください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)
私にとっては、サイド同期を有効にしてアクティブにしました。それを閉じるとすぐに問題が解決しました。これまたはPCとデバイス間のその他の通信を閉じる価値があるかもしれません
使用していたポート(デフォルトでは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 start
その後、デバイスを使用して:
click to Reload.
コンソールのreact-nativeを参照してください。jsバンドルデータがフェッチされます。
私も同じ問題を抱えていました。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
そして、それはうまく機能するはずです。少なくともそれは私のために働いた。
私にとって問題は「adb」が認識されなかったことでした- この回答を確認してください。
これを修正するには、C:\ Users \ USERNAME \ AppData \ Local \ Android \ sdk \ platform-toolsを環境変数に追加します
私たちのほとんどは、ネイティブプロジェクト#1の反応を開始したときに、この問題に初めて直面します。
いくつかの簡単な手順で問題が解決しました:
次のコマンドを使用してサンプルプロジェクトを作成しました。
react-native init ReactProject1
解決
修正はと同じようにlocal-cli\runAndroid\adb.js
を見つけるのを助けることですadb.exe
local-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バンドルがデバイスのローカルにインストールされます。(成功した)
私は上記/以下の提案の多くを試しましたが、最終的に私が直面した問題は、以前に自作でインストールしたwatchmanの権限に関するものでした。エミュレーターを使用しようとしているときに端末メッセージを確認し、エミュレーターでこの「BatchedBridgeを取得できませんでした」メッセージと一緒にウォッチマンに関して「Permission denied」エラーが発生した場合は、次のようにします。
/Users/<username>/Library/LaunchAgents
ディレクトリに移動し、アクセス許可の設定を変更して、ユーザーが読み書きできるようにします。これは、実際com.github.facebook.watchman.plist
にそこにファイルがあるかどうかには関係ありません。
同じ問題が発生しましたが、それは私自身からの愚かな間違いでした...
Android studioから、installDebug/installRelease
gradleスクリプトをapp
projetではなくroot
projet から起動していました。
react-native run-android
か?この場合、エラーが発生します。これは、デバッグモードでは、パッケージサーバーに接続することになっているため、JSバンドルafaikは必要ないためです。