build.gradle.kts 4.1 KB

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