| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- 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)
- }
|