build.gradle.kts 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. import com.android.build.gradle.internal.api.ApkVariantOutputImpl
  2. import im.angry.openeuicc.build.*
  3. plugins {
  4. id("com.android.application")
  5. id("org.jetbrains.kotlin.android")
  6. }
  7. apply {
  8. plugin<MyVersioningPlugin>()
  9. plugin<MySigningPlugin>()
  10. }
  11. android {
  12. namespace = "im.angry.openeuicc"
  13. compileSdk = 35
  14. defaultConfig {
  15. applicationId = "im.angry.openeuicc"
  16. minSdk = 30
  17. targetSdk = 35
  18. testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
  19. }
  20. buildTypes {
  21. defaultConfig {
  22. versionNameSuffix = "-priv"
  23. }
  24. release {
  25. isMinifyEnabled = false
  26. proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
  27. }
  28. }
  29. compileOptions {
  30. sourceCompatibility = JavaVersion.VERSION_1_8
  31. targetCompatibility = JavaVersion.VERSION_1_8
  32. }
  33. kotlinOptions {
  34. jvmTarget = "1.8"
  35. }
  36. }
  37. dependencies {
  38. compileOnly(project(":libs:hidden-apis-stub"))
  39. implementation(project(":libs:hidden-apis-shim"))
  40. implementation(project(":libs:lpac-jni"))
  41. implementation(project(":app-common"))
  42. testImplementation("junit:junit:4.13.2")
  43. androidTestImplementation("androidx.test.ext:junit:1.1.5")
  44. androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
  45. }
  46. val modulePropsTemplate = mutableMapOf(
  47. "id" to android.defaultConfig.applicationId!!,
  48. "name" to "OpenEUICC",
  49. "version" to android.defaultConfig.versionName!!,
  50. "versionCode" to "${android.defaultConfig.versionCode}",
  51. "author" to "OpenEUICC authors",
  52. "description" to "OpenEUICC is an open-source app that provides system-level eSIM integration."
  53. )
  54. val moduleCustomizeScript = project.file("magisk/customize.sh").readText()
  55. .replace("{APK_NAME}", "OpenEUICC")
  56. .replace("{PKG_NAME}", android.defaultConfig.applicationId!!)
  57. val moduleUninstallScript = project.file("magisk/uninstall.sh").readText()
  58. .replace("{PKG_NAME}", android.defaultConfig.applicationId!!)
  59. tasks.register<MagiskModuleDirTask>("assembleDebugMagiskModuleDir") {
  60. variant = "debug"
  61. appName = "OpenEUICC"
  62. permsFile = project.rootProject.file("privapp_whitelist_im.angry.openeuicc.xml")
  63. moduleInstaller = project.file("magisk/module_installer.sh")
  64. moduleCustomizeScriptText = moduleCustomizeScript
  65. moduleUninstallScriptText = moduleUninstallScript
  66. moduleProp = modulePropsTemplate.let {
  67. it["description"] = "(debug build) ${it["description"]}"
  68. it["versionCode"] = "${(android.applicationVariants.find { it.name == "debug" }!!.outputs.first() as ApkVariantOutputImpl).versionCodeOverride}"
  69. it
  70. }
  71. dependsOn("assembleDebug")
  72. }
  73. tasks.register<Zip>("assembleDebugMagiskModule") {
  74. dependsOn("assembleDebugMagiskModuleDir")
  75. from((tasks.getByName("assembleDebugMagiskModuleDir") as MagiskModuleDirTask).outputDir)
  76. archiveFileName = "magisk-debug.zip"
  77. destinationDirectory = project.layout.buildDirectory.dir("magisk")
  78. entryCompression = ZipEntryCompression.STORED
  79. }
  80. tasks.register<MagiskModuleDirTask>("assembleReleaseMagiskModuleDir") {
  81. variant = "release"
  82. appName = "OpenEUICC"
  83. permsFile = project.rootProject.file("privapp_whitelist_im.angry.openeuicc.xml")
  84. moduleInstaller = project.file("magisk/module_installer.sh")
  85. moduleCustomizeScriptText = moduleCustomizeScript
  86. moduleUninstallScriptText = moduleUninstallScript
  87. moduleProp = modulePropsTemplate
  88. dependsOn("assembleRelease")
  89. }
  90. tasks.register<Zip>("assembleReleaseMagiskModule") {
  91. dependsOn("assembleReleaseMagiskModuleDir")
  92. from((tasks.getByName("assembleReleaseMagiskModuleDir") as MagiskModuleDirTask).outputDir)
  93. archiveFileName = "magisk-release.zip"
  94. destinationDirectory = project.layout.buildDirectory.dir("magisk")
  95. entryCompression = ZipEntryCompression.STORED
  96. }