8

I can run my react-native project. It works fine. I have tested by running using react-native. But when I'm trying to run it with Android studio I get the following error.

*FAILURE: Build failed with an exception.
* Where:
Script 'D:\EmployeeApp\EmployeeMobileAppGit\employeemobile-app\node_modules\@react-native-community\cli-platform-android\native_modules.gradle' line: 195
* What went wrong:
A problem occurred evaluating settings 'employeeMobile'.
> 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: EPERM: operation not permitted, scandir 'D:/EmployeeApp/EmployeeMobileAppGit/employeemobile-app/android/app/build/intermediates/signing_config/debug/out/signing-config.json'    at Object.readdirSync (fs.js:790:3)    at GlobSync._readdir (D:\EmployeeApp\EmployeeMobileAppGit\employeemobile-app\node_modules\glob\sync.js:288:41)    at GlobSync._readdirInGlobStar (D:\EmployeeApp\EmployeeMobileAppGit\employeemobile-app\node_modules\glob\sync.js:267:20)    at GlobSync._readdir (D:\EmployeeApp\EmployeeMobileAppGit\employeemobile-app\node_modules\glob\sync.js:276:17)    at GlobSync._processReaddir (D:\EmployeeApp\EmployeeMobileAppGit\employeemobile-app\node_modules\glob\sync.js:137:22)    at GlobSync._process (D:\EmployeeApp\EmployeeMobileAppGit\employeemobile-app\node_modules\glob\sync.js:132:10)    at GlobSync._processGlobStar (D:\EmployeeApp\EmployeeMobileAppGit\employeemobile-app\node_modules\glob\sync.js:380:10)    at GlobSync._process (D:\EmployeeApp\EmployeeMobileAppGit\employeemobile-app\node_modules\glob\sync.js:130:10)    at GlobSync._processGlobStar (D:\EmployeeApp\EmployeeMobileAppGit\employeemobile-app\node_modules\glob\sync.js:383:10)    at GlobSync._process (D:\EmployeeApp\EmployeeMobileAppGit\employeemobile-app\node_modules\glob\sync.js:130:10)
  ^
* 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
BUILD FAILED in 3s
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: EPERM: operation not permitted, scandir 'D:/EmployeeApp/EmployeeMobileAppGit/employeemobile-app/android/app/build/intermediates/signing_config/debug/out/signing-config.json'    at Object.readdirSync (fs.js:790:3)    at GlobSync._readdir (D:\EmployeeApp\EmployeeMobileAppGit\employeemobile-app\node_modules\glob\sync.js:288:41)    at GlobSync._readdirInGlobStar (D:\EmployeeApp\EmployeeMobileAppGit\employeemobile-app\node_modules\glob\sync.js:267:20)    at GlobSync._readdir (D:\EmployeeApp\EmployeeMobileAppGit\employeemobile-app\node_modules\glob\sync.js:276:17)    at GlobSync._processReaddir (D:\EmployeeApp\EmployeeMobileAppGit\employeemobile-app\node_modules\glob\sync.js:137:22)    at GlobSync._process (D:\EmployeeApp\EmployeeMobileAppGit\employeemobile-app\node_modules\glob\sync.js:132:10)    at GlobSync._processGlobStar (D:\EmployeeApp\EmployeeMobileAppGit\employeemobile-app\node_modules\glob\sync.js:380:10)    at GlobSync._process (D:\EmployeeApp\EmployeeMobileAppGit\employeemobile-app\node_modules\glob\sync.js:130:10)    at GlobSync._processGlobStar (D:\EmployeeApp\EmployeeMobileAppGit\employeemobile-app\node_modules\glob\sync.js:383:10)    at GlobSync._process (D:\EmployeeApp\EmployeeMobileAppGit\employeemobile-app\node_modules\glob\sync.js:130:10)
^
10:38:38 AM: Task execution finished.*

