I'm building a React Native app (because of using IOS + Android) (using version 0.78) on Windows, and when I run:
.\gradlew clean
in VSC terminal, I get the following error:
ERROR: autolinkLibrariesFromCommand: process cmd /c npx @react-native-community/cli config exited with error code: 1
FAILURE: Build failed with an exception.
* Where:
Settings file 'C:\Users\jason\TicketHive\android\settings.gradle' line: 3
* What went wrong:
A problem occurred evaluating settings 'android'.
> ERROR: autolinkLibrariesFromCommand: process cmd /c npx @react-native-community/cli config exited with error code: 1
My Android\build.gradle:
buildscript {
ext {
buildToolsVersion = "35.0.0"
minSdkVersion = 24
compileSdkVersion = 35
targetSdkVersion = 35
ndkVersion = "27.1.12297006"
kotlinVersion = "2.0.21"
}
repositories {
google()
mavenCentral()
}
dependencies {
classpath("com.android.tools.build:gradle")
classpath("com.facebook.react:react-native-gradle-plugin")
classpath(".jetbrains.kotlin:kotlin-gradle-plugin")
}
}
apply plugin: "com.facebook.react.rootproject"
My Android\App\Build.gradle:
apply plugin: "com.android.application"
apply plugin: ".jetbrains.kotlin.android"
apply plugin: "com.facebook.react"
/**
* This is the configuration block to customize your React Native Android app.
* By default you don't need to apply any configuration, just uncomment the lines you need.
*/
react {
/* Folders */
// The root of your project, i.e. where "package.json" lives. Default is '../..'
// root = file("../../")
// The folder where the react-native NPM package is. Default is ../../node_modules/react-native
// reactNativeDir = file("../../node_modules/react-native")
// The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen
// codegenDir = file("../../node_modules/@react-native/codegen")
// The cli.js file which is the React Native CLI entrypoint. Default is ../../node_modules/react-native/cli.js
// cliFile = file("../../node_modules/react-native/cli.js")
/* Variants */
// The list of variants to that are debuggable. For those we're going to
// skip the bundling of the JS bundle and the assets. By default is just 'debug'.
// If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.
// debuggableVariants = ["liteDebug", "prodDebug"]
/* Bundling */
// A list containing the node command and its flags. Default is just 'node'.
// nodeExecutableAndArgs = ["node"]
//
// The command to run when bundling. By default is 'bundle'
// bundleCommand = "ram-bundle"
//
// The path to the CLI configuration file. Default is empty.
// bundleConfig = file(../rn-cli.config.js)
//
// The name of the generated asset file containing your JS bundle
// bundleAssetName = "MyApplication.android.bundle"
//
// The entry file for bundle generation. Default is 'index.android.js' or 'index.js'
// entryFile = file("../js/MyApplication.android.js")
//
// A list of extra flags to pass to the 'bundle' commands.
// See .md#bundle
// extraPackagerArgs = []
/* Hermes Commands */
// The hermes compiler command to run. By default it is 'hermesc'
// hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc"
//
// The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
// hermesFlags = ["-O", "-output-source-map"]
/* Autolinking */
autolinkLibrariesWithApp()
}
/**
* Set this to true to Run Proguard on Release builds to minify the Java bytecode.
*/
def enableProguardInReleaseBuilds = false
/**
* The preferred build flavor of JavaScriptCore (JSC)
*
* For example, to use the international variant, you can use:
* `def jscFlavor = io.github.react-native-community:jsc-android-intl:2026004.+`
*
* 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 = 'io.github.react-native-community:jsc-android:2026004.+'
android {
ndkVersion rootProject.ext.ndkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
compileSdk rootProject.extpileSdkVersion
namespace "com.tickethive"
defaultConfig {
applicationId "com.tickethive"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0"
}
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 /docs/signed-apk-android.
signingConfig signingConfigs.debug
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
}
}
dependencies {
// The version of react-native is set by the React Native Gradle Plugin
implementation("com.facebook.react:react-android")
if (hermesEnabled.toBoolean()) {
implementation("com.facebook.react:hermes-android")
} else {
implementation jscFlavor
}
}
My settings.gradle:
pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") }
plugins { id("com.facebook.react.settings") }
extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand() }
rootProject.name = 'TicketHive'
include ':app'
includeBuild('../node_modules/@react-native/gradle-plugin')
My App.tsx:
/**
* TicketHive App
*
* Dit is een voorbeeld met een splash-scherm en een map.
* De splash gaat na 3 seconden automatisch naar het map-scherm.
*/
import React, {JSX, useEffect} from 'react';
import {
View,
Text,
StyleSheet,
ActivityIndicator,
SafeAreaView,
} from 'react-native';
import MapView, {Marker} from 'react-native-maps';
import {NavigationContainer} from '@react-navigation/native';
import {createNativeStackNavigator} from '@react-navigation/native-stack';
type RootStackParamList = {
Splash: undefined;
Map: undefined;
};
const Stack = createNativeStackNavigator<RootStackParamList>();
// Splash Screen: toont een logo of welkomsttekst en laadt de app
function SplashScreen({navigation}: any): JSX.Element {
useEffect(() => {
const timer = setTimeout(() => {
navigation.replace('Map');
}, 3000);
return () => clearTimeout(timer);
}, [navigation]);
return (
<View style={styles.splashContainer}>
<Text style={styles.splashText}>Welkom bij TicketHive</Text>
<ActivityIndicator size="large" color="#ffffff" />
</View>
);
}
// Map Screen: toont een kaart met een voorbeeldmarker
function MapScreen(): JSX.Element {
return (
<SafeAreaView style={styles.container}>
<MapView
style={styles.map}
initialRegion={{
latitude: 52.370216, // voorbeeld: Amsterdam
longitude: 4.895168,
latitudeDelta: 0.0922,
longitudeDelta: 0.0421,
}}>
<Marker
coordinate={{latitude: 52.370216, longitude: 4.895168}}
title="Event locatie"
description="Beschrijving van het event"
/>
</MapView>
</SafeAreaView>
);
}
export default function App(): JSX.Element {
return (
<NavigationContainer>
<Stack.Navigator
initialRouteName="Splash"
screenOptions={{headerShown: false}}>
<Stack.Screen name="Splash" component={SplashScreen} />
<Stack.Screen name="Map" component={MapScreen} />
</Stack.Navigator>
</NavigationContainer>
);
}
const styles = StyleSheet.create({
splashContainer: {
flex: 1,
backgroundColor: '#4F6D7A',
alignItems: 'center',
justifyContent: 'center',
},
splashText: {
fontSize: 24,
fontWeight: 'bold',
color: '#fff',
marginBottom: 20,
},
container: {
flex: 1,
backgroundColor: '#fff',
},
map: {
flex: 1,
},
});
I keep on encountering errors for just setting up the APP.
What I use? Environment details:
OS: Windows 11
Node.js: 22.12.0
React Native: 0.78
Android Studio: 2024.3.1
Java: OpenJDK 17
Gradle: Gradle 8.12 (gradle-wrapper.properties)