Skip to content

Instantly share code, notes, and snippets.

@mileskrell
Created April 19, 2019 04:26
Show Gist options
  • Star 51 You must be signed in to star a gist
  • Fork 9 You must be signed in to fork a gist
  • 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
}
}
}
@RahulSDeshpande
Copy link

RahulSDeshpande commented Jan 30, 2022

Thanks for sharing the snippet.
But line storeFile = file("/home/miles/keystore.jks") is only valid for your local machine.
It will not working on CI/CD pipeline.

For that to work you have to give the relative path of your keystore file.

@jharman-notion
Copy link

or you can define it using gradle.properties so that your CI/CD pipline give the property value for that environment and you define it locally for your machine.

@RahulSDeshpande
Copy link

RahulSDeshpande commented Feb 6, 2022

@jharman-notion Right :)

@mileskrell
Copy link
Author

@RahulSDeshpande @jharman-notion yep! that's right. (btw, how did you both stumble across this at the same time? did someone link to it somewhere? πŸ™‚)

@jharman-notion
Copy link

It's the top search result in google for 'signing configs android kts' and I was looking for an example when converting my build files to kts.

@RahulSDeshpande
Copy link

Yes, same here πŸ˜πŸ˜πŸ˜„πŸ˜„

@baskarankannan
Copy link

Hi, I am using kotlin dsl and in build.gradle.kts file i'm getting the key store values from properties file but i am facing the issue unable to read the keystore file location. Please help out this, how to give customized key store location.
Currently it takes default location.

@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 πŸ™πŸΎπŸ™πŸΎπŸ™πŸΎ

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