web-dev-qa-db-ja.com

スタックトレース反応ネイティブのAndroid実行コマンドを有効にする方法は?

react-native run-Androidを介して、reactネイティブプロジェクトを実行しています。しかし、ビルド中に:react-native-device-info:processReleaseResources FAILEDと表示されて失敗します。これはあまり情報を提供しないので、提案どおりreact-native run-Android --stacktraceで実行してみましたが、これは認識されたコマンドではありません。

react-native run-Androidコマンドでスタックトレース/詳細ログを有効にするにはどうすればよいですか?

これは、ビルド時に理解するには短すぎるエラーの詳細です。

:react-native-device-info:processReleaseResources FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':react-native-device-info:processReleaseResources'.
> com.Android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Users\Brian\AppData\Local\Android\sdk\build-tools\23.0.1\aapt.exe'' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: -12.542 secs

参照用のPackage.json:

{
  "name": "StarterKit",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "jest": {
    "preset": "react-native",
    "setupFiles": [
      "<rootDir>/jest.setup.js"
    ],
    "transformIgnorePatterns": [
      "node_modules/(?!react-native|tcomb-form-native|apsl-react-native-button,react-native-device-info|react-clone-referenced-element)"
    ],
    "collectCoverage": true,
    "verbose": true
  },
  "dependencies": {
    "html-entities": "^1.2.0",
    "jwt-decode": "^2.1.0",
    "qs": "^6.3.0",
    "react": "15.4.2",
    "react-addons-shallow-compare": "^15.4.2",
    "react-native": "^0.40.0",
    "react-native-device-info": "^0.9.6",
    "react-native-elements": "^0.9.2",
    "react-native-google-analytics-bridge": "git+https://github.com/mcnamee/react-native-google-analytics-bridge.git",
    "react-native-router-flux": "^3.37.0",
    "react-native-side-menu": "^0.20.1",
    "react-native-tab-view": "0.0.48",
    "react-native-vector-icons": "^4.0.0",
    "react-redux": "^5.0.1",
    "redux": "^3.6.0",
    "redux-logger": "^2.7.0",
    "redux-thunk": "^2.1.0",
    "striptags": "^2.1.1",
    "tcomb-form-native": "^0.6.1"
  },
  "devDependencies": {
    "babel-core": "^6.17.0",
    "babel-eslint": "^7.1.0",
    "babel-jest": "18.0.0",
    "babel-preset-es2015": "^6.18.0",
    "babel-preset-react-native": "1.9.1",
    "babel-register": "^6.16.3",
    "eslint": "^3.9.1",
    "eslint-config-airbnb": "^14.0.0",
    "eslint-plugin-import": "^2.2.0",
    "eslint-plugin-jsx-a11y": "^3.0.2",
    "eslint-plugin-react": "^6.4.1",
    "invariant": "^2.2.2",
    "jest": "18.1.0",
    "jest-react-native": "^18.0.0",
    "react-test-renderer": "15.4.2"
  }
}

build.gradleファイル:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.Android.tools.build:gradle:2.1.0'

            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }

    allprojects {
        repositories {
            mavenLocal()
            jcenter()
            maven {
                // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
                url "$rootDir/../node_modules/react-native/Android"
            }
        }
    }
11
Brian J

react-native-device-infoを使用して./gradlew assembleDebugを個別にビルドし、react-native-device-infoが適切であることを確認してください。ネットワークがブロックされていてjcenterにアクセスできないため、同じ問題が発生します。

ちなみに、--stacktracegradleパラメータとして追加する必要があります。react-nativegradleに渡さないと思います。

2
EricHua23

@ EricHua23の答えは基本的に正しいですが、./gradlew assembleDebug --stacktraceを実行する代わりに./gradlew.bat installDebug --stacktraceを実行する必要があります。これは実際にreact-native run-Androidによって実行されるコマンドであるためです。 (そして、スタックトレースを取得したいエラーのいくつかは、アセンブリ部分ではなく、インストール/ビルド後の部分でのみ発生します)

また、必ずAndroidフォルダーで実行してください。 (gradlewコマンドを実行する前に、コンソールでcd Androidを実行してください)

7
Venryx

私のViroMediaサンプルアプリでは、シェルコマンドへのショートカットとして、次のようにpackage.jsonファイルを使用しています。

{
  "name": "ViroSample",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "Android": "react-native run-Android --variant arrelease",
    "and_bundle": "react-native bundle --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",
    "ios": "react-native run-ios",
    "gradle_build": "cd Android && ./gradlew --stacktrace --info assembleRelease -x bundleArReleaseJsAndAssets",
    "gradle_install": "cd Android && ./gradlew installArDebug --stacktrace --info",
    "test": "jest"
  },
  "dependencies": {
    "axios": "^0.19.0",
    "expo": "^35.0.0",
    "react": "16.8.3",
    "react-native": "^0.61.5",
    "react-viro": "2.15.0"
  },
  "devDependencies": {
    "@babel/core": "^7.5.5",
    "@babel/runtime": "^7.5.5",
    "babel-jest": "^24.8.0",
    "jest": "^24.8.0",
    "metro-react-native-babel-preset": "^0.55.0",
    "react-test-renderer": "16.8.3"
  },
  "jest": {
    "preset": "react-native"
  }
}

プロジェクトのルートディレクトリ(iMac bash Shell)から次のコマンドを発行します。

yarn gradle_install

他のシェルコマンドについては、上記のスクリプトブロックを参照してください。

注:Windowsでは、これはgradlew.batです。

ハッピーコーディング:-)

0
Abhinav Saxena

react-native start

これはエラーを詳細に表示します。

0
Takao Shibamoto