diff --git a/android/.gitignore b/android/.gitignore index 48354a3df..3ce4ac3fa 100644 --- a/android/.gitignore +++ b/android/.gitignore @@ -1,5 +1,8 @@ # Using Android gitignore template: https://github.com/github/gitignore/blob/HEAD/Android.gitignore +gradle.properties.secrets +time-safari-upload-key-pkcs12.jks + # Built application files *.apk *.aar diff --git a/android/app/build.gradle b/android/app/build.gradle index e53e40a13..0fecfe8be 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,14 +1,38 @@ apply plugin: 'com.android.application' +// Default values for signing properties +project.ext.MY_KEYSTORE_FILE = "" +project.ext.MY_KEYSTORE_PASSWORD = "" +project.ext.MY_KEY_ALIAS = "" +project.ext.MY_KEY_PASSWORD = "" + +// Try to load from environment variables first +project.ext.MY_KEYSTORE_FILE = System.getenv('ANDROID_KEYSTORE_FILE') ?: "" +project.ext.MY_KEYSTORE_PASSWORD = System.getenv('ANDROID_KEYSTORE_PASSWORD') ?: "" +project.ext.MY_KEY_ALIAS = System.getenv('ANDROID_KEY_ALIAS') ?: "" +project.ext.MY_KEY_PASSWORD = System.getenv('ANDROID_KEY_PASSWORD') ?: "" + +// If no environment variables, try to load from secrets file +if (!project.ext.MY_KEYSTORE_FILE) { + def secretsPropertiesFile = rootProject.file("gradle.properties.secrets") + if (secretsPropertiesFile.exists()) { + Properties secretsProperties = new Properties() + secretsProperties.load(new FileInputStream(secretsPropertiesFile)) + secretsProperties.each { name, value -> + project.ext[name] = value + } + } +} + android { namespace 'app.timesafari' compileSdk rootProject.ext.compileSdkVersion defaultConfig { - applicationId "app.timesafari" + applicationId "app.timesafari.app" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 1 - versionName "1.0" + versionCode 9 + versionName "0.4.4" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. @@ -16,10 +40,41 @@ android { ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~' } } + signingConfigs { + release { + if (project.ext.MY_KEYSTORE_FILE && + project.ext.MY_KEYSTORE_PASSWORD && + project.ext.MY_KEY_ALIAS && + project.ext.MY_KEY_PASSWORD) { + + storeFile file(project.ext.MY_KEYSTORE_FILE) + storePassword project.ext.MY_KEYSTORE_PASSWORD + keyAlias project.ext.MY_KEY_ALIAS + keyPassword project.ext.MY_KEY_PASSWORD + } + } + } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + // Only sign if we have the signing config + if (signingConfigs.release.storeFile != null) { + signingConfig signingConfigs.release + } + } + } + + // Enable bundle builds (without which it doesn't work right for bundleDebug vs bundleRelease) + bundle { + language { + enableSplit = true + } + density { + enableSplit = true + } + abi { + enableSplit = true } } }