My project Gradle file is as follows.

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    ext {
        buildToolsVersion = "28.0.3"
        minSdkVersion = 16
        compileSdkVersion = 28
        targetSdkVersion = 28
        supportLibVersion = "28.0.0"
    }
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.2'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
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()
    }
}

My app/Gradle file is as follows.

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"
/**
 * Set this to true to create two separate APKs instead of one:
 *   - An APK that only works on ARM devices
 *   - An APK that only works on x86 devices
 * The advantage is the size of the APK is reduced by about 4MB.
 * Upload all the APKs to the Play Store and people will download
 * the correct one based on the CPU architecture of their device.
 */
def enableSeparateBuildPerCPUArchitecture = false
/**
 * Run Proguard to shrink the Java bytecode in release builds.
 */
def enableProguardInReleaseBuilds = false
/**
 * The preferred build flavor of JavaScriptCore.
 *
 * For example, to use the international variant, you can use:
 * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
 *
 * The international variant includes ICU i18n library and necessary data
 * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
 * give correct results when using with locales other than en-US.  Note that
 * this variant is about 6MiB larger per architecture than default.
 */
def jscFlavor = 'org.webkit:android-jsc:+'
/**
 * Whether to enable the Hermes VM.
 *
 * This should be set on project.ext.react and mirrored here.  If it is not set
 * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
 * and the benefits of using Hermes will therefore be sharply reduced.
 */
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.employeemobile"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 1
        versionName "1.0"
    }
    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'
        }
          release {
            if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {
                storeFile file(MYAPP_UPLOAD_STORE_FILE)
                storePassword MYAPP_UPLOAD_STORE_PASSWORD
                keyAlias MYAPP_UPLOAD_KEY_ALIAS
                keyPassword MYAPP_UPLOAD_KEY_PASSWORD
            }
        }
    }
    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
            signingConfig signingConfigs.release
            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
            }
        }
    }
    packagingOptions {
        pickFirst '**/armeabi-v7a/libc++_shared.so'
        pickFirst '**/x86/libc++_shared.so'
        pickFirst '**/arm64-v8a/libc++_shared.so'
        pickFirst '**/x86_64/libc++_shared.so'
        pickFirst '**/x86/libjsc.so'
        pickFirst '**/armeabi-v7a/libjsc.so'
    }
}
dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "com.facebook.react:react-native:+"  // From node_modules
    if (enableHermes) {
      def hermesPath = "../../node_modules/hermesvm/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)
5
  • 2
    Try clearing cache on android studio and restart from file->clear cache and restart Commented Jul 25, 2019 at 5:40
  • Still its the same exception :( Commented Jul 25, 2019 at 6:18
  • whats your android studio version, you will have to have the latest to run this try updating your android studio Commented Jul 25, 2019 at 6:40
  • When you choose the folder to run React native in the Android studio, you should select android folder and not project folder. Commented Jul 25, 2019 at 6:50
  • I have the latest version of Android Studio and have opened the android folder Commented Jul 25, 2019 at 7:28

4 Answers 4

7

I think it's some permission problem. Run Cmd as admin then manually delete the files:

app/android/app/build/intermediates/signing_config/debug/out/signing-config.json
app/android/app/build/intermediates/signing_config/release/out/signing-config.json

solved the problem for me

Sign up to request clarification or add additional context in comments.

Comments

4

Delete signing-config.json from \app\build\intermediates\signing_config\debug\out Then File->invalidate cache and restart. This worked for me.

Comments

0

Please try to downgrade gradle classpath version once

classpath 'com.android.tools.build:gradle:3.3.2'

Comments

0

Are you using neact-native-firebase? i had this same exact problem, if you installed it using:

yarn add @react-native-firebase/app

try uninstalling it:

yarn remove @react-native-firebase/app

and installing using:

yarn add react-native-firebase

edit:

you might run into this issue after that:

https://github.com/invertase/react-native-firebase/issues/1588

1 Comment

I'm not using react-native-firebase

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.