build.gradle.kts 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. import java.util.Properties
  2. import java.io.FileInputStream
  3. plugins {
  4. alias(libs.plugins.android.application)
  5. }
  6. android {
  7. namespace = "com.nonvioce.ijs"
  8. compileSdk = 34
  9. defaultConfig {
  10. applicationId = "com.nonvioce.ijs"
  11. minSdk = 24
  12. targetSdk = 34
  13. versionCode = 4
  14. versionName = "1.3"
  15. testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
  16. // 支持多 dex,因为 Symja 库较大
  17. multiDexEnabled = true
  18. }
  19. // 读取密钥配置
  20. val keystorePropertiesFile = rootProject.file("keystore.properties")
  21. val keystoreProperties = Properties()
  22. if (keystorePropertiesFile.exists()) {
  23. keystoreProperties.load(FileInputStream(keystorePropertiesFile))
  24. }
  25. signingConfigs {
  26. create("release") {
  27. if (keystorePropertiesFile.exists()) {
  28. storeFile = file(keystoreProperties["storeFile"] as String)
  29. storePassword = keystoreProperties["storePassword"] as String
  30. keyAlias = keystoreProperties["keyAlias"] as String
  31. keyPassword = keystoreProperties["keyPassword"] as String
  32. }
  33. }
  34. }
  35. buildTypes {
  36. release {
  37. isMinifyEnabled = false
  38. proguardFiles(
  39. getDefaultProguardFile("proguard-android-optimize.txt"),
  40. "proguard-rules.pro"
  41. )
  42. if (keystorePropertiesFile.exists()) {
  43. signingConfig = signingConfigs.getByName("release")
  44. }
  45. }
  46. }
  47. compileOptions {
  48. sourceCompatibility = JavaVersion.VERSION_11
  49. targetCompatibility = JavaVersion.VERSION_11
  50. }
  51. buildFeatures {
  52. viewBinding = true
  53. }
  54. // 打包选项,避免重复文件
  55. packaging {
  56. resources {
  57. excludes += setOf(
  58. "META-INF/DEPENDENCIES",
  59. "META-INF/LICENSE",
  60. "META-INF/LICENSE.txt",
  61. "META-INF/license.txt",
  62. "META-INF/NOTICE",
  63. "META-INF/NOTICE.txt",
  64. "META-INF/notice.txt",
  65. "META-INF/ASL2.0",
  66. "META-INF/*.kotlin_module"
  67. )
  68. pickFirsts += setOf(
  69. "graphml.xsd",
  70. "xlink.xsd",
  71. "viz.xsd",
  72. "gexf.xsd"
  73. )
  74. }
  75. }
  76. }
  77. dependencies {
  78. implementation(libs.androidx.core.ktx)
  79. implementation(libs.androidx.appcompat)
  80. implementation(libs.material)
  81. implementation(libs.androidx.constraintlayout)
  82. // Symja 库用于符号计算 - 使用最新的 3.1.0 稳定版本
  83. // 核心模块 (LGPL 许可证)
  84. implementation("org.matheclipse:matheclipse-core:3.1.0") {
  85. // 排除 SNAPSHOT 依赖,使用稳定版本
  86. exclude(group = "org.hipparchus")
  87. exclude(group = "org.apfloat")
  88. exclude(group = "org.jgrapht")
  89. }
  90. // 手动添加稳定版本的依赖
  91. implementation("org.hipparchus:hipparchus-core:3.1")
  92. implementation("org.hipparchus:hipparchus-clustering:3.1")
  93. implementation("org.hipparchus:hipparchus-fft:3.1")
  94. implementation("org.hipparchus:hipparchus-fitting:3.1")
  95. implementation("org.hipparchus:hipparchus-geometry:3.1")
  96. implementation("org.hipparchus:hipparchus-ode:3.1")
  97. implementation("org.hipparchus:hipparchus-optim:3.1")
  98. implementation("org.hipparchus:hipparchus-stat:3.1")
  99. implementation("org.jgrapht:jgrapht-core:1.5.2")
  100. implementation("org.jgrapht:jgrapht-io:1.5.2")
  101. implementation("org.apfloat:apfloat:1.16.0")
  102. // 可选:GPL 模块,包含额外的数学功能
  103. // implementation("org.matheclipse:matheclipse-gpl:3.1.0")
  104. // MCP 服务器:轻量级 HTTP 服务器
  105. implementation("org.nanohttpd:nanohttpd:2.3.1")
  106. // MCP 服务器:JavaScript 引擎(用于插件执行)
  107. implementation("org.mozilla:rhino:1.7.15")
  108. // 可选:IO 模块,用于更多输入输出功能
  109. // implementation("org.matheclipse:matheclipse-io:3.1.0")
  110. testImplementation(libs.junit)
  111. testImplementation("org.json:json:20231013") // JSON support in JVM unit tests
  112. androidTestImplementation(libs.androidx.junit)
  113. androidTestImplementation(libs.androidx.espresso.core)
  114. }