1import java.time.Instant
2import java.time.ZoneOffset
3import java.time.format.DateTimeFormatter
6 alias(libs.plugins.android.application)
7 alias(libs.plugins.kotlin.android)
8 alias(libs.plugins.kotlin.compose)
9 alias(libs.plugins.kotlin.serialization)
10 alias(libs.plugins.hilt)
11 alias(libs.plugins.ksp)
14val commitEpoch = providers.exec {
15 commandLine("git", "log", "-1", "--format=%ct")
16}.standardOutput.asText.get().trim().toLong()
17val commitTime = Instant.ofEpochSecond(commitEpoch).atZone(ZoneOffset.UTC)
18val dateVersionName = commitTime.format(DateTimeFormatter.ofPattern("yyyy.MM.dd.HHmm"))
19val dateVersionCode = (commitEpoch / 60).toInt()
22 namespace = "com.parseable.android"
26 applicationId = "com.parseable.android"
29 versionCode = dateVersionCode
30 versionName = dateVersionName
32 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
36 if (System.getenv("RELEASE_KEYSTORE_FILE") != null) {
38 storeFile = file(System.getenv("RELEASE_KEYSTORE_FILE"))
39 storePassword = System.getenv("RELEASE_KEYSTORE_PASSWORD")
40 keyAlias = System.getenv("RELEASE_KEY_ALIAS")
41 keyPassword = System.getenv("RELEASE_KEY_PASSWORD")
48 isMinifyEnabled = true
49 isShrinkResources = true
50 signingConfig = signingConfigs.findByName("release") ?: signingConfigs.getByName("debug")
52 getDefaultProguardFile("proguard-android-optimize.txt"),
57 isMinifyEnabled = false
58 applicationIdSuffix = ".debug"
63 sourceCompatibility = JavaVersion.VERSION_17
64 targetCompatibility = JavaVersion.VERSION_17
77 unitTests.isReturnDefaultValues = true
82 arg("room.schemaLocation", "$projectDir/schemas")
87 implementation(libs.core.ktx)
88 implementation(libs.lifecycle.runtime)
89 implementation(libs.lifecycle.viewmodel.compose)
90 implementation(libs.activity.compose)
93 implementation(platform(libs.compose.bom))
94 implementation(libs.compose.ui)
95 implementation(libs.compose.ui.graphics)
96 implementation(libs.compose.ui.tooling.preview)
97 implementation(libs.compose.material3)
98 implementation(libs.compose.material.icons)
101 implementation(libs.navigation.compose)
104 implementation(libs.hilt.android)
105 ksp(libs.hilt.compiler)
106 implementation(libs.hilt.navigation.compose)
109 implementation(libs.okhttp)
112 implementation(libs.kotlinx.serialization.json)
114 // DataStore for preferences
115 implementation(libs.datastore.preferences)
117 // Encrypted storage — alpha06 is the latest available; stable 1.1.0 has not shipped.
118 // Fallback to 1.0.0 is not viable as it uses the deprecated MasterKeys API.
119 implementation(libs.security.crypto)
121 // Room database for favorites
122 implementation(libs.room.runtime)
123 implementation(libs.room.ktx)
124 ksp(libs.room.compiler)
127 implementation(libs.coroutines.android)
130 implementation(libs.timber)
133 testImplementation(libs.junit)
134 testImplementation(libs.coroutines.test)
135 testImplementation(libs.mockk)
136 androidTestImplementation(libs.android.test.ext)
137 androidTestImplementation(libs.espresso.core)
138 androidTestImplementation(platform(libs.compose.bom))
139 androidTestImplementation(libs.compose.ui.test)
140 debugImplementation(libs.compose.ui.tooling)
141 debugImplementation(libs.compose.ui.test.manifest)
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list