build.gradle.kts 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import java.util.Properties
  2. plugins {
  3. id("com.android.application")
  4. id("org.jetbrains.kotlin.android")
  5. id("org.jetbrains.kotlin.plugin.compose")
  6. }
  7. val signingPropertiesFile = rootProject.file("signing.properties")
  8. val signingProperties = Properties().apply {
  9. if (signingPropertiesFile.exists()) signingPropertiesFile.inputStream().use(::load)
  10. }
  11. android {
  12. namespace = "com.joe.camera.webcam"
  13. compileSdk = 35
  14. defaultConfig {
  15. applicationId = "com.joe.camera.webcam"
  16. minSdk = 24
  17. targetSdk = 35
  18. versionCode = 1
  19. versionName = "1.0.0"
  20. testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
  21. vectorDrawables.useSupportLibrary = true
  22. }
  23. buildFeatures {
  24. compose = true
  25. aidl = true
  26. buildConfig = true
  27. }
  28. compileOptions {
  29. sourceCompatibility = JavaVersion.VERSION_17
  30. targetCompatibility = JavaVersion.VERSION_17
  31. }
  32. kotlinOptions { jvmTarget = "17" }
  33. signingConfigs {
  34. if (signingPropertiesFile.exists()) {
  35. create("production") {
  36. storeFile = file(signingProperties.getProperty("storeFile"))
  37. storePassword = signingProperties.getProperty("storePassword")
  38. keyAlias = signingProperties.getProperty("keyAlias")
  39. keyPassword = signingProperties.getProperty("keyPassword")
  40. }
  41. }
  42. }
  43. buildTypes {
  44. release {
  45. isMinifyEnabled = true
  46. isShrinkResources = true
  47. if (signingPropertiesFile.exists()) signingConfig = signingConfigs.getByName("production")
  48. proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
  49. }
  50. }
  51. packaging.resources.excludes += "/META-INF/{AL2.0,LGPL2.1}"
  52. }
  53. dependencies {
  54. val composeBom = platform("androidx.compose:compose-bom:2024.12.01")
  55. implementation(composeBom)
  56. androidTestImplementation(composeBom)
  57. implementation("androidx.core:core-ktx:1.15.0")
  58. implementation("androidx.activity:activity-compose:1.10.0")
  59. implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.8.7")
  60. implementation("androidx.lifecycle:lifecycle-runtime-compose:2.8.7")
  61. implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7")
  62. implementation("androidx.navigation:navigation-compose:2.8.5")
  63. implementation("androidx.compose.ui:ui")
  64. implementation("androidx.compose.ui:ui-tooling-preview")
  65. implementation("androidx.compose.material3:material3")
  66. implementation("androidx.compose.material:material-icons-extended")
  67. debugImplementation("androidx.compose.ui:ui-tooling")
  68. val cameraX = "1.4.1"
  69. implementation("androidx.camera:camera-core:$cameraX")
  70. implementation("androidx.camera:camera-camera2:$cameraX")
  71. implementation("androidx.camera:camera-lifecycle:$cameraX")
  72. implementation("androidx.camera:camera-video:$cameraX")
  73. implementation("androidx.camera:camera-view:$cameraX")
  74. implementation("androidx.media3:media3-exoplayer:1.5.1")
  75. implementation("androidx.media3:media3-ui:1.5.1")
  76. implementation("io.coil-kt:coil-compose:2.7.0")
  77. implementation("io.coil-kt:coil-video:2.7.0")
  78. implementation("dev.rikka.shizuku:api:13.1.5")
  79. implementation("dev.rikka.shizuku:provider:13.1.5")
  80. testImplementation("junit:junit:4.13.2")
  81. testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0")
  82. androidTestImplementation("androidx.test.ext:junit:1.2.1")
  83. androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1")
  84. androidTestImplementation("androidx.compose.ui:ui-test-junit4")
  85. debugImplementation("androidx.compose.ui:ui-test-manifest")
  86. }