[일일이] room db 연결 삽질

두리두두·2024년 6월 11일
0

TIL

목록 보기
13/15
  • 내 소중한 퇴근 후 저녁을 이틀이나 앗아간 녀석이다.
  • 정말 이틀 저녁시간 내내 계속 빌드는 되지만 앱이 죽어버리는 현상에 마주했다 ,,, ㄱ- OTL 부아가 치밀어오르고 홧병이 나기 직전에 (이미 남) 하나하나씩 수동 디버깅을 하며 .. (어디까지 주석했을때 앱이 안죽는가?ㅋㅋ) 깨진 독에 물 붓듯이 고쳐보았다. 디버깅을 더 잘하고싶어졌다...
  • 일단 오류가 났던 항목을 기억나는대로 기록해보았다.

1. java version

  • kapt와 쓰려면 자바 17을 써야했는데 1.8을 쓰고있었음.

2. app gradle

//Room
    implementation("androidx.room:room-runtime:2.4.3")
    kapt ("androidx.room:room-compiler:2.4.3")
    implementation("androidx.room:room-ktx:2.4.3")
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9")
    kapt("org.xerial:sqlite-jdbc:3.34.0")

3. application 클래스에서 레포지토리 초기화

  • 레포지토리를 생성하는데에 앱 진입 시 한 번 만 해야하므로
    -> 더 자세히 알아볼것!!
class ApplicationClass : Application() {
    override fun onCreate(){
        super.onCreate()
        Log.d("TEST++", "ApplicationClass")
       UserRepository.initialize(this)
    }
}

3-2) manifest.xml에 추가

<application
        android:name=".config.ApplicationClass"
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="일일이"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Oneone2"
        tools:targetApi="31">
  • 왜 initialize를 해야하는지
    (어플리케이션단에서 초기화)

4. ViewModel 생성

  • 뷰모델은..ViewModelProvier로 생성해야하는데 냅다 일반 클래스처럼 생성하고 있었다.
  • 그래서 뷰모델을 생성하면 앱이 죽었다.
 private lateinit var userViewModel: UserViewModel
 ...
 override fun onCreate(savedInstanceState: Bundle?) {
  ...
  userViewModel  = ViewModelProvider(this)[UserViewModel::class.java]
  ...}

여기 쓴 것들을 100프로 알지 못하고 쓰고 있는 기분이다. 특히 뷰모델자식...

추후 공부해서 추가를 해야겠다.
일단 정말 gradle과 manifest의 중요성을 알게된 날..

자자!!

profile
야금야금 앱 개발자

1개의 댓글

comment-user-thumbnail
2024년 6월 15일

코루틴, 리사이클러뷰,, 다시공부~

답글 달기