web-dev-qa-db-ja.com

React Androidネイティブ:現在の文字を判別できません。文字列、数値、配列、オブジェクトではありません

newアプリケーションを作成し、oldコードを挿入します。ibuildアプリケーションにこのエラーが表示されます:

スクリプト'C:\ Users\nameuser\Desktop\nameapp\node_modules @ react-native-community\cli-platform-Android\native_modules.gradle'行:191

何が悪かったのか:

設定「nameapp」の評価中に問題が発生しました。

現在の文字を判別できません。文字列、数値、配列、またはオブジェクトではありません

現在読み込まれている文字は 'i'であり、int値は105です。
現在の文字を特定できません。文字列、数値、配列、またはオブジェクトではありません
行番号1
インデックス番号0
info「react-native --help」を実行して、使用可能なすべてのコマンドのリストを表示します。

react-native infoコマンドを使用すると、現在の状況がわかります。

info
  React Native Environment Info:
    System:
      OS: Windows 10
      CPU: (8) x64 Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
      Memory: 6.46 GB / 15.85 GB
    Binaries:
      Yarn: 1.15.2 - C:\laragon\bin\nodejs\node-v11\yarn.CMD
      npm: 6.12.0 - C:\Program Files\nodejs\npm.CMD
    IDEs:
      Android Studio: Version  3.5.0.0 AI-191.8026.42.35.5900203

そしてpackage.json

{
  "name": "nameapp",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "@react-native-community/cli-platform-Android": "^2.9.0",
    "axios": "^0.18.0",
    "haversine": "^1.1.0",
    "moment": "^2.22.2",
    "react": "16.6.3",
    "react-native": "^0.59.8",
    "react-native-actionsheet": "^2.4.2",
    "react-native-auto-height-image": "^1.1.0",
    "react-native-cached-image": "^1.4.3",
    "react-native-cli": "^2.0.1",
    "react-native-fbsdk": "^0.8.0",
    "react-native-global-font": "^1.0.2",
    "react-native-google-places": "^3.0.5",
    "react-native-image-crop-picker": "^0.24.1",
    "react-native-image-pan-zoom": "^2.1.10",
    "react-native-image-placeholder": "^1.0.14",
    "react-native-iphone-x-helper": "^1.2.0",
    "react-native-keyboard-manager": "^4.0.13-10",
    "react-native-maps": "github:react-community/react-native-maps",
    "react-native-maps-super-cluster": "^1.4.1",
    "react-native-modal-datetime-picker": "^5.1.0",
    "react-native-open-maps": "^0.3.3",
    "react-native-progress": "^3.4.0",
    "react-native-Push-notification": "^3.1.2",
    "react-native-router-flux": "^4.0.6",
    "react-native-share": "^1.2.1",
    "react-native-snap-carousel": "^3.7.4",
    "react-native-swiper": "^1.5.13",
    "react-native-vector-icons": "^4.6.0",
    "react-native-view-shot": "^2.5.0",
    "react-redux": "^5.0.7",
    "redux": "^3.7.2",
    "redux-persist": "^4.10.1",
    "redux-persist-transform-filter": "0.0.15",
    "redux-thunk": "^2.2.0"
  },
  "devDependencies": {
    "babel-jest": "23.6.0",
    "jest": "23.6.0",
    "metro-react-native-babel-preset": "0.51.1",
    "react-test-renderer": "16.6.3"
  },
  "jest": {
    "preset": "react-native"
  },
  "rnpm": {
    "assets": [
      "./src/fonts"
    ]
  }
}

助けてくれてありがとう。

4

私はこれにしばらく時間を費やしました。最終的に、次の2つのファイルを削除し、クリーンとリビルドを行いました。

app\build\intermediates\signing_config\debug\out\signing-config.json
app\build\intermediates\signing_config\release\out\signing-config.json
1
MattBooth

ビルドプロセスが実行されます。

npx --quiet react-native configまたはnpx.cmd --quiet react-native config

そのコマンドをプロジェクトのルートディレクトリで実行すると、JSON出力が生成されます(すべてが正しく構成されている場合)。

次に、JSON出力は、参照したGradleスクリプト内で解析されます。正しく構成されていない場合、npx --quiet react-native configは何も生成しないか、無効な出力を生成します。そのため、JSON解析(191行目)は失敗します。

「npx --quiet react-native config」を呼び出すその全体のメカニズムは、react-nativeの最新バージョンで使用されているため、package.jsonにあるすべてのreactネイティブパッケージを=に自動的に「バインド」します。 Android Java app。(基本的に、アプリのコンパイル時に、これらすべてのパッケージ名を挿入します)。

-

残念ながら、この問題を修正するのに役立つ単一の「回避策」はありません。ミスマッチがある(または構成が正しくない)

  • app/build.gradle
  • settings.gradle
  • build.gradle
  • package.json内の@ react-native/community/cliのバージョン
  • community-cliの特定のバージョンと連携するバージョンのreact-native
  • react-native.config.js

この時点で私がお勧めできる最高のものは、あなたが余裕のある最新のReactリリースにアップグレードしてから使用することです

https://github.com/react-native-community/rn-diff-purge

動作するバージョンと動作しなくなったRNのバージョンの間で、上記の構成ファイルを作成するために必要なすべての変更を把握します。


すべてが失敗した場合は、native_modules.gradleをデバッグしてみてください。そこに行き、挿入します:

 this.logger.warn("cmd: ${command}, result: ${reactNativeConfigOutput}");

どこか、reactNativeConfigOutput文字列変数を初期化するステートメントの後。

このログステートメントは、この自動リンク機構によって実行されるコマンドとそのコマンドの出力を出力します。

したがって、gradlew buildを実行すると
出力が表示されるはずです。

私の場合、コマンド(cmd)は次のとおりです。

npx.cmd --quiet react-native config

そしてreactNativeConfigOutputは:

 info Run "react-native --help" to see a list of all available commands

ouptutは有効なjsonでありnotであり、最初の文字は 'i'であり、JSON出力解析(native_modulesで使用される)であることがわかります。 gradle)「i」が有効な文字ではないという不満を言うエラーをスローしました

0
V P

GitHubからコードをダンプした直後に、同様の問題が発生しました。私が見つけたのは、Android/app/src/AndroidManifest.xmlファイル。

したがって、Androidアプリを再構築しようとしたときはいつでも、いくつかの奇妙な新しい文字で解析エラーが発生しました。

問題は、react-native-community@^2.0.0react-native@^0.59.0とのみ互換性があることです。 ( doc

アップグレードする必要がありますreact-nativeまたはダウングレードreact-native-community

0
Darkilen