Home > front end >  Flutter Android Studio Error: couldn't get unknown property 'keystoreProperty'
Flutter Android Studio Error: couldn't get unknown property 'keystoreProperty'

Time:10-18

I'm new to flutter and I'm trying to run my first project without any changes to the source code of the demo app. But I keep getting the following error:

Launching lib\main.dart on SM A115F in release mode...
Running Gradle task 'assembleRelease'...

FAILURE: Build failed with an exception.

* Where:
Build file 'C:\Users\METRO\StudioProjects\helloworld\android\app\build.gradle' line: ??

* What went wrong:
A problem occurred evaluating project ':app'.
> Could not get unknown property 'keystoreProperties' for SigningConfig_Decorated{name=release, storeFile=null, storePassword=null, keyAlias=null, keyPassword=null, storeType=pkcs12, v1SigningEnabled=true, v2SigningEnabled=true, enableV1Signing=null, enableV2Signing=null, enableV3Signing=null, enableV4Signing=null} of type com.android.build.gradle.internal.dsl.SigningConfig.

* 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 5s
Exception: Gradle task assembleRelease failed with exit code 1

I tried everything from upgrading gradle to generating keystore even if I'm just trying to run the project, this is my app\build.gradle file:

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
    throw new FileNotFoundException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}

apply plugin: 'com.android.application'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
    compileSdkVersion 30

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.example.helloworld"
        minSdkVersion 16
        targetSdkVersion 30
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName.toString()
    }
signingConfigs{
    release {
        keyAlias keystoreProperties['key']
        keyPassword keystoreProperties['Kha128256512$']
        storeFile keystoreProperties['C:\\Users\\METRO\\key.jks'] ? file(keystoreProperties['storeFile']) : null
        storePassword keystoreProperties['Kha128256512$']
    }
}
    buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.release
        }
    }
}

flutter {
    source '../..'
}
if (project.hasProperty("MyProject.signing")
        && new File(project.property("MyProject.signing") ".gradle").exists()){
    apply from: project.property("MyProject.signing") ".gradle"
}
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()){
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

And this is my keystore.properties file :

storePassword = Kha128256512$
keyPassword = Kha128256512$
keyAlias = key
storeFile = C:\\Users\\METRO\\key.jks

Note: android studio highlights warnings in front of storePassword,keyPassword,keyAlias as unused properties. Is this is the problem ? If it is, how to solve it ? PLEASE help.

CodePudding user response:

You seem to have misconfigured your app\build.gradle file and used double back slashes on your keystore.properties.

Add this at the end of your localProperties instead of the bottom of that file.

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
        keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

Change your

signingConfigs{
    release {
        keyAlias keystoreProperties['key']
        keyPassword keystoreProperties['Kha128256512$']
        storeFile keystoreProperties['C:\\Users\\METRO\\key.jks'] ? file(keystoreProperties['storeFile']) : null
        storePassword keystoreProperties['Kha128256512$']
    }

to

signingConfigs {            
      release {
                    keyAlias keystoreProperties['keyAlias']
                    keyPassword keystoreProperties['keyPassword']
                    storeFile keystoreProperties['storeFile'] ? 
                    file(keystoreProperties['storeFile']) : null
                    storePassword keystoreProperties['storePassword']
       }

and run this on Terminal

keytool -genkey -v -keystore c:\Users\YOUR_PREFERRED_LOCATION\upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload

and make sure you set your location like this in your key.properties file

storeFile=c:/Users/YOUR LOCATION/upload-keystore.jks

CodePudding user response:

follow the steps and you will get rid of the problem:

Flutter signing the application

You probably have misconfigured the file and the credentials too.

  • Related