Kesalahan: Tidak dapat menentukan karakter saat ini, ini bukan string, angka, larik, atau objek dalam reaksi-asli untuk android

9

Setiap kali saya menjalankan react-native run-android sambil menjalankan emulator, saya mendapatkan kesalahan ini. run-ios reaksi-asli wroks sepenuhnya baik-baik saja.

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

Seperti yang ditunjukkan dalam pesan kesalahan, saya mencoba menjalankan npm uninstall -g react-native react-native-clitetapi tidak berhasil.

Info tentang lingkungan saya:

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 bawah ini:

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 bawah ini:


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

Awalnya saya mendapatkan kesalahan ini: error build react-native: Tidak dapat menemukan implementasi metode () untuk argumen [jscFlavor] pada project ': app' dari tipe org.gradle.api.Project tetapi sekarang saya mendapatkan yang di atas.

yashatreya
sumber
Sistem operasi apa yang Anda gunakan? Saya menemukan masalah saya disebabkan oleh izin file di dalam folder build android - tidak tahu apa yang terjadi tetapi pada mesin Windows 10 saya, saya harus memastikan saya memulai semua aplikasi saya (Android Studio, VS Code, Windows Command) dengan hak tinggi (Jalankan sebagai administrator).
Tahir Khalid
Saya menggunakan MacOS
yashatreya
Saya menciptakan kembali proyek menggunakan CLI dan mulai bekerja :-(
Tahir Khalid
@TahirKhalid Berarti Anda memulai proyek baru menggunakan init asli-reaksi? Bisakah Anda menjelaskan sedikit, terima kasih
yashatreya
Ya saya membuat ulang proyek, tetapi kali ini saya memastikan izinnya benar. Saya akan menggunakan konsol MacOS dan chmod folder dan file untuk memastikan akses baca / tulis yang benar
Tahir Khalid

Jawaban:

15

SOLUSI 1 (bekerja untuk saya)

Solusi bagi saya adalah menghapus baris berikut

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

Pastikan untuk menghapusnya di mana-mana. Saya memiliki baris ini di build.gradle (app) dan juga di settings.gradle .

Setelah itu, jalankan lagi npx react-native run-android konsol akan menampilkan kesalahan nyata, memperbaiki kesalahan dan mengembalikan garis yang telah Anda hapus.

Dalam kasus saya kesalahan terjadi karena saya telah menggunakan versi Node yang lebih lama dan kedua kalinya terjadi saya perlu menyinkronkan proyek saya lagi


SOLUSI 2

Hapus file yang ditemukannya kesalahan sebagai "Karakter yang dibaca saat ini adalah 'E' dengan nilai int 69"

Menghapus

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

bekerja untuk orang lain juga.


SOLUSI 3

Perbarui @ react-native-community / cli ke versi terbaru.

Pengodean yang bagus!

Faustino Gagneten
sumber
Instalasi dari nodejs langsung di MacOS juga bekerja untuk saya juga, terima kasih! Melakukan brew menginstal, bahkan dengan menghapus dan menghubungkan kembali langkah-langkah tidak berhasil. Sarankan framing jawaban Anda untuk menyoroti unduhan nodejs secara langsung, dan kemudian menyelesaikannya di bawah.
Kelton. Tanggal
Ternyata saya masih punya masalah. Solusinya membantu saya melihat kesalahan sintaksis kecil di android/app/src/main/AndroidManifest.xmlfile saya . Dengan itu sekarang diperbaiki, saya bisa menghidupkan kembali jalur lainnya.
Kelton. Tanggal
1
Terima kasih telah berbagi. Saya akan memperbarui jawabannya agar lebih jelas!
Faustino Gagneten
@ Kelton.Temby, Anda dapat mengedit jawaban saya untuk membuatnya lebih jelas bagi pengguna lain seperti yang Anda sebutkan.
Faustino Gagneten
3

Saya pikir masalah ini hanya ada di versi yang lebih baru (0.61) Saya memiliki masalah yang sama dan saya hanya menggunakan versi yang lebih lama (0.60.0)

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

Baru saja menghapus folder build di dalam android dan pergi ke folder android dan kemudian di powershell diketik ./gradlewbersih lalu cd..=>npx react-native run-android

lucas augustus
sumber
0

Harap pastikan data AndroidManifest.xml dalam tanda kutip yang tepat "" bukan "". Ini biasanya terjadi ketika kita mengonfigurasi firebase dan menyalin menempel dependensi.

vinny
sumber