Files
VesiscanClinicalAndroid/app/build.gradle.kts
T
dw.jang bcbc7b440c refactor: 데모 브랜치 패키지 통일 com.example.medilightv2android → com.medithings.vesiscan
사용자앱 (feature/tab-navigation) 과 패키지 이름 일치. namespace + applicationId
둘 다 com.medithings.vesiscan 로 변경 (기존 데모 앱은 재설치 필요).

## 변경 범위
- Kotlin 148 파일: package + import 문 (714 occurrences)
- 디렉토리 이동: com/example/medilightv2android → com/medithings/vesiscan
  (main, test, androidTest 각각)
- app/build.gradle.kts: namespace, applicationId
- docs/FLAVOR_DEMO_STABLE.md: 참조 갱신
- V41DetectorCH4Test: BvDispatchResult.methodChosen → method (dto field name fix)

## 주의
- applicationId 가 바뀌므로 기존 데모 앱 (com.example.medilightv2android.demo) 은
  Android 관점에서 다른 앱으로 취급 — 재설치 시 PIN/설정 초기화됨.
- Fresh install 권장. 기존 앱 (com.example...) 은 별도로 uninstall 필요.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-02 14:30:43 +09:00

99 lines
3.6 KiB
Kotlin

plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
}
android {
namespace = "com.medithings.vesiscan"
compileSdk {
version = release(36)
}
defaultConfig {
applicationId = "com.medithings.vesiscan"
minSdk = 24
targetSdk = 36
versionCode = 27
versionName = "1.1.1-design"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
// Product flavors — demo(동결 안정판) / dev(개발 진행).
// 자세한 운영 정책은 docs/FLAVOR_DEMO_STABLE.md 참고.
flavorDimensions += "channel"
productFlavors {
create("demo") {
dimension = "channel"
applicationIdSuffix = ".demo"
versionNameSuffix = "-demo"
buildConfigField("Boolean", "IS_DEMO", "true")
buildConfigField("String", "FLAVOR_LABEL", "\"demo\"")
// 시연/안정 검증용 — 방광 모형 테스트가 100% 통과하는 시점을 git tag로 동결.
// src/demo/* 하위에 동결 시점의 알고리즘/파라미터를 격리해 두면 main 변경에 영향받지 않음.
}
create("dev") {
dimension = "channel"
buildConfigField("Boolean", "IS_DEMO", "false")
buildConfigField("String", "FLAVOR_LABEL", "\"dev\"")
// 개발 진행 — 모든 신규 기능/실험/리팩토링은 dev에서만.
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
}
buildFeatures {
compose = true
buildConfig = true
}
}
dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.lifecycle.viewmodel.compose)
implementation(libs.androidx.activity.compose)
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.compose.ui)
implementation(libs.androidx.compose.ui.graphics)
implementation(libs.androidx.compose.ui.tooling.preview)
implementation(libs.androidx.compose.material3)
implementation(libs.androidx.compose.material.icons)
implementation(libs.androidx.compose.foundation)
implementation(libs.gson)
implementation(libs.androidx.security.crypto)
implementation(libs.rive.android)
implementation(libs.androidx.startup.runtime)
// 소변컵 측정 모듈
implementation("com.microsoft.onnxruntime:onnxruntime-android:1.17.0") // YOLO
implementation("com.google.mlkit:text-recognition:16.0.1") // OCR
implementation("androidx.camera:camera-core:1.3.4") // CameraX
implementation("androidx.camera:camera-camera2:1.3.4")
implementation("androidx.camera:camera-lifecycle:1.3.4")
implementation("androidx.camera:camera-view:1.3.4")
implementation("com.squareup.okhttp3:okhttp:4.12.0") // HF API
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.compose.ui.test.junit4)
debugImplementation(libs.androidx.compose.ui.tooling)
debugImplementation(libs.androidx.compose.ui.test.manifest)
}