penguin/SesameSDK_Android_with_DemoApp

Mirror of https://github.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp

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
}