sesameApp/build.gradle
raw · 4511 bytes
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.ksp)
alias(libs.plugins.google.services)
alias(libs.plugins.firebase.crashlytics)
}
android {
namespace 'co.candyhouse.app'
compileSdk = rootProject.ext.compileSdkVersion
signingConfigs {
release {
def passStore = System.getenv("storePassword")
def passKey = System.getenv("keyPassword")
def ssmKeyAlias = System.getenv("keyAlias")
storeFile file('keystore/Sesame.jks')
storePassword "$passStore"
keyPassword "$passKey"
keyAlias "$ssmKeyAlias"
// 处理 CI 环境中的签名文件
if (System.getenv("CI") == "true") {
println("CI signing...")
// CI 环境中跳过签名配置检查,因为签名将由 GitHub Actions 处理
storeFile = null
storePassword = null
keyPassword = null
keyAlias = null
}
}
}
defaultConfig {
manifestPlaceholders.googleMapsApiKey = rootProject.ext['google.maps.apiKey']
def getGitHash = providers.exec {
commandLine 'git', 'rev-parse', '--short=9', 'HEAD'
}.standardOutput.asText.get().trim()
applicationId 'co.candyhouse.sesame2'
minSdk rootProject.ext.minSdkVersion
targetSdk rootProject.ext.targetSdkVersion
versionCode 910
versionName '3.0.266'
buildConfigField("String", "GIT_HASH", "\"${getGitHash}\"")
// AWS Cognito 配置
buildConfigField("String", "AWS_IDENTITY_POOL_ID", "\"${rootProject.ext['aws.cognito.identityPoolId']}\"")
buildConfigField("String", "AWS_USER_POOL_ID", "\"${rootProject.ext['aws.cognito.userPoolId']}\"")
buildConfigField("String", "AWS_APP_CLIENT_ID", "\"${rootProject.ext['aws.cognito.appClientId']}\"")
}
buildTypes {
debug {
buildConfigField("String", "WEB_ORIGIN", "\"${rootProject.ext['candyhouse.sesame.web.dev']}\"")
manifestPlaceholders.crashlyticsCollectionEnabled = "false"
firebaseCrashlytics { mappingFileUploadEnabled false }
minifyEnabled false
}
release {
buildConfigField("String", "WEB_ORIGIN", "\"${rootProject.ext['candyhouse.sesame.web.prod']}\"")
manifestPlaceholders.crashlyticsCollectionEnabled = "true"
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
if (signingConfigs.release.storeFile != null) {
println("Local signing...")
signingConfig signingConfigs.release
}
ndk {
debugSymbolLevel 'FULL'
}
}
ci {
initWith release
matchingFallbacks = ['release']
}
}
compileOptions {
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
packaging {
resources {
excludes += '/META-INF/DEPENDENCIES'
}
}
buildFeatures {
buildConfig true
}
}
androidComponents {
onVariants(selector().withBuildType("ci")) { variant ->
if (System.getenv("CI") == "true") {
def versionCode = System.getenv("VERSION_CODE")
if (versionCode != null) {
variant.outputs.forEach { output ->
output.versionCode.set(Integer.parseInt(versionCode))
println "Set CI version: ${versionCode}"
}
}
}
}
}
dependencies {
implementation project(':sesameSdk')
coreLibraryDesugaring libs.desugar.jdk.libs
implementation libs.amplify.aws.auth.cognito
implementation libs.amplify.core.kotlin
implementation libs.androidx.activity
implementation libs.androidx.room.runtime
implementation libs.androidx.room.ktx
ksp libs.androidx.room.compiler
implementation libs.kotlinx.coroutines.android
implementation libs.core
implementation platform(libs.firebase.bom)
implementation libs.firebase.messaging
implementation libs.firebase.analytics
implementation libs.firebase.crashlytics
implementation libs.dfu
implementation libs.play.services.location
implementation libs.play.services.maps
}