web-dev-qa-db-ja.com

反応ネイティブでホットリロードが機能しないandroid

Windows 10とUbuntu 16.04で試してみました。どちらの場合も、JavaScriptでバリアベルや関数などを変更すると、ホットリロードはjsxの変更でのみ機能します。ホットリロードが有効になります。ライブリロードは無効です。 Visual Studioコードエディターで変更を保存すると、仮想デバイス(Androidスタジオ)がリロードされますが、変更はありません。 EXPOアプリの物理デバイスでも同じです。

まず、watchmanをインストールしませんでした。 Hot Relaodが機能していません。インストール後、ホットリロードも機能しません。

私はアプリをcreate-react-native-appで開始します。排出されません。

package.json:

{
  "name": "NativeReduxSaga",
  "version": "0.1.0",
  "private": true,
  "devDependencies": {
    "jest-expo": "25.0.0",
    "react-native-debugger-open": "^0.3.17",
    "react-native-scripts": "1.11.1",
    "react-test-renderer": "16.2.0"
  },
  "main": "./node_modules/react-native-scripts/build/bin/crna-entry.js",
  "scripts": {
    "start": "react-native-scripts start",
    "eject": "react-native-scripts eject",
    "Android": "react-native-scripts Android",
    "ios": "react-native-scripts ios",
    "test": "node node_modules/jest/bin/jest.js",
    "postinstall": "rndebugger-open --expo"
  },
  "jest": {
    "preset": "jest-expo"
  },
  "dependencies": {
    "@redux-offline/redux-offline": "^2.3.2",
    "expo": "^25.0.0",
    "prop-types": "^15.6.1",
    "react": "16.2.0",
    "react-native": "0.52.0",
    "react-native-autocomplete-input": "^3.5.0",
    "react-navigation": "^1.5.2",
    "react-redux": "^5.0.7",
    "redux": "^3.7.2",
    "redux-devtools-extension": "^2.13.2",
    "redux-logger": "^3.0.6",
    "redux-observable": "^0.18.0",
    "redux-promise-middleware": "^5.0.0",
    "redux-saga": "^0.16.0",
    "redux-thunk": "^2.2.0",
    "rxjs": "^5.5.7"
  }
}

ウォッチマン版

{
    "version": "4.9.1",
    "buildinfo": "94e66865386e844f2cffe52e355a94c96562d2e3 2018-03-12T19:58:02.0000000Z"
}

ノードバージョンv6.13.1

WindowsでMAX_WAIT_TIMEを大きくするのに役立つ可能性があるという記事をいくつか読んだ。しかし、\ node_modules\react-native\node_modules\node-haste\lib\FileWatcher\index.jsファイルがありません。

そして、なぜそれがUbuntuでも機能しないのですか?

私は本当に警備員が必要ですか?どのように構成する必要がありますか?私の.watchmanconfigファイルは{}のような空のオブジェクトです。

Hot Reloadは通常create-react-native-appで機能しますか?

ホットリロードを機能させるために、私がここで試すことができるものを誰かが知っていますか?助けてくれてありがとう!

5
fricko

実際には、ホットリロードとライブリロードには違いがあります。

Hot Reloadingは、アプリケーションの状態を維持したまま、瞬時にリロードします。ただし、これはrenderメソッド内でのみ機能し、クラスReact.ComponentおよびComponentの拡張でのみトリガーされます

のように:

class A extends Component ...
class B extends React.Component ...

Live Reload一方、アプリケーションを再構築し、アプリケーションの状態を破棄します。変数やメソッドから最も単純な文字列まで、すべてが含まれています。これが、常にアプリケーションの開始画面から開始する理由です(状態が失われるため)。

それが役に立てば幸い!

16
Ajay Gupta

Gitを削除するindex.lockファイルが機能した

rm -rf .git/index.lock

5
cdvx

この問題を解決するために次の手順を実行しました。

  1. mkdir Android/app/src/main/assets

  2. 反応ネイティブバンドル--platform Android --dev false --entry-file index.js --bundle-output Android/app/src/main/assets/index.Android.bundle- -assets-dest Android/app/src/main/res

  3. シェイクAndroidデバイスまたはcmd + dシミュレーターでメニューを取得します。

  4. 一度ホットリロードを有効および無効にします。

  5. dev設定->デバッグ->デバッグサーバーのホストとデバイスのポートで使用しているIPアドレスをクリアします。

  6. ホットリロードを有効にします。

  7. ターミナルでプロジェクトディレクトリに移動します->反応ネイティブの開始

  8. react-native run-Androidまたは直接Android studio。

1
Raj Kiran

WSL 2を使用しているときにこの問題が発生する場合、ファイル監視が正しく機能するには、マウントされたWindowsフォルダー内ではなく、Linuxサブシステム内にファイルが存在する必要があります。 Redditに関するこの投稿 から取得:

彼らは、ファイル共有プロトコルを、独自のカスタム開発プロトコルの使用から9Pプロトコルの使用に変更しました。現時点では、ファイル変更イベントをサポートしていない可能性があります。

Linuxファイルシステム(例:ユーザーのホームディレクトリ)にコードを配置し、WindowsからWSL共有\ wsl $\DISTRO_NAMEを介してこれらのファイルにアクセスすることで、この問題を修正できると思います。

Windowsエクスプローラーで\ wsl $に移動すると、インストールされているすべてのWSL Linuxディストリビューションが表示され、ファイルシステム上のすべてのファイルにアクセスできます。

0
ParkerD

in Android Go to your MainApplication.Java search for @Override public boolean getUseDeveloperSupport() { return true; }

Trueを返すことを確認してください。問題かもしれません

0
Joseph Gichuru

私にとっての問題はAndroidXに関するものでした。基本的に、反応ネイティブの古いバージョンのため、AndroidXへの移行が必要になることがあります

Android Studioでプロジェクトを開くだけです

Refactor-> Migrate to Android X ...およびフローの説明

保存側に昇格するときにバックアップを作成することを避けないでください

0
Sultan Ali