-
[Android] kotlin-android-extensions deprecated안드로이드 2021. 8. 4. 11:59반응형
개요
kotlin plugin extension이 deprecated 됐다. 그래서 다른 방법으로 처리를 해야한다. 안드로이드 개발자 사이트에 의하면 viewBinding을 통해 마이그레이션을 하라고 하고 있다.
Gradle 수정
android > buildFeatures > viewBinding을 true로 설정해준다.
android { ... buildFeatures { viewBinding = true } }
아래의 kotlin-android-extensions plugin 구문을 삭제해준다.
plugins { kotlin("android.extensions") }
또는
plugins { id "kotlin-android-extensions" }
그리고 아래와 같이 kotlin-parcelize를 추가해준다.
plugins { id 'kotlin-parcelize' }
Gradle을 모두 수정했다면 Gradle sync를 한번 해준다.
Activity, Fragment 클래스 수정
- kotlinx.android.synthetic의 import를 모두 삭제해준다.
- 아래와 같이 binding을 선언해준다.
private lateinit var binding: ActivityLoginBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityLoginBinding.inflate(layoutInflater) val view = binding.root setContentView(view) }
Fragment에서는 onCreateView() 메소드에서 인스턴스를 생성해준다. - view를 synthetic 속성으로 참조했던 대신 binding 클래스를 사용해 참조하도록 변경한다.
위 코드의 주석처럼 앞에 binding.을 추가하여 binding 인스턴스를 사용하여 참조하도록 수정해준다.// "name" TextView를 synthetic 속성을 이용해 참조. name.text = viewModel.nameString // "name" TextView를 binding 클래스 인스턴스를 사용해 참조. binding.name.text = viewModel.nameString
마치며
kotlin-android-extension이 deprecated 됐다는 warning 메시지가 떠서 수정을 했더니 synthetic을 사용할 수 없다는 에러가 나와 당황했었다. 그래서 찾아보니 위와 같이 안드로이드 개발자 사이트에 잘 정리가 되어있어 정리를 해봤다. 이제 한 Activity를 마이그레이션이 끝났으니 남은 Fragment와 Activity를 모두 수정해야겠다.
반응형'안드로이드' 카테고리의 다른 글
[Android] 앱 실행 시 빈 화면 보이는 현상 방지 (0) 2021.08.10 [Android] ViewHolder getAdapterPosition Deprecated (0) 2021.08.04 [Android] Compose Lifecycle(안드로이드 개발자 사이트 번역) (0) 2021.08.03 [Android] Compose State 관리 - 2 (0) 2021.08.02 [Android] Compose State 관리 - 1 (0) 2021.08.02