From 0496b94aa8ca12db5282e4a573065909fe489126 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Tue, 5 Jun 2018 19:54:53 +0530 Subject: build: Allow building release artifacts in-tree This change avoids all need for changing any file under VCS to insert signing keys and configs for release builds. Example contents of keystore.properties ``` // Location of keystore, relative to module build.gradle, // in this case, of the app module storeFile=../wireguard.jks storePassword=b3ty0uc4nth4xxth1s keyAlias=wireguard keyPassword=4ndr01dsux ``` Signed-off-by: Harsh Shandilya --- .gitignore | 2 ++ app/build.gradle | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/.gitignore b/.gitignore index 74325146..3dde301c 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,5 @@ build/ *.class *.dex *.iml +*.jks +keystore.properties diff --git a/app/build.gradle b/app/build.gradle index 7284eafd..00f4cb10 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,5 +1,9 @@ apply plugin: 'com.android.application' +// Create a variable called keystorePropertiesFile, and initialize it to your +// keystore.properties file, in the rootProject folder. +final def keystorePropertiesFile = rootProject.file("keystore.properties") + android { buildToolsVersion '27.0.3' compileOptions { @@ -17,6 +21,28 @@ android { versionCode 422 versionName '0.0.20180605' } + // If the keystore file exists + if (keystorePropertiesFile.exists()) { + // Initialize a new Properties() object called keystoreProperties. + final def keystoreProperties = new Properties() + + // Load your keystore.properties file into the keystoreProperties object. + keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) + + signingConfigs { + release { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile file(keystoreProperties['storeFile']) + storePassword keystoreProperties['storePassword'] + } + } + } + buildTypes { + release { + if (keystorePropertiesFile.exists()) signingConfig signingConfigs.release + } + } externalNativeBuild { cmake { path 'tools/CMakeLists.txt' -- cgit v1.2.3-59-g8ed1b