Fehler: Das aktuelle Zeichen kann nicht ermittelt werden. Es handelt sich nicht um eine Zeichenfolge, eine Zahl, ein Array oder ein Objekt in React-Native für Android

9

Immer wenn ich reag-native run-android ausführe, während der Emulator läuft, wird dieser Fehler angezeigt. React -Native Run- Ios funktioniert einwandfrei.

Error: Command failed: ./gradlew app:installDebug -PreactNativeDevServerPort=8081
:ReactNative:Failed to parse React Native CLI configuration: groovy.json.JsonException: Unable to determine the current character, it is not a string, number, array, or object

The current character read is 'E' with an int value of 69
Unable to determine the current character, it is not a string, number, array, or object
line number 1
index number 0
Error: Invalid attribute nameLine: 16Column: 18Char: .    at error (/Users/yashatreya/Desktop/Realyze/Realyze/node_modules/sax/lib/sax.js:651:10)    at strictFail (/Users/yashatreya/Desktop/Realyze/Realyze/node_modules/sax/lib/sax.js:677:7)    at SAXParser.write (/Users/yashatreya/Desktop/Realyze/Realyze/node_modules/sax/lib/sax.js:1313:13)    at new XmlDocument (/Users/yashatreya/Desktop/Realyze/Realyze/node_modules/xmldoc/lib/xmldoc.js:261:15)    at readManifest (/Users/yashatreya/Desktop/Realyze/Realyze/node_modules/@react-native-community/cli-platform-android/build/config/readManifest.js:38:10)    at Object.projectConfig (/Users/yashatreya/Desktop/Realyze/Realyze/node_modules/@react-native-community/cli-platform-android/build/config/index.js:59:46)    at Object.get project [as project] (/Users/yashatreya/Desktop/Realyze/Realyze/node_modules/react-native/node_modules/@react-native-community/cli/build/tools/config/index.js:114:50)    at /Users/yashatreya/Desktop/Realyze/Realyze/node_modules/react-native/node_modules/@react-native-community/cli/build/commands/config/config.js:8:452    at Array.forEach (<anonymous>)    at _objectSpread (/Users/yashatreya/Desktop/Realyze/Realyze/node_modules/react-native/node_modules/@react-native-community/cli/build/commands/config/config.js:8:392)
^

FAILURE: Build failed with an exception.

* Where:
Script '/Users/yashatreya/Desktop/Realyze/Realyze/node_modules/@react-native-community/cli-platform-android/native_modules.gradle' line: 201

* What went wrong:
A problem occurred evaluating script.
> Failed to parse React Native CLI configuration. Expected running 'npx --quiet --no-install react-native config' command from '/Users/yashatreya/Desktop/Realyze/Realyze' directory to output valid JSON, but it didn't. This may be caused by npx resolving to a legacy global react-native binary. Please make sure to uninstall any global 'react-native' binaries: 'npm uninstall -g react-native react-native-cli' and try again

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

* Get more help at https://help.gradle.org

Wie in der Fehlermeldung angegeben, habe ich versucht zu laufen, npm uninstall -g react-native react-native-cliaber es hat nicht funktioniert.

Infos zu meiner Umgebung:

System:
    OS: macOS 10.15
    CPU: (4) x64 Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz
    Memory: 29.68 MB / 8.00 GB
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 12.13.0 - /usr/local/bin/node
    Yarn: 1.19.1 - /usr/local/bin/yarn
    npm: 6.12.0 - /usr/local/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  SDKs:
    iOS SDK:
      Platforms: iOS 13.0, DriverKit 19.0, macOS 10.15, tvOS 13.0, watchOS 6.0
  IDEs:
    Android Studio: 3.5 AI-191.8026.42.35.5977832
    Xcode: 11.0/11A420a - /usr/bin/xcodebuild
  npmPackages:
    react: 16.9.0 => 16.9.0 
    react-native: ^0.61.4 => 0.61.4 
  npmGlobalPackages:
    react-native-cli: 2.0.1

android / app / build.gradle unten:

apply plugin: "com.android.application"

import com.android.build.OutputFile
project.ext.react = [
    entryFile: "index.js",
    enableHermes: false,  // clean and rebuild if changing
]

apply from: "../../node_modules/react-native/react.gradle"

def enableSeparateBuildPerCPUArchitecture = false
def enableProguardInReleaseBuilds = false

def jscFlavor = 'org.webkit:android-jsc:+' 

def enableHermes = project.ext.react.get("enableHermes", false);

android {
    compileSdkVersion rootProject.ext.compileSdkVersion

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        applicationId "com.realyze"
        minSdkVersion 21 
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 1
        versionName "1.0"
        multiDexEnabled true

    }
    // rootProject.ext.minSdkVersion
    splits {
        abi {
            reset()
            enable enableSeparateBuildPerCPUArchitecture
            universalApk false  // If true, also generate a universal APK
            include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
        }
    }
    signingConfigs {
        debug {
            storeFile file('debug.keystore')
            storePassword 'android'
            keyAlias 'androiddebugkey'
            keyPassword 'android'
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
        release {
            // Caution! In production, you need to generate your own keystore file.
            // see https://facebook.github.io/react-native/docs/signed-apk-android.
            signingConfig signingConfigs.debug
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        }
    }
    // applicationVariants are e.g. debug, release
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            // For each separate APK per architecture, set a unique version code as described here:
            // https://developer.android.com/studio/build/configure-apk-splits.html
            def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
            def abi = output.getFilter(OutputFile.ABI)
            if (abi != null) {  // null for the universal-debug, universal-release variants
                output.versionCodeOverride =
                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
            }

        }
    }
}

