import org.gradle.kotlin.dsl.api plugins { id("com.android.application") alias(libs.plugins.compose.compiler) kotlin("plugin.serialization") version "2.3.0" } android { namespace = "com.img.rabbit" compileSdk = 36 buildFeatures { compose = true buildConfig = true viewBinding = true } aaptOptions { additionalParameters("--auto-add-overlay") } androidResources { ignoreAssetsPattern = "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~" } packagingOptions { jniLibs { useLegacyPackaging = true } } composeOptions { // 注意:Kotlin 1.8.x 以后建议检查与 Compose 编译器的版本兼容性 kotlinCompilerExtensionVersion = "1.4.8" } defaultConfig { applicationId = "com.img.rabbit" minSdk = 24 targetSdk = 36 versionCode = 1 versionName = "1.0.0" multiDexEnabled = true testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { useSupportLibrary = true } ndk { abiFilters.addAll(listOf("arm64-v8a", "x86_64", "x86", "armeabi-v7a")) } // 仅保留基础占位符,渠道相关的移至下方 flavor 处理 manifestPlaceholders.putAll(mapOf( "GETUI_APPID" to (project.findProperty("GETUI_APPID") as? String ?: "cYHNI4KThh6SxZUsf9RiU2"), "HUAWEI_APP_ID" to "", "XIAOMI_APP_ID" to "", "XIAOMI_APP_KEY" to "", "OPPO_APP_KEY" to "", "OPPO_APP_SECRET" to "", "VIVO_APP_ID" to "", "VIVO_APP_KEY" to "", "HONOR_APP_ID" to "", "apk.applicationId" to "com.img.rabbit", "GT_INSTALL_CHANNEL" to "test" // 默认值 )) resConfigs("en", "zh-rCN") } // 1. 配置签名信息(解决文件找不到的问题) signingConfigs { create("config") { // 使用相对路径,请确保 bidinfo.keystore 放在 app 目录下 val keystorePath = project.findProperty("RELEASE_STORE_FILE") as? String ?: "bidinfo.keystore" storeFile = file(keystorePath) storePassword = project.findProperty("RELEASE_STORE_PASSWORD") as? String ?: "" keyAlias = project.findProperty("RELEASE_KEY_ALIAS") as? String ?: "" keyPassword = project.findProperty("RELEASE_KEY_PASSWORD") as? String ?: "" enableV1Signing = true enableV2Signing = true enableV3Signing = true } } // 2. 配置渠道维度 flavorDimensions.add("channel") // 3. 配置具体渠道 productFlavors { create("general") { dimension = "channel" } create("xiaomi") { dimension = "channel" } create("huawei") { dimension = "channel" } create("oppo") { dimension = "channel" } create("vivo") { dimension = "channel" } // 自动将渠道名同步给个推和友盟的渠道占位符 all { manifestPlaceholders["UMENG_CHANNEL"] = name manifestPlaceholders["GT_INSTALL_CHANNEL"] = name } } buildTypes { getByName("debug") { isMinifyEnabled = false isShrinkResources = false signingConfig = signingConfigs.getByName("config") proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") } getByName("release") { // 建议开启混淆以减少启动耗时和体积 isMinifyEnabled = true isShrinkResources = true signingConfig = signingConfigs.getByName("config") proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") } } //noinspection WrongGradleMethod androidComponents { onVariants { variant -> variant.outputs.forEach { output -> // 关键:强制转换为 VariantOutputImpl 以访问 outputFileName val outputImpl = output as? com.android.build.api.variant.impl.VariantOutputImpl val flavor = variant.flavorName ?: "default" val buildType = variant.buildType ?: "release" val versionName = android.defaultConfig.versionName ?: "1.0.0" // 输出格式: Rabbit_huawei_release_v1.0.0.apk outputImpl?.outputFileName?.set("Rabbit_${flavor}_${buildType}_v${versionName}.apk") } } } compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } } configurations { all { exclude(group = "com.android.support") } } tasks.withType().configureEach { options.compilerArgs.addAll(listOf("-Xlint:unchecked", "-Xlint:deprecation")) } dependencies { api(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar","*.aar")))) // 基础依赖 implementation(libs.androidx.core.ktx) implementation(libs.androidx.appcompat) implementation(libs.androidx.material) implementation(libs.androidx.activity) implementation(libs.androidx.constraintlayout) implementation(libs.androidx.core.splashscreen) // implementation(libs.multidex) // Compose 依赖 implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.compose.ui) implementation(libs.androidx.compose.ui.tooling) implementation(libs.androidx.compose.ui.tooling.preview) implementation(libs.androidx.compose.material3) implementation(libs.androidx.compose.activity.compose) implementation(libs.androidx.compose.foundation) implementation(libs.androidx.navigation.runtime.ktx) // ViewModel 和 Lifecycle 依赖 implementation(libs.androidx.compose.runtime.livedata) implementation(libs.androidx.compose.lifecycle.viewmodel) implementation(libs.androidx.compose.lifecycle.runtime.compose) implementation(libs.androidx.compose.runtime.livedata) // Kotlinx Serialization 依赖 implementation(libs.kotlinx.serialization.json) implementation(libs.androidx.navigation.compose) implementation(libs.androidx.datastore.core) implementation(libs.androidx.datastore.preferences) implementation(libs.androidx.foundation) implementation(libs.foundation) // 测试依赖 testImplementation(libs.junit) androidTestImplementation(libs.androidx.test.ext.junit) androidTestImplementation(libs.androidx.test.espresso.core) //个推一键认证 implementation(libs.gysdk) implementation(libs.gson) implementation(libs.mmkv) implementation(libs.coil.compose) implementation(libs.coil.network.okhttp) implementation(libs.segmentation.selfie) implementation(libs.face.detection) implementation(libs.android.gif.drawable) implementation(libs.gif.encoder) //implementation("com.caverock:androidsvg:1.4") implementation(libs.pictureselector) implementation(libs.compress) implementation(libs.matisse) implementation(libs.cropify) //noinspection GradleDynamicVersion api("com.alipay.sdk:alipaysdk-android:+@aar") implementation(libs.wechat.sdk) //微信 // implementation("com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.7.9") //Retrofit 依赖 implementation(libs.retrofit) implementation(libs.retrofit.kotlin.serialization) implementation (libs.retrofit.converter.gson) implementation(libs.okhttp) implementation(libs.okhttp.logging.interceptor) //友盟 implementation (libs.umeng.umsdk.common)// 必选 implementation (libs.umeng.umsdk.asms)// 必选 implementation (libs.umeng.umsdk.apm) // U-APM包依赖(必选) implementation (libs.umeng.umsdk.share.core)//分享核心库,必选 implementation (libs.umeng.umsdk.share.wx) //微信完整版 //分包 implementation (libs.tencent.helper) //腾讯分包 implementation (files("libs/channelsdk-0.2.2.aar")) //快手分包 implementation (files("libs/humesdk-1.0.0.aar")) //巨量分包 //工具类相关依赖 implementation(libs.android.cn.oaid) //获取手机设备id implementation(libs.fastaes) //解密 implementation(libs.accompanist.permissions) // implementation(libs.zip4j) //Uni小程序相关依赖 implementation (files("libs/sqlite-release.aar")) //sqlite数据库 implementation(libs.androidx.recyclerview) //必须集成,android 自带recyclerview支持 implementation(libs.androidx.legacy.support.v4) //必须集成,androidx support支持 // implementation(libs.appcompat) implementation(libs.alibaba.fastjson) //必须集成,fastjson功能需要 implementation(libs.facebook.fresco) //必须集成,图片加载需要 implementation(libs.facebook.animated.gif) //必须集成,图片加载需要 implementation(libs.bumptech.glide) //必须集成,图片加载需要 implementation(libs.androidx.webkit) //4.45版本之后 必须集成,用来支持暗黑模式 implementation(libs.androidx.legacy.support.v4) }