plugins { id("com.android.application") id("org.jetbrains.kotlin.android") } fun resolveConfig(name: String): String? { return (project.findProperty(name) as String?)?.takeIf { it.isNotBlank() } ?: System.getenv(name)?.takeIf { it.isNotBlank() } } android { namespace = "com.cyjai.agent" compileSdk = 35 defaultConfig { applicationId = "com.cyjai.agent" minSdk = 24 targetSdk = 35 versionCode = 42 versionName = "1.0.40" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } signingConfigs { create("release") { val storeFilePath = resolveConfig("ANDROID_KEYSTORE_PATH") val storePass = resolveConfig("ANDROID_KEYSTORE_PASSWORD") val keyAliasValue = resolveConfig("ANDROID_KEY_ALIAS") val keyPass = resolveConfig("ANDROID_KEY_PASSWORD") if (!storeFilePath.isNullOrBlank()) { storeFile = file(storeFilePath) } storePassword = storePass keyAlias = keyAliasValue keyPassword = keyPass } } buildTypes { release { isMinifyEnabled = false signingConfig = signingConfigs.getByName("release") proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" } } dependencies { implementation("androidx.core:core-ktx:1.13.1") implementation("androidx.appcompat:appcompat:1.7.0") implementation("com.google.android.material:material:1.12.0") implementation("androidx.activity:activity-ktx:1.9.2") implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.8.0") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1") // PDF 预览(不依赖浏览器) implementation("com.github.mhiew:android-pdf-viewer:3.2.0-beta.3") // sherpa-onnx 语音识别库(需手动下载 AAR 放到 app/libs/) // 下载地址:https://huggingface.co/csukuangfj/sherpa-onnx-libs/tree/main/android/aar // 下载最新 sherpa-onnx-*.aar 放到 app/libs/ 目录即可 implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.aar")))) }