Skip to content

Instantly share code, notes, and snippets.

@mileskrell
Created April 19, 2019 04:26
Show Gist options
  • Save mileskrell/7074c10cb3298a2c9d75e733be7061c2 to your computer and use it in GitHub Desktop.
Save mileskrell/7074c10cb3298a2c9d75e733be7061c2 to your computer and use it in GitHub Desktop.
Example of declaring Android signing configs using Gradle Kotlin DSL
android {
signingConfigs {
getByName("debug") {
keyAlias = "debug"
keyPassword = "my debug key password"
storeFile = file("/home/miles/keystore.jks")
storePassword = "my keystore password"
}
create("release") {
keyAlias = "release"
keyPassword = "my release key password"
storeFile = file("/home/miles/keystore.jks")
storePassword = "my keystore password"
}
}
compileSdkVersion(28)
defaultConfig {
applicationId = "com.mileskrell.someneatapp"
minSdkVersion(19)
targetSdkVersion(28)
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
getByName("release") {
isMinifyEnabled = false
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
signingConfig = signingConfigs.getByName("release")
isDebuggable = false
}
getByName("debug") {
signingConfig = signingConfigs.getByName("debug")
isDebuggable = true
}
}
}
@jharman-notion
Copy link

How are you reading from the properties file?

This is working for me

val KEYSTORE_FILE: String by project   //loads the absolute file path from properties (has to be in properties as KEYSTORE_FILE=/my/path

create("release") {
            storeFile = file(KEYSTORE_FILE)
           
        }

@Baneeishaque
Copy link

How are you reading from the properties file?

This is working for me

val KEYSTORE_FILE: String by project   //loads the absolute file path from properties (has to be in properties as KEYSTORE_FILE=/my/path

create("release") {
            storeFile = file(KEYSTORE_FILE)
           
        }

working successfully.

if you don't mind, please explain how to generate a key from the command line, I am tired of with it.

@Akramhussain4
Copy link

I haven't tried this yet but this might help with CI/CD pipelines:

file("${System.getProperty("user.home")}/exampleKeyStore.jks")

@saifi369
Copy link

saifi369 commented Jun 3, 2023

Thanks for sharing this man 🙏🏾🙏🏾🙏🏾

@omkar-tenkale
Copy link

Using keystore.properties files (create it in project root, gitignored)

Contents of keystore.properties

storePassword=mypass
keyPassword=mypass
keyAlias=key0

In app module build.gradle.kts


...

    defaultConfig {
        applicationId = "com.myapp"
        minSdk = 24
        targetSdk = 34
        versionCode = 2
        versionName = "1.1"

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables {
            useSupportLibrary = true
        }
    }

    val keystorePropertiesFile = rootProject.file("keystore.properties")
    val keystoreProperties = Properties().apply {
        load(FileInputStream(keystorePropertiesFile))
    }
    signingConfigs {
        create("release") {
            storeFile = file("$rootDir/keystore.jks")
            storePassword = keystoreProperties["storePassword"] as String
            keyAlias = keystoreProperties["keyAlias"] as String
            keyPassword = keystoreProperties["keyPassword"] as String
        }

    }

    buildTypes {
        release {
            isMinifyEnabled = true
            isShrinkResources = true
            isDebuggable = true
            signingConfig = signingConfigs["release"]
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    
    ...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment