Skip to content

Commit 0cb0bdc

Browse files
authored
Merge pull request #84 from synonymdev/feat/internal-apk
Release Build Signing Config
2 parents 4b2ea52 + f11493f commit 0cb0bdc

File tree

5 files changed

+58
-6
lines changed

5 files changed

+58
-6
lines changed

.github/workflows/ci.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ jobs:
3434
- name: gradle wrapper
3535
run: gradle wrapper
3636

37-
- name: Build with Gradle
38-
run: ./gradlew build
37+
- name: Build for Debug with Gradle
38+
run: ./gradlew assembleDebug
3939

4040
- name: Run tests
41-
run: ./gradlew test
41+
run: ./gradlew testDebugUnitTest
4242

4343
# TODO ADD COMPOSE TESTS STEP
4444

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,6 @@ local.properties
1111

1212
# Secrets
1313
google-services.json
14+
*.keystore
15+
!debug.keystore
16+
keystore.properties

README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,16 @@ Bitkit Android Native app.
1616

1717
## Localization
1818
See repo: https://github.com/synonymdev/bitkit-transifex-sync
19+
20+
## Build for Release
21+
22+
Setup the signing config:
23+
- Add the keystore file to root, eg. `./release.keystore`
24+
- Add `keystore.properties` to root of the project (see `keystore.properties.template`)
25+
26+
Run:
27+
```sh
28+
./gradlew assembleRelease
29+
```
30+
31+
APK is generated in `app/build/outputs/apk/release/`

app/build.gradle.kts

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import org.jetbrains.kotlin.compose.compiler.gradle.ComposeFeatureFlag
2+
import java.io.FileInputStream
3+
import java.util.Properties
24

35
plugins {
46
alias(libs.plugins.android.application)
@@ -10,15 +12,34 @@ plugins {
1012
alias(libs.plugins.google.services)
1113
alias(libs.plugins.room)
1214
}
15+
16+
// https://developer.android.com/studio/publish/app-signing#secure-key
17+
// Init keystoreProperties variable from keystore.properties file
18+
val keystoreProperties by lazy {
19+
val keystorePropertiesFile = rootProject.file("keystore.properties")
20+
val keystoreProperties = Properties()
21+
22+
if (keystorePropertiesFile.exists()) {
23+
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
24+
} else {
25+
keystoreProperties["storeFile"] = System.getenv("KEYSTORE_FILE") ?: ""
26+
keystoreProperties["storePassword"] = System.getenv("KEYSTORE_PASSWORD") ?: ""
27+
keystoreProperties["keyAlias"] = System.getenv("KEY_ALIAS") ?: ""
28+
keystoreProperties["keyPassword"] = System.getenv("KEY_PASSWORD") ?: ""
29+
}
30+
31+
keystoreProperties
32+
}
33+
1334
android {
1435
namespace = "to.bitkit"
1536
compileSdk = 35
1637
defaultConfig {
17-
applicationId = "to.bitkit"
38+
applicationId = "to.bitkit.dev"
1839
minSdk = 28
1940
targetSdk = 35
2041
versionCode = 1
21-
versionName = "1.0"
42+
versionName = "0.0.1"
2243
resourceConfigurations += listOf(
2344
"en", // Default (English)
2445
"ar", // Arabic
@@ -49,18 +70,29 @@ android {
4970
keyAlias = "androiddebugkey"
5071
keyPassword = "android"
5172
}
73+
create("release") {
74+
val keystoreFile = keystoreProperties.getProperty("storeFile").takeIf { it.isNotBlank() }
75+
?.let { rootProject.file(it) }
76+
storeFile = if (keystoreFile?.exists() == true) keystoreFile else null
77+
// storeFile = rootProject.file(keystoreProperties.getProperty("storeFile"))
78+
storePassword = keystoreProperties.getProperty("storePassword")
79+
keyAlias = keystoreProperties.getProperty("keyAlias")
80+
keyPassword = keystoreProperties.getProperty("keyPassword")
81+
}
5282
}
5383
buildTypes {
5484
debug {
5585
signingConfig = signingConfigs.getByName("debug")
56-
applicationIdSuffix = ".dev"
86+
// applicationIdSuffix = ".dev"
5787
}
5888
release {
5989
isMinifyEnabled = false
90+
isShrinkResources = false
6091
proguardFiles(
6192
getDefaultProguardFile("proguard-android-optimize.txt"),
6293
"proguard-rules.pro"
6394
)
95+
signingConfig = signingConfigs.getByName("release")
6496
}
6597
}
6698
compileOptions {

keystore.properties.template

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
storeFile=app/debug.keystore
2+
storePassword=android
3+
keyPassword=android
4+
keyAlias=androiddebugkey

0 commit comments

Comments
 (0)