Erreur: impossible de déterminer le caractère actuel, il ne s'agit pas d'une chaîne, d'un nombre, d'un tableau ou d'un objet dans react-native pour android

9

Chaque fois que je lance run-android react-native tout en gardant l'émulateur en marche, j'obtiens cette erreur. run-ios natif de react fonctionne parfaitement.

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

Comme indiqué dans le message d'erreur, j'ai essayé de lancer npm uninstall -g react-native react-native-cli mais cela n'a pas fonctionné.

Infos sur mon environnement:

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 ci-dessous:

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 ci-dessous:


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

Au départ, j'obtenais cette erreur: erreur de construction native de réaction: impossible de trouver l'implémentation de la méthode () pour les arguments [jscFlavor] sur le projet ': app' de type org.gradle.api.Project mais maintenant j'obtiens ce qui précède.

yashatreya
la source
Quel système d'exploitation utilisez-vous? J'ai trouvé que mon problème était dû à des autorisations de fichiers dans les dossiers de construction Android - aucune idée de ce qui s'est passé, mais sur ma machine Windows 10, je devais m'assurer d'avoir démarré toutes mes applications (Android Studio, VS Code, commande Windows) avec des droits élevés (Exécuter en tant qu'administrateur).
Tahir Khalid
J'utilise MacOS
yashatreya
J'ai recréé le projet en utilisant la CLI et il a commencé à fonctionner :-(
Tahir Khalid
@TahirKhalid Cela signifie que vous avez démarré un tout nouveau projet en utilisant init natif réactif? Pouvez-vous s'il vous plaît élaborer un peu, merci
yashatreya
Oui, j'ai recréé le projet mais cette fois, je me suis assuré que les autorisations étaient correctes. J'utiliserais la console MacOS et chmoder les dossiers et fichiers pour assurer un accès en lecture / écriture correct
Tahir Khalid

Réponses:

15

SOLUTION 1 (travaillé pour moi)

La solution pour moi était de supprimer la ligne suivante

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

Assurez-vous de le retirer partout. J'avais cette ligne build.gradle (app) et aussi dans settings.gradle .

Après cela, exécutez à nouveau npx react-native run-android la console affichera la vraie erreur, corrigera l'erreur et remettra les lignes que vous avez supprimées.

Dans mon cas, l'erreur s'est produite parce que j'utilisais une ancienne version de Node et la deuxième fois.Il s'est produit que j'avais besoin de synchroniser à nouveau mon projet


SOLUTION 2

Supprimez les fichiers sur lesquels il a trouvé une erreur: "Le caractère actuellement lu est 'E' avec une valeur int de 69"

Suppression

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

travaillé pour les autres aussi.


SOLUTION 3

Mettez à jour @ react-native-community / cli vers la dernière version.

Bon codage!

Faustino Gagneten
la source
L'installation à partir de nodejs directement sur MacOS a également fonctionné pour moi, merci! Faire des installations de brassage, même avec les étapes de désinstallation et de reconnexion, n'a pas fonctionné. Suggérez de cadrer votre réponse pour mettre en surbrillance le téléchargement nodejs directement, puis d'avoir la solution de contournement ci-dessous.
Kelton.Temby
Il s'est avéré que j'avais toujours le problème. La solution de contournement m'a aidé à voir une petite erreur de syntaxe dans mon android/app/src/main/AndroidManifest.xmlfichier. Avec cela maintenant corrigé, j'ai pu réactiver les autres lignes.
Kelton.Temby
1
Merci d'avoir partagé. Je mettrai à jour la réponse pour la rendre plus claire!
Faustino Gagneten
@ Kelton.Temby, vous pouvez modifier ma réponse pour la rendre plus claire pour les autres utilisateurs comme vous l'avez mentionné.
Faustino Gagneten
3

Je pense que ce problème est uniquement dans la version la plus récente (0.61) J'ai eu le même problème et je viens d'utiliser l'ancienne version (0.60.0)

 npx react-native init AwesomeProject --version 0.60.0
Ali Mohammad
la source
1

Je viens de supprimer le dossier de construction dans Android et accédez au dossier Android, puis dans PowerShell tapé ./gradlew propre puis cd..=>npx react-native run-android

lucas augustus
la source
0

Veuillez vous assurer que les données AndroidManifest.xml sont entre guillemets appropriés "" et non "". Cela se produit généralement lorsque nous configurons la base de données et copions-collons les dépendances.

vinny
la source