import java.net.URL import java.nio.file.Files import java.nio.file.StandardCopyOption plugins { kotlin("android") kotlin("kapt") id("com.android.application") id("kotlin-parcelize") id("com.google.devtools.ksp") id("kotlinx-serialization") } dependencies { implementation(fileTree(mapOf("dir" to "src/main/libs", "include" to listOf("*.aar")))) implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") // compileOnly(project(":hideapi")) // implementation(project(":core")) // implementation(project(":service")) // implementation(project(":common")) ksp(libs.kaidl.compiler) ksp(libs.androidx.room.compiler) implementation(libs.kotlin.coroutine) implementation(libs.kotlin.serialization.json) implementation(libs.androidx.core) implementation(libs.androidx.room.runtime) implementation(libs.androidx.room.ktx) implementation(libs.kaidl.runtime) implementation(libs.rikkax.multiprocess) val commonAar = file("libs/common.aar") val coreAar = file("libs/core.aar") val hideapiAar = file("libs/hideapi.aar") val serviceAar = file("libs/service.aar") if (commonAar.exists()) { implementation(files(commonAar)) } else { println("common.aar does not exist") } if (coreAar.exists()) { implementation(files(coreAar)) } else { println("core.aar does not exist") } if (hideapiAar.exists()) { implementation(files(hideapiAar)) } else { println("hideapi.aar does not exist") } if (serviceAar.exists()) { implementation(files(serviceAar)) } else { println("service.aar does not exist") } implementation(libs.kotlin.coroutine) implementation(libs.androidx.core) // implementation(libs.androidx.activity) // implementation(libs.androidx.fragment) implementation(libs.androidx.appcompat) implementation(libs.androidx.coordinator) implementation(libs.androidx.recyclerview) implementation(libs.google.material) implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.5.1") implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1") implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.5.1") // https://mvnrepository.com/artifact/com.tencent/mmkv-static implementation("com.tencent:mmkv-static:1.2.10") implementation("com.afollestad.material-dialogs:core:3.2.1") //Retrofit 网络请求库 api("com.squareup.retrofit2:retrofit:2.9.0") api("com.squareup.retrofit2:converter-gson:2.9.0") api("com.squareup.retrofit2:converter-scalars:2.9.0") api("com.orhanobut:logger:2.2.0") api("com.google.code.gson:gson:2.10.1") api(platform("com.squareup.okhttp3:okhttp-bom:4.10.0")) // define any required OkHttp artifacts without version api("com.squareup.okhttp3:okhttp") api("com.squareup.okhttp3:logging-interceptor") //// https://mvnrepository.com/artifact/com.google.code.gson/gson // api("com.google.code.gson:gson:2.10.1") api("org.yaml:snakeyaml:1.29") // https://mvnrepository.com/artifact/com.al\ipay.sdk/alipaysdk-android implementation("com.alipay.sdk:alipaysdk-android:15.8.17") // https://mvnrepository.com/artifact/com.journeyapps/zxing-android-embedded implementation("com.journeyapps:zxing-android-embedded:3.6.0") // https://mvnrepository.com/artifact/com.google.zxing/core implementation("com.google.zxing:core:3.5.3") implementation("com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.4") // https://mvnrepository.com/artifact/com.airbnb.android/lottie implementation("com.airbnb.android:lottie:5.2.0") // https://mvnrepository.com/artifact/com.github.bumptech.glide/glide implementation("com.github.bumptech.glide:glide:4.13.2") implementation("com.luozm.captcha:captcha:1.1.2") } tasks.getByName("clean", type = Delete::class) { delete(file("release")) } val geoFilesDownloadDir = "src/main/assets" task("downloadGeoFiles") { val geoFilesUrls = mapOf( "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip.metadb" to "geoip.metadb", "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat" to "geosite.dat", // "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/country.mmdb" to "country.mmdb", ) doLast { geoFilesUrls.forEach { (downloadUrl, outputFileName) -> val url = URL(downloadUrl) val outputPath = file("$geoFilesDownloadDir/$outputFileName") if (!outputPath.exists()) { outputPath.parentFile.mkdirs() url.openStream().use { input -> Files.copy(input, outputPath.toPath(), StandardCopyOption.REPLACE_EXISTING) println("$outputFileName downloaded to $outputPath") } } else { println("$outputFileName exists $outputPath") //如果存在就从该文件复制 } } } } afterEvaluate { val downloadGeoFilesTask = tasks["downloadGeoFiles"] tasks.forEach { if (it.name.startsWith("assemble")) { it.dependsOn(downloadGeoFilesTask) } } } tasks.getByName("clean", type = Delete::class) { delete(file(geoFilesDownloadDir + "/geoip.metadb")) delete(file(geoFilesDownloadDir + "/geosite.dat")) } android { defaultConfig { ndk { abiFilters.add("arm64-v8a") abiFilters.add("armeabi-v7a") } } sourceSets.all { jniLibs.srcDir("src/main/jniLibs") } } repositories { flatDir { dirs("src/main/libs") } mavenCentral() }