import java.util.Properties import java.io.FileInputStream plugins { alias(libs.plugins.android.application) } android { namespace = "com.nonvioce.ijs" compileSdk = 34 defaultConfig { applicationId = "com.nonvioce.ijs" minSdk = 24 targetSdk = 34 versionCode = 4 versionName = "1.3" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" // 支持多 dex,因为 Symja 库较大 multiDexEnabled = true } // 读取密钥配置 val keystorePropertiesFile = rootProject.file("keystore.properties") val keystoreProperties = Properties() if (keystorePropertiesFile.exists()) { keystoreProperties.load(FileInputStream(keystorePropertiesFile)) } signingConfigs { create("release") { if (keystorePropertiesFile.exists()) { storeFile = file(keystoreProperties["storeFile"] as String) storePassword = keystoreProperties["storePassword"] as String keyAlias = keystoreProperties["keyAlias"] as String keyPassword = keystoreProperties["keyPassword"] as String } } } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) if (keystorePropertiesFile.exists()) { signingConfig = signingConfigs.getByName("release") } } } compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } buildFeatures { viewBinding = true } // 打包选项,避免重复文件 packaging { resources { excludes += setOf( "META-INF/DEPENDENCIES", "META-INF/LICENSE", "META-INF/LICENSE.txt", "META-INF/license.txt", "META-INF/NOTICE", "META-INF/NOTICE.txt", "META-INF/notice.txt", "META-INF/ASL2.0", "META-INF/*.kotlin_module" ) pickFirsts += setOf( "graphml.xsd", "xlink.xsd", "viz.xsd", "gexf.xsd" ) } } } dependencies { implementation(libs.androidx.core.ktx) implementation(libs.androidx.appcompat) implementation(libs.material) implementation(libs.androidx.constraintlayout) // Symja 库用于符号计算 - 使用最新的 3.1.0 稳定版本 // 核心模块 (LGPL 许可证) implementation("org.matheclipse:matheclipse-core:3.1.0") { // 排除 SNAPSHOT 依赖,使用稳定版本 exclude(group = "org.hipparchus") exclude(group = "org.apfloat") exclude(group = "org.jgrapht") } // 手动添加稳定版本的依赖 implementation("org.hipparchus:hipparchus-core:3.1") implementation("org.hipparchus:hipparchus-clustering:3.1") implementation("org.hipparchus:hipparchus-fft:3.1") implementation("org.hipparchus:hipparchus-fitting:3.1") implementation("org.hipparchus:hipparchus-geometry:3.1") implementation("org.hipparchus:hipparchus-ode:3.1") implementation("org.hipparchus:hipparchus-optim:3.1") implementation("org.hipparchus:hipparchus-stat:3.1") implementation("org.jgrapht:jgrapht-core:1.5.2") implementation("org.jgrapht:jgrapht-io:1.5.2") implementation("org.apfloat:apfloat:1.16.0") // 可选:GPL 模块,包含额外的数学功能 // implementation("org.matheclipse:matheclipse-gpl:3.1.0") // MCP 服务器:轻量级 HTTP 服务器 implementation("org.nanohttpd:nanohttpd:2.3.1") // MCP 服务器:JavaScript 引擎(用于插件执行) implementation("org.mozilla:rhino:1.7.15") // 可选:IO 模块,用于更多输入输出功能 // implementation("org.matheclipse:matheclipse-io:3.1.0") testImplementation(libs.junit) testImplementation("org.json:json:20231013") // JSON support in JVM unit tests androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) }