dependencies {
    implementation project(':react-native-push-notification')
    implementation project(':react-native-sound')
    implementation project(':react-native-audio')
    implementation 'com.android.support:multidex:2.0.1'
    implementation project(':react-native-gesture-handler')
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "com.facebook.react:react-native:+"  // From node_modules
    implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
    implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02'
    implementation 'com.google.firebase:firebase-analytics:17.2.0'
    implementation 'com.google.firebase:firebase-auth:19.1.0'
    implementation project(path: ":@react-native-firebase_auth")
    implementation project(path: ":@react-native-firebase_messaging")
    implementation project(path: ":@react-native-firebase_database")
    implementation project(':react-native-datetimepicker')
    implementation project(path: ":@react-native-firebase_firestore")
    implementation project(path: ":@react-native-firebase_functions")
}

    if (enableHermes) {
        def hermesPath = "../../node_modules/hermes-engine/android/";
        debugImplementation files(hermesPath + "hermes-debug.aar")
        releaseImplementation files(hermesPath + "hermes-release.aar")
    } else {
        implementation jscFlavor
    }
// }

// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
    from configurations.compile
    into 'libs'
}

apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
apply plugin: 'com.google.gms.google-services'

android / build.gradle unten:


buildscript {
    ext {
        buildToolsVersion = "28.0.3"
        minSdkVersion = 16
        compileSdkVersion = 28
        targetSdkVersion = 28
    }
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:3.4.2"
        classpath 'com.google.gms:google-services:4.3.2'
    }
}

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

        google()
        jcenter()
        maven { url 'https://jitpack.io' }
    }
}

Anfangs bekam ich diesen Fehler: React-Native Build-Fehler: Die Methodenimplementierung () für Argumente [jscFlavor] für das Projekt ': app' vom Typ org.gradle.api.Project konnte nicht gefunden werden, aber jetzt erhalte ich den obigen Fehler .

Yashatreya
quelle
Welches Betriebssystem verwenden Sie? Ich stellte fest, dass mein Problem durch Dateiberechtigungen in den Android-Build-Ordnern verursacht wurde - keine Ahnung, was passiert ist, aber auf meinem Windows 10-Computer musste ich sicherstellen, dass alle meine Apps (Android Studio, VS-Code, Windows-Befehl) mit erhöhten Rechten gestartet wurden (Ausführen) als Administrator).
Tahir Khalid
Ich benutze MacOS
Yashatreya
Ich habe das Projekt mit der CLI neu erstellt und es begann zu funktionieren :-(
Tahir Khalid
@TahirKhalid Bedeutet das, dass Sie ein ganz neues Projekt mit reag-native init gestartet haben? Können Sie bitte ein wenig
näher darauf eingehen
Ja, ich habe das Projekt neu erstellt, aber diesmal habe ich sichergestellt, dass die Berechtigungen korrekt sind. Ich würde die MacOS-Konsole verwenden und die Ordner und Dateien ändern, um einen korrekten Lese- / Schreibzugriff sicherzustellen
Tahir Khalid

Antworten:

15

LÖSUNG 1 (arbeitete für mich)

Die Lösung für mich war das Entfernen der folgenden Zeile

apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)

Stellen Sie sicher, dass Sie es überall entfernen. Ich hatte diese Zeile in build.gradle (App) und auch in settings.gradle .

Führen Sie danach npx react-native run-android erneut aus. Die Konsole zeigt den tatsächlichen Fehler an, behebt den Fehler und setzt die entfernten Zeilen zurück.

In meinem Fall ist der Fehler aufgetreten, weil ich eine ältere Node-Version verwendet habe und beim zweiten Mal musste ich mein Projekt erneut synchronisieren


LÖSUNG 2

Löschen Sie die gefundenen Dateien als Fehler "Das aktuell gelesene Zeichen ist 'E' mit einem int-Wert von 69".

Löschen

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

arbeitete auch für andere.


LÖSUNG 3

Aktualisieren Sie die @ react-native-community / cli auf die neueste Version.

Gute Codierung!

Faustino Gagneten
quelle
Die Installation von nodejs direkt unter MacOS hat auch bei mir funktioniert, danke! Das Durchführen von Brew-Installationen funktionierte trotz der Schritte zum Deinstallieren und erneuten Verknüpfen nicht. Schlagen Sie vor, Ihre Antwort so zu gestalten, dass der Download des Knotens direkt hervorgehoben wird, und führen Sie anschließend die folgende Problemumgehung durch.
Kelton.Temby
Es stellte sich heraus, dass ich immer noch das Problem hatte. Die Problemumgehung hat mir geholfen, einen winzigen Syntaxfehler in meiner android/app/src/main/AndroidManifest.xmlDatei zu erkennen. Nachdem dies nun behoben war, konnte ich die anderen Leitungen wieder einschalten.
Kelton.Temby
1
Danke für das Teilen. Ich werde die Antwort aktualisieren, um es klarer zu machen!
Faustino Gagneten
@ Kelton.Temby, Sie können meine Antwort bearbeiten, um sie anderen Benutzern klarer zu machen, wie Sie erwähnt haben.
Faustino Gagneten
3

Ich denke, dieses Problem tritt nur in der neueren Version (0.61) auf. Ich hatte das gleiche Problem und habe gerade die ältere Version (0.60.0) verwendet.

 npx react-native init AwesomeProject --version 0.60.0
Ali Mohammad
quelle
1

Einfach den Build-Ordner in Android entfernt und in den Android-Ordner gegangen und dann in Powershell ./gradlewsauber eingegeben und dann cd..=>npx react-native run-android

lucas augustus
quelle
0

Bitte stellen Sie sicher, dass die AndroidManifest.xml-Daten in korrekten Anführungszeichen "" nicht "" stehen. Dies geschieht normalerweise, wenn wir die Firebase konfigurieren und die Abhängigkeiten kopieren und einfügen.

vinny
quelle