Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 10 additions & 7 deletions .github/workflows/release-apk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,16 @@ jobs:
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
run: |
if [ -n "$KEYSTORE_BASE64" ] && [ -n "$KEYSTORE_PASSWORD" ] && [ -n "$KEY_ALIAS" ] && [ -n "$KEY_PASSWORD" ]; then
echo "$KEYSTORE_BASE64" | base64 --decode > "$GITHUB_WORKSPACE/release-keystore.jks"
echo "KEYSTORE_PATH=$GITHUB_WORKSPACE/release-keystore.jks" >> "$GITHUB_ENV"
echo "KEYSTORE_PASSWORD=$KEYSTORE_PASSWORD" >> "$GITHUB_ENV"
echo "KEY_ALIAS=$KEY_ALIAS" >> "$GITHUB_ENV"
echo "KEY_PASSWORD=$KEY_PASSWORD" >> "$GITHUB_ENV"
fi
test -n "$KEYSTORE_BASE64" || { echo "KEYSTORE_BASE64 is required"; exit 1; }
test -n "$KEYSTORE_PASSWORD" || { echo "KEYSTORE_PASSWORD is required"; exit 1; }
test -n "$KEY_ALIAS" || { echo "KEY_ALIAS is required"; exit 1; }
test -n "$KEY_PASSWORD" || { echo "KEY_PASSWORD is required"; exit 1; }
echo "$KEYSTORE_BASE64" | base64 --decode > "$GITHUB_WORKSPACE/release-keystore.jks"
test -s "$GITHUB_WORKSPACE/release-keystore.jks" || { echo "Decoded keystore is empty"; exit 1; }
echo "KEYSTORE_PATH=$GITHUB_WORKSPACE/release-keystore.jks" >> "$GITHUB_ENV"
echo "KEYSTORE_PASSWORD=$KEYSTORE_PASSWORD" >> "$GITHUB_ENV"
echo "KEY_ALIAS=$KEY_ALIAS" >> "$GITHUB_ENV"
echo "KEY_PASSWORD=$KEY_PASSWORD" >> "$GITHUB_ENV"

- name: Grant execute permission for gradlew
run: chmod +x ./gradlew
Expand Down
69 changes: 26 additions & 43 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -38,38 +38,33 @@ android {
multiDexEnabled = true
}

signingConfigs {
create("release") {
val envStorePath = System.getenv("KEYSTORE_PATH")
val envStorePassword = System.getenv("KEYSTORE_PASSWORD")
val envKeyAlias = System.getenv("KEY_ALIAS")
val envKeyPassword = System.getenv("KEY_PASSWORD")

if (!envStorePath.isNullOrBlank()) {
storeFile = file(envStorePath)
storePassword = envStorePassword ?: ""
keyAlias = envKeyAlias ?: ""
keyPassword = envKeyPassword ?: ""
return@create
}
val envStorePath = System.getenv("KEYSTORE_PATH")
val envStorePassword = System.getenv("KEYSTORE_PASSWORD")
val envKeyAlias = System.getenv("KEY_ALIAS")
val envKeyPassword = System.getenv("KEY_PASSWORD")
val propFile = rootProject.file("keystore.properties")
val keystoreProps = Properties().apply {
if (propFile.exists()) {
load(propFile.inputStream())
}
}
val storeFilePath = envStorePath ?: keystoreProps["storeFile"] as? String
val storePasswordValue = envStorePassword ?: keystoreProps["storePassword"] as? String
val keyAliasValue = envKeyAlias ?: keystoreProps["keyAlias"] as? String
val keyPasswordValue = envKeyPassword ?: keystoreProps["keyPassword"] as? String
val hasReleaseSigning = !storeFilePath.isNullOrBlank() &&
!storePasswordValue.isNullOrBlank() &&
!keyAliasValue.isNullOrBlank() &&
!keyPasswordValue.isNullOrBlank()

val propFile = rootProject.file("keystore.properties")
if (!propFile.exists()) {
propFile.createNewFile()
}
val keystoreProps = Properties().apply {
load(propFile.inputStream())
signingConfigs {
if (hasReleaseSigning) {
create("release") {
storeFile = file(storeFilePath)
storePassword = storePasswordValue
keyAlias = keyAliasValue
keyPassword = keyPasswordValue
}

val storeFilePath = keystoreProps["storeFile"] as? String
val keyAliasValue = keystoreProps["keyAlias"] as? String
val keyPasswordValue = keystoreProps["keyPassword"] as? String
val storePasswordValue = keystoreProps["storePassword"] as? String

keyAlias = keyAliasValue ?: ""
keyPassword = keyPasswordValue ?: ""
storeFile = if (!storeFilePath.isNullOrBlank()) file(storeFilePath) else file("/dev/null")
storePassword = storePasswordValue ?: ""
}
}

Expand All @@ -78,19 +73,7 @@ android {
isMinifyEnabled = true
isShrinkResources = true
isDebuggable = false
val envEnabled = !System.getenv("KEYSTORE_PATH").isNullOrBlank() &&
!System.getenv("KEYSTORE_PASSWORD").isNullOrBlank() &&
!System.getenv("KEY_ALIAS").isNullOrBlank() &&
!System.getenv("KEY_PASSWORD").isNullOrBlank()
val propFile = rootProject.file("keystore.properties")
val keyStoreExists = propFile.exists() && propFile.readText().contains("storeFile")
val hasSigningValues = keyStoreExists && propFile.readText().contains("keyAlias") &&
propFile.readText().contains("storePassword")
signingConfig = if (envEnabled || hasSigningValues) {
signingConfigs.getByName("release")
} else {
signingConfigs.getByName("debug")
}
signingConfig = if (hasReleaseSigning) signingConfigs.findByName("release") else null
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
Expand Down
Loading