This commit is contained in:
@@ -0,0 +1,140 @@
|
||||
plugins {
|
||||
id 'com.android.application'
|
||||
id 'org.jetbrains.kotlin.android'
|
||||
}
|
||||
|
||||
def getVersionCode = {
|
||||
def stdout = new ByteArrayOutputStream()
|
||||
try {
|
||||
exec {
|
||||
commandLine 'git', 'rev-list', '--count', 'HEAD'
|
||||
standardOutput = stdout
|
||||
errorOutput = new ByteArrayOutputStream()
|
||||
ignoreExitValue = true
|
||||
}
|
||||
def count = stdout.toString().trim()
|
||||
return count.isInteger() ? count.toInteger() : 1
|
||||
} catch (ignored) {
|
||||
return 1
|
||||
}
|
||||
}
|
||||
|
||||
def signingPropertiesFile = rootProject.file('keystore.properties')
|
||||
def signingProperties = new Properties()
|
||||
if (signingPropertiesFile.exists()) {
|
||||
signingPropertiesFile.withInputStream(signingProperties.&load)
|
||||
}
|
||||
|
||||
def readSigningValue = { String... keys ->
|
||||
keys.collect { key -> System.getenv(key) ?: signingProperties.getProperty(key) }
|
||||
.find { value -> value != null && !value.trim().isEmpty() }
|
||||
}
|
||||
|
||||
def releaseKeystorePath = readSigningValue('CODEXMOBILE_STORE_FILE', 'CODEXMOBILE_KEYSTORE_FILE')
|
||||
def releaseKeystorePassword = readSigningValue('CODEXMOBILE_STORE_PASSWORD', 'CODEXMOBILE_KEYSTORE_PASSWORD')
|
||||
def releaseKeyAlias = readSigningValue('CODEXMOBILE_KEY_ALIAS')
|
||||
def releaseKeyPassword = readSigningValue('CODEXMOBILE_KEY_PASSWORD')
|
||||
def hasReleaseSigning = [releaseKeystorePath, releaseKeystorePassword, releaseKeyAlias, releaseKeyPassword].every { it }
|
||||
def releaseSigningHelp = '''Release signing is not configured.
|
||||
|
||||
Provide these values either as environment variables or in keystore.properties:
|
||||
- CODEXMOBILE_STORE_FILE or CODEXMOBILE_KEYSTORE_FILE
|
||||
- CODEXMOBILE_STORE_PASSWORD or CODEXMOBILE_KEYSTORE_PASSWORD
|
||||
- CODEXMOBILE_KEY_ALIAS
|
||||
- CODEXMOBILE_KEY_PASSWORD
|
||||
'''
|
||||
|
||||
android {
|
||||
namespace 'dev.reversed.codexbarmobile'
|
||||
compileSdk 34
|
||||
|
||||
signingConfigs {
|
||||
if (hasReleaseSigning) {
|
||||
release {
|
||||
storeFile rootProject.file(releaseKeystorePath)
|
||||
storePassword releaseKeystorePassword
|
||||
keyAlias releaseKeyAlias
|
||||
keyPassword releaseKeyPassword
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
applicationId 'dev.reversed.codexbarmobile'
|
||||
minSdk 26
|
||||
targetSdk 34
|
||||
versionCode getVersionCode()
|
||||
versionName '1.0.0'
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
debug {
|
||||
applicationIdSuffix '.debug'
|
||||
versionNameSuffix '-debug'
|
||||
}
|
||||
release {
|
||||
if (hasReleaseSigning) {
|
||||
signingConfig signingConfigs.release
|
||||
}
|
||||
minifyEnabled true
|
||||
shrinkResources true
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_17
|
||||
targetCompatibility JavaVersion.VERSION_17
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
jvmTarget = '17'
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
compose true
|
||||
}
|
||||
|
||||
composeOptions {
|
||||
kotlinCompilerExtensionVersion '1.5.14'
|
||||
}
|
||||
|
||||
packaging {
|
||||
resources {
|
||||
excludes += '/META-INF/{AL2.0,LGPL2.1}'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gradle.taskGraph.whenReady { graph ->
|
||||
def needsSignedRelease = graph.allTasks.any { task ->
|
||||
task.project == project &&
|
||||
task.name.toLowerCase().contains('release') &&
|
||||
!task.name.toLowerCase().contains('lint') &&
|
||||
!task.name.toLowerCase().contains('unittest') &&
|
||||
!task.name.toLowerCase().contains('signingreport')
|
||||
}
|
||||
|
||||
if (needsSignedRelease && !hasReleaseSigning) {
|
||||
throw new GradleException(releaseSigningHelp)
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation 'androidx.core:core-ktx:1.13.1'
|
||||
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.8.4'
|
||||
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.4'
|
||||
implementation 'androidx.lifecycle:lifecycle-viewmodel-compose:2.8.4'
|
||||
implementation 'androidx.activity:activity-compose:1.9.2'
|
||||
implementation platform('androidx.compose:compose-bom:2024.06.00')
|
||||
implementation 'androidx.compose.ui:ui'
|
||||
implementation 'androidx.compose.ui:ui-tooling-preview'
|
||||
implementation 'androidx.compose.material3:material3'
|
||||
implementation 'androidx.compose.material:material-icons-extended'
|
||||
implementation 'androidx.security:security-crypto:1.1.0-alpha06'
|
||||
implementation 'com.google.errorprone:error_prone_annotations:2.28.0'
|
||||
implementation 'com.squareup.okhttp3:okhttp:4.12.0'
|
||||
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1'
|
||||
debugImplementation 'androidx.compose.ui:ui-tooling'
|
||||
}
|
||||
Reference in New Issue
Block a user