Errore: impossibile determinare il carattere corrente, non è una stringa, un numero, un array o un oggetto in reattivo nativo per Android


9

Ogni volta che eseguo reatt-native run-android mantenendo l'emulatore in esecuzione, viene visualizzato questo errore. Il run-ios di reattivo nativo funziona perfettamente.

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

Come indicato nel messaggio di errore, ho provato a correre npm uninstall -g react-native react-native-clima non ha funzionato.

Informazioni sul mio ambiente:

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 di seguito:

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 di seguito:


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' }
    }
}

Inizialmente stavo ottenendo questo errore: errore di compilazione di reazione nativa: Impossibile trovare l'implementazione del metodo () per gli argomenti [jscFlavor] sul progetto ': app' di tipo org.gradle.api.Project ma ora sto ottenendo quanto sopra.


Quale sistema operativo stai usando? Ho scoperto che il mio problema era causato dalle autorizzazioni dei file all'interno delle cartelle di build di Android - non avevo idea di cosa fosse successo ma sul mio computer con Windows 10 dovevo assicurarmi di aver avviato tutte le mie app (Android Studio, VS Code, Comando di Windows) con diritti elevati (Esegui come amministratore).
Tahir Khalid,

Sto usando MacOS
yashatreya il

Ho ricreato il progetto utilizzando l'interfaccia della riga di comando e ha iniziato a funzionare :-(
Tahir Khalid

@TahirKhalid Significa che hai avviato un progetto completamente nuovo usando init-native native? Puoi per favore elaborare un po ', grazie
yashatreya,

Sì, ho ricreato il progetto ma questa volta mi sono assicurato che le autorizzazioni fossero corrette. Userei la console MacOS e chmod le cartelle e i file per garantire un accesso in lettura / scrittura corretto
Tahir Khalid

Risposte:


15

SOLUZIONE 1 (ha funzionato per me)

La soluzione per me era rimuovere la seguente riga

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

Assicurati di rimuoverlo ovunque. Ho avuto questa linea in build.gradle (app) e anche in settings.gradle .

Dopodiché, esegui di nuovo npx reag-native run-android la console visualizzerà l'errore reale, correggerà l'errore e ripristinerà le righe che hai rimosso.

Nel mio caso l'errore si è verificato perché ho utilizzato una versione precedente del nodo e la seconda volta è successo che dovevo sincronizzare nuovamente il mio progetto


SOLUZIONE 2

Elimina i file che ha riscontrato l'errore come "Il carattere corrente letto è 'E' con un valore int di 69"

Eliminazione

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

ha funzionato anche per gli altri.


SOLUZIONE 3

Aggiorna @ reagire-comunità-nativa / cli all'ultima versione.

Buona codifica!


Anche l'installazione da nodejs direttamente su MacOS ha funzionato anche per me, grazie! Fare le installazioni brew, anche con i passaggi di disinstallazione e ricollegamento non ha funzionato. Suggerisci di inquadrare la tua risposta per evidenziare direttamente il download di nodejs e di avere la soluzione seguente.
Kelton,

Alla fine ho avuto ancora il problema. La soluzione alternativa mi ha aiutato a vedere un piccolo errore di sintassi nel mio android/app/src/main/AndroidManifest.xmlfile. Con quello ora risolto, sono stato in grado di riaccendere le altre linee.
Kelton,

1
Grazie per la condivisione. Aggiornerò la risposta per renderlo più chiaro!
Faustino Gagneten,

@ Kelton.Temby, puoi modificare la mia risposta per renderla più chiara per gli altri utenti come hai menzionato.
Faustino Gagneten,

3

Penso che questo problema sia solo nella versione più recente (0.61) Ho avuto lo stesso problema e ho appena usato la versione precedente (0.60.0)

 npx react-native init AwesomeProject --version 0.60.0

1

Ho appena rimosso la cartella di build all'interno di Android e vai alla cartella Android e poi in PowerShell digitato ./gradlewclean e quindi cd..=>npx react-native run-android


0

Assicurati che i dati di AndroidManifest.xml siano tra virgolette appropriate "" non "". Questo di solito accade quando stiamo configurando la base di fuoco e copiamo incollando le dipendenze.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.