Lỗi: Không thể xác định ký tự hiện tại, nó không phải là một chuỗi, số, mảng hoặc đối tượng trong Reac -igen cho android


9

Bất cứ khi nào tôi chạy Reac -igen run-android trong khi vẫn chạy trình giả lập, tôi gặp lỗi này. run-ios run-ios hoàn toàn ổn.

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

Như đã chỉ ra trong thông báo lỗi, tôi đã thử chạy npm uninstall -g react-native react-native-clinhưng nó không hoạt động.

Thông tin về môi trường của tôi:

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 bên dưới:

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 bên dưới:


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

Ban đầu tôi gặp lỗi này: lỗi xây dựng gốc-Reac: Lỗi không thể tìm thấy phương thức triển khai () cho các đối số [jscFlavor] trên dự án ': app' của loại org.gradle.api.Project nhưng bây giờ tôi đang nhận được ở trên.


Bạn đang sử dụng hệ điều hành nào? Tôi thấy vấn đề của mình là do quyền của tệp trong các thư mục xây dựng Android - không biết chuyện gì đã xảy ra nhưng trên máy Windows 10 của tôi, tôi phải đảm bảo rằng tôi đã khởi động tất cả các ứng dụng của mình (Android Studio, VS Code, Windows Command) với quyền nâng cao (Chạy là quản trị viên).
Tahir Khalid

Tôi đang sử dụng MacOS
yashatreya

Tôi đã tạo lại dự án bằng CLI và nó bắt đầu hoạt động :-(
Tahir Khalid

@TahirKhalid Có nghĩa là bạn đã bắt đầu một dự án hoàn toàn mới bằng cách sử dụng init gốc? Bạn có thể vui lòng giải thích một chút không, cảm ơn
yashatreya

Có tôi đã tạo lại dự án nhưng lần này tôi đã đảm bảo quyền là chính xác. Tôi sẽ sử dụng bảng điều khiển MacOS và kiểm tra các thư mục và tệp để đảm bảo quyền truy cập đọc / ghi chính xác
Tahir Khalid

Câu trả lời:


15

GIẢI PHÁP 1 (làm việc cho tôi)

Giải pháp cho tôi là xóa dòng sau

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

Hãy chắc chắn để loại bỏ nó ở khắp mọi nơi. Tôi đã có dòng này trong build.gradle (ứng dụng) và cả trong settings.gradle .

Sau đó, chạy lại npx Reac -igen run-android , giao diện điều khiển sẽ hiển thị lỗi thực sự, sửa lỗi và đặt lại các dòng bạn đã xóa.

Trong trường hợp của tôi, lỗi xảy ra do tôi đang sử dụng phiên bản Node cũ hơn và lần thứ hai xảy ra tôi cần phải đồng bộ lại dự án của mình


GIẢI PHÁP 2

Xóa các tệp mà nó đang tìm thấy lỗi là "Ký tự hiện tại đọc là 'E' với giá trị int là 69"

Xóa

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

làm việc cho người khác quá.


GIẢI PHÁP 3

Cập nhật @ Reac -igen-Community / cli lên phiên bản mới nhất.

Mã hóa tốt!


Cài đặt từ nodejs trực tiếp trên MacOS cũng hoạt động với tôi, cảm ơn bạn! Thực hiện cài đặt brew, ngay cả với các bước gỡ cài đặt và liên kết lại không hoạt động. Đề xuất đóng khung câu trả lời của bạn để làm nổi bật tải xuống nodejs trực tiếp và sau đó có cách giải quyết bên dưới.
Kelton.Temby

Hóa ra tôi vẫn có vấn đề. Cách giải quyết giúp tôi thấy một lỗi cú pháp nhỏ trong android/app/src/main/AndroidManifest.xmltệp của mình . Bây giờ đã được sửa, tôi có thể bật các dòng khác lại.
Kelton.Temby

1
Cám ơn vì đã chia sẻ. Tôi sẽ cập nhật câu trả lời để làm cho nó rõ ràng hơn!
Faustino Gagneten

@ Kelton.Temby, bạn có thể chỉnh sửa câu trả lời của tôi để làm cho nó rõ ràng hơn cho những người dùng khác như bạn đã đề cập.
Faustino Gagneten

3

Tôi nghĩ vấn đề này chỉ có ở phiên bản mới hơn (0.61) Tôi gặp vấn đề tương tự và tôi chỉ sử dụng phiên bản cũ hơn (0.60.0)

 npx react-native init AwesomeProject --version 0.60.0

1

Chỉ cần xóa thư mục xây dựng bên trong Android và chuyển đến thư mục Android và sau đó trong powershell đã gõ ./gradlewsạch rồi cd..>>npx react-native run-android


0

Vui lòng đảm bảo dữ liệu AndroidManifest.xml nằm trong dấu ngoặc kép phù hợp "" chứ không phải trên phạm vi. Điều này thường xảy ra khi chúng ta đang cấu hình căn cứ hỏa lực và sao chép dán các phụ thuộc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.