작성
·
172
·
수정됨
0
우선 강사님의 강의내용을 dataBinding 과 viewBinding을 적용해 코드를 바꾸니
실행이 않되고 앱이 죽는군요
해당 파일들을 git 에 올려두었습니다
https://github.com/dongguntechnology/db_Room2
buildFeatures {
dataBinding = true
viewBinding = true
}
답변 2
0
project build.gradle.kts
plugins {
id("com.android.application") version "8.2.2" apply false
id("org.jetbrains.kotlin.android") version "1.9.22" apply false
kotlin("kapt") version "1.9.21"
}
Module 수준의 build.gradle.kts
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("org.jetbrains.kotlin.kapt")
}
android {
namespace = "com.dongguninnovatiion.db_room2"
compileSdk = 34
defaultConfig {
applicationId = "com.dongguninnovatiion.db_room2"
minSdk = 24
targetSdk = 34
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
getByName("debug") {
sourceSets {
getByName("main") {
java.srcDir(File("build/generated/ksp/debug/kotlin"))
}
}
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
buildFeatures {
dataBinding = true
viewBinding = true
}
}
dependencies {
implementation("androidx.core:core-ktx:1.12.0")
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("com.google.android.material:material:1.11.0")
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
val roomVersion = "2.6.1"
implementation ("androidx.room:room-runtime:$roomVersion")
annotationProcessor ("androidx.room:room-compiler:$roomVersion")
// optional - RxJava2 support for Room
implementation ("androidx.room:room-rxjava2:$roomVersion")
// optional - RxJava3 support for Room
implementation ("androidx.room:room-rxjava3:$roomVersion")
// optional - Guava support for Room, including Optional and ListenableFuture
implementation ("androidx.room:room-guava:$roomVersion")
// optional - Test helpers
testImplementation ("androidx.room:room-testing:$roomVersion")
// optional - Paging 3 Integration
implementation ("androidx.room:room-paging:2.4.0-rc01")
}
MainActivity.kt
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private lateinit var db: TodoDatabase
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
val db = Room.databaseBuilder(
applicationContext,
TodoDatabase::class.java,"Todo"
).allowMainThreadQueries().build()
binding.addBtn.setOnClickListener{
addTodo()
refreshTodo()
}
}
private fun addTodo() {
val t1 = binding.todoEdit.text.toString()
CoroutineScope(Dispatchers.IO).launch {
db.todoDao().insert(Todo(t1))
}
}
private fun refreshTodo() {
CoroutineScope(Dispatchers.Main).launch {
val data = CoroutineScope(Dispatchers.IO).async {
db.todoDao().getAll().toString()
}.await()
if(data != null) {
// binding.resultText.setText("${data.toString()}")
}
}
}
}
이렇게 수정하여도 앱이 죽는군요
0
먼저 최상위 build.gradle.kts 에서 annotationProcessor 를 kapt 로 고칩니다.
annotationProcessor 는 Java 프로젝트에서 사용하고 kotlin 에서는 kapt 또는 KSP 를 사용하는데 일단 실행 되게 하는 것에만 집중해서 kapt 로 수정하세요. 아마 KSP로 마이그레이션 하라고 경고가 뜰 건데 무시하시지요.
그 다음으로는 MainActivity 에 이상한 코드가 있습니다.
31번 라인을 제거하면 실행이 잘 됩니다.
주신 코드 그대로 제가 언급한 두 부분만 고쳤습니다
그런데 지금 다시 보내주신 코드는 gradle 쪽에 많은 수정이 있는 것 같습니다.
예전 groovy 버전의 코드가 섞여 있는 것도 같습니다.