@file:Suppress("UNUSED_VARIABLE") import com.android.build.gradle.BaseExtension import java.net.URL import java.util.* buildscript { val agp_version by extra("7.4.1") repositories { mavenCentral() google() maven("https://raw.githubusercontent.com/MetaCubeX/maven-backup/main/releases") maven("https://maven.aliyun.com/repository/public/") maven("https://maven.aliyun.com/repository/google/") maven("https://maven.aliyun.com/repository/jcenter/") maven("https://maven.aliyun.com/repository/central/") } dependencies { classpath(libs.build.android) classpath(libs.build.kotlin.common) classpath(libs.build.kotlin.serialization) classpath(libs.build.ksp) classpath(libs.build.golang) } } subprojects { repositories { mavenCentral() google() maven("https://raw.githubusercontent.com/MetaCubeX/maven-backup/main/releases") maven("https://maven.aliyun.com/repository/public/") maven("https://maven.aliyun.com/repository/google/") maven("https://maven.aliyun.com/repository/jcenter/") maven("https://maven.aliyun.com/repository/central/") } val isApp = name == "app" apply(plugin = if (isApp) "com.android.application" else "com.android.library") extensions.configure { defaultConfig { if (isApp) { applicationId = "com.yingmao.clash" namespace = "com.yingmao.clash" } // minSdk = 21 //noinspection ExpiredTargetSdkVersion // targetSdk = 32 minSdk = 21 //noinspection ExpiredTargetSdkVersion targetSdk = 31 versionName = "1.0.1.0" versionCode = 1010 resValue("string", "release_name", "v$versionName") resValue("integer", "release_code", "$versionCode") externalNativeBuild { cmake { abiFilters("arm64-v8a", "armeabi-v7a") } } if (!isApp) { consumerProguardFiles("consumer-rules.pro") } else { setProperty("archivesBaseName", "$versionName") } } ndkVersion = "23.0.7599858" compileSdkVersion(defaultConfig.targetSdk!!) if (isApp) { packagingOptions { resources { excludes.add("DebugProbesKt.bin") } } } productFlavors { flavorDimensions("feature") //八爪鱼 create("182227") { isDefault = true dimension = flavorDimensionList[0] buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") if (isApp) { // applicationIdSuffix = ".meta" } buildConfigField("boolean", "is_free", "false") buildConfigField("boolean", "is_back_cn", "false") buildConfigField("boolean", "is_ym", "false") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") // buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:18001\"") buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:18001\"") buildConfigField("String", "productId", "\"182227\"") manifestPlaceholders( mapOf( "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" ) ) } create("182250") { isDefault = true dimension = flavorDimensionList[0] buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") if (isApp) { // applicationIdSuffix = ".meta" } buildConfigField("boolean", "is_free", "false") buildConfigField("boolean", "is_back_cn", "false") buildConfigField("boolean", "is_ym", "false") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") // buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:18001\"") buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:18001\"") buildConfigField("String", "productId", "\"182250\"") manifestPlaceholders( mapOf( "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" ) ) } create("182256") { isDefault = true dimension = flavorDimensionList[0] buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") if (isApp) { // applicationIdSuffix = ".meta" } buildConfigField("boolean", "is_free", "false") buildConfigField("boolean", "is_back_cn", "false") buildConfigField("boolean", "is_ym", "false") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") // buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:18001\"") buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:18001\"") buildConfigField("String", "productId", "\"182256\"") manifestPlaceholders( mapOf( "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" ) ) } create("182251") { isDefault = true dimension = flavorDimensionList[0] buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") if (isApp) { // applicationIdSuffix = ".meta" } buildConfigField("boolean", "is_free", "false") buildConfigField("boolean", "is_back_cn", "false") buildConfigField("boolean", "is_ym", "false") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") // buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:18001\"") buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:18001\"") buildConfigField("String", "productId", "\"182251\"") manifestPlaceholders( mapOf( "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" ) ) } //影猫 create("9586") { isDefault = true dimension = flavorDimensionList[0] buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") if (isApp) { // applicationIdSuffix = ".meta" } buildConfigField("boolean", "is_back_cn", "false") buildConfigField("boolean", "is_ym", "true") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") // buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:18001\"") buildConfigField("String", "service_url", "\"https://api.yingmaovpnpro.win:18002\"") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "productId", "\"9586\"") manifestPlaceholders( mapOf( "APP_NAME" to "@string/app_name_gz", "APP_ICON" to "@mipmap/ic_logo_9972" ) ) } create("9707") { isDefault = true dimension = flavorDimensionList[0] buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") if (isApp) { // applicationIdSuffix = ".meta" } buildConfigField("boolean", "is_back_cn", "false") buildConfigField("boolean", "is_ym", "true") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") // buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:18001\"") buildConfigField("String", "service_url", "\"https://api.yingmaovpnpro.win:18002\"") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "productId", "\"9707\"") manifestPlaceholders( mapOf( "APP_NAME" to "@string/app_name_gz", "APP_ICON" to "@mipmap/ic_logo_9972" ) ) } create("6789") { isDefault = true dimension = flavorDimensionList[0] buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") if (isApp) { // applicationIdSuffix = ".meta" } buildConfigField("boolean", "is_back_cn", "false") buildConfigField("boolean", "is_ym", "true") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") buildConfigField("String", "service_url", "\"https://api.yingmaovpnpro.win:18002\"") buildConfigField("String", "productId", "\"6789\"") manifestPlaceholders( mapOf( "APP_NAME" to "@string/app_name_gz", "APP_ICON" to "@mipmap/ic_logo_9972" ) ) } create("3229") { isDefault = true dimension = flavorDimensionList[0] buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") if (isApp) { // applicationIdSuffix = ".meta" } buildConfigField("boolean", "is_back_cn", "false") buildConfigField("boolean", "is_ym", "true") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") buildConfigField("String", "service_url", "\"https://api.yingmaovpnpro.win:18002\"") buildConfigField("String", "productId", "\"3229\"") manifestPlaceholders( mapOf( "APP_NAME" to "@string/app_name_gz", "APP_ICON" to "@mipmap/ic_logo_9972" ) ) } create("9583") { isDefault = true dimension = flavorDimensionList[0] buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") if (isApp) { // applicationIdSuffix = ".meta" } buildConfigField("boolean", "is_back_cn", "false") buildConfigField("boolean", "is_ym", "true") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") buildConfigField("String", "service_url", "\"https://api.yingmaovpnpro.win:18002\"") buildConfigField("String", "productId", "\"9583\"") manifestPlaceholders( mapOf( "APP_NAME" to "@string/app_name_gz", "APP_ICON" to "@mipmap/ic_logo_9972" ) ) } create("9972") { isDefault = true dimension = flavorDimensionList[0] buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") if (isApp) { // applicationIdSuffix = ".meta" } buildConfigField("boolean", "is_back_cn", "false") buildConfigField("boolean", "is_ym", "true") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") buildConfigField("String", "service_url", "\"https://api.yingmaovpnpro.win:18002\"") buildConfigField("String", "productId", "\"9972\"") manifestPlaceholders( mapOf( "APP_NAME" to "@string/app_name_gz", "APP_ICON" to "@mipmap/ic_logo_9972" ) ) } create("182242") { isDefault = true dimension = flavorDimensionList[0] buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") if (isApp) { // applicationIdSuffix = ".meta" } buildConfigField("boolean", "is_back_cn", "false") buildConfigField("boolean", "is_ym", "true") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") buildConfigField("String", "service_url", "\"https://api.yingmaovpnpro.win:18002\"") buildConfigField("String", "productId", "\"182242\"") manifestPlaceholders( mapOf( "APP_NAME" to "@string/app_name_gz", "APP_ICON" to "@mipmap/ic_logo_9972" ) ) } //太子 182265 create("182265") { isDefault = true dimension = flavorDimensionList[0] buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") if (isApp) { // applicationIdSuffix = ".meta" } buildConfigField("boolean", "is_back_cn", "false") buildConfigField("boolean", "is_ym", "true") buildConfigField("boolean", "is_free", "false") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") // buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:18001\"") buildConfigField("String", "service_url", "\"https://api.otcopusvpn.cc:18008\"") buildConfigField("String", "productId", "\"182265\"") manifestPlaceholders( mapOf( "APP_NAME" to "@string/app_name_taizi", "APP_ICON" to "@mipmap/ic_taizi_logo" ) ) } //----自由包八爪鱼 create("22222") { isDefault = true dimension = flavorDimensionList[0] buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") if (isApp) { // applicationIdSuffix = ".meta" } buildConfigField("boolean", "is_back_cn", "false") buildConfigField("boolean", "is_ym", "false") buildConfigField("boolean", "is_free", "true") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") // buildConfigField("String", "service_url", "\"https://api.gaogaoshousoft.cc:18001\"") buildConfigField("String", "service_url", "\"https://app.bazhuayujiasu.cc:18001\"") buildConfigField("String", "productId", "\"22222\"") manifestPlaceholders( mapOf( "APP_NAME" to "@string/app_name", "APP_ICON" to "@mipmap/logo" ) ) } //影猫自由包 create("22223") { isDefault = true dimension = flavorDimensionList[0] buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") if (isApp) { // applicationIdSuffix = ".meta" } buildConfigField("boolean", "is_back_cn", "false") buildConfigField("boolean", "is_ym", "true") buildConfigField("boolean", "is_free", "true") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") buildConfigField("String", "service_url", "\"https://api.yingmaovpnpro.win:18002\"") buildConfigField("String", "productId", "\"22222\"") manifestPlaceholders( mapOf( "APP_NAME" to "@string/app_name_gz", "APP_ICON" to "@mipmap/ic_logo_9972" ) ) } create("meta") { dimension = flavorDimensionList[0] buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")") if (isApp) { // applicationIdSuffix = ".meta" } buildConfigField("boolean", "is_back_cn", "false") buildConfigField("String", "applicationId", "\"com.yingmao.clash\"") buildConfigField("String", "service_url", "\"http://app.bazhuayujiasu.cc:18001\"") buildConfigField("String", "productId", "\"182221\"") } } sourceSets { getByName("182227") { java.srcDirs("src/foss/java") } } signingConfigs { val keystore = rootProject.file("signing.properties") if (keystore.exists()) { create("release") { val prop = Properties().apply { keystore.inputStream().use(this::load) } storeFile = rootProject.file("octopus_clash.jks") storePassword = prop.getProperty("keystore.password")!! keyAlias = prop.getProperty("key.alias")!! keyPassword = prop.getProperty("key.password")!! } } } buildTypes { named("release") { versionNameSuffix = ".release" // isMinifyEnabled = isApp // isShrinkResources = isApp // signingConfig = signingConfigs.findByName("release") // proguardFiles( // getDefaultProguardFile("proguard-android-optimize.txt"), // "proguard-rules.pro" // ) } named("debug") { versionNameSuffix = ".debug" } } // buildFeatures.apply { // dataBinding { // isEnabled = name != "hideapi" // } // } // if (isApp) { // this as AppExtension // splits { // abi { // isEnable = true // reset() // include("arm64-v8a", "armeabi-v7a") // isUniversalApk = true // } // } // } } } task("clean", type = Delete::class) { delete(rootProject.buildDir) } tasks.wrapper { distributionType = Wrapper.DistributionType.ALL doLast { val sha256 = URL("$distributionUrl.sha256").openStream().use { it.reader().readText().trim() } file("gradle/wrapper/gradle-wrapper.properties").appendText("distributionSha256Sum=$sha256") } }