728x90

1. 현상

- Migrate to AndroidX로 변경을 하는데...

  정식 서비스 앱에서는 제대로 잘 변경되었는데, 문제가 터진건 토이프로젝트였음.

  Migration을 잘못한건지 xml에서 이전 그대로 따라가고 잘못 꼬여있었다.

 

2. 수정 경로

 

* AppBarLayout

수정전: android.support.design.widget.AppBarLayout

수정후: com.google.android.material.appbar.AppBarLayout

 

* Toolbar

수정전: android.support.v7.widget.Toolbar

수정후: androidx.appcompat.widget.Toolbar

 

* CoordinatorLayout

수정전: androidx.constraintlayout.ConstraintLayout 

수정후: androidx.coordinatorlayout.widget.CoordinatorLayout

 

android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class androidx.constraintlayout.ConstraintLayout

 

 

* ConstraintLayout

수정전: androidx.constraintlayout.ConstraintLayout

수정후: androidx.constraintlayout.widget.ConstraintLayout

 

* FloatingActionButton

수정전: android.support.design.widget.FloatingActionButton
수정후: com.google.android.material.floatingactionbutton.FloatingActionButton

   Caused by: android.view.InflateException: Binary XML file line #12: Binary XML file line #26: Error inflating class android.support.design.widget.FloatingActionButton
     Caused by: android.view.InflateException: Binary XML file line #26: Error inflating class android.support.design.widget.FloatingActionButton
     Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.design.widget.FloatingActionButton" on path: DexPathList[[zip file ~~

 

* CardView

수정전: android.support.v7.widget.CardView
수정후: androidx.cardview.widget.CardView

 

* TabLayout

수정전: android.support.design.widget.TabLayout

수정후: com.google.android.material.tabs.TabLayout

 

* TabItem

수정전: android.support.design.widget.TabItem

수정후: com.google.android.material.tabs.TabItem

 

* TextInputLayout

수정전: android.support.design.widget.TextInputLayout

수정후: com.google.android.material.textfield.TextInputLayout

 

* TextInputEditText

수정전: android.support.design.widget.TextInputEditTextt

수정후: com.google.android.material.textfield.TextInputEditText

 

 

* ViewPager

수정전: androidx.core.view.ViewPager

수정후: androidx.viewpager.widget.ViewPager

     Caused by: android.view.InflateException: Binary XML file line #11: Binary XML file line #11: Error inflating class androidx.core.view.ViewPager
     Caused by: android.view.InflateException: Binary XML file line #11: Error inflating class androidx.core.view.ViewPager

 

Reference:

https://stackoverflow.com/questions/55298742/android-error-inflating-class-android-support-design-widget-appbarlayout

https://stackoverflow.com/questions/42221530/error-inflating-class-android-support-design-widget-floatingactionbutton

728x90
728x90

 

ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);

 

AndroidX Migration을 진행한 후에,

위와 같은 binding 부분에서 에러가 발생할 경우가 간혹 있다.

빨간줄에 에러를 확인해보면 ' Type parameter T has incompatible upper bounds : ViewDataBinding ~' 이런건데,

 

Build -> Clean Project
Build -> Rebuild Project

File -> Invalidate Caches/Restart...

귀찮아도 이 단계를 거치고 프로젝트를 다시 시작하면 해결 된다.

 

 

 

Reference

https://stackoverflow.com/questions/34368329/data-binding-android-type-parameter-t-has-incompatible-upper-bounds-viewdata

 

Data Binding Android - Type parameter T has incompatible upper bounds : ViewDataBinding and MainActivity

I am using Android Studio 2.0 Preview 4. I'm using Android SDK tools 25 rc1. This error persists no matter how many times I clean / rebuild project. File->Invalidate Caches and restart also doesn't...

stackoverflow.com

 

728x90
728x90

 

build error message:

* What went wrong:
Execution failed for task ':app:processDebugResources'.
> Android resource linking failed
  app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:686: AAPT: error: resource android:attr/fontStyle not found.
      
  app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:686: AAPT: error: resource android:attr/font not found.
      
  app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:686: AAPT: error: resource android:attr/fontWeight not found.
      
  app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:686: AAPT: error: resource android:attr/fontVariationSettings not found.
      
  app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:686: AAPT: error: resource android:attr/ttcIndex not found.
      
  app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:709: AAPT: error: resource android:attr/startX not found.
      
  app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:711: AAPT: error: resource android:attr/startY not found.
      
  app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:713: AAPT: error: resource android:attr/endX not found.
      
  app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:715: AAPT: error: resource android:attr/endY not found.
      
  app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:722: AAPT: error: resource android:attr/offset not found.
      
  error: failed linking references.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 28s
23 actionable tasks: 5 executed, 18 up-to-date

 

 

해결방안:

 

- stackoverflow나 여러 블로그 등에서 찾아보면, 해결방안으로 Compile Sdk Version 누락이나 buildToolsVersion을 수정하라는 말이 나온다.

 

- 그러나 내 케이스에서는 Project Structure로 가서 확인해봐도 CompileSdkVersion이 누락되지 않았다.

또한 buildToolsVersion를 수정하는 방안 또한, 구글 정책이 변경된(buildToolsVersion을 gradle 설정에서 제거해야함) 현 시점에서는 도움이 되지 않는다.

 

- 해당 에러가 일어난 프로젝트가 오래된 프로젝트라, 기존에 appcompt, support library 등 연결한 library쪽에서 해당 리소스 레퍼런스를 링크하지 못한다는 의미인데, 이제 이런건 AndroidX를 통해서 자동으로 찾아가도록 수정하는 것이 좋은 것 같다.

 

- 즉, (target은 그대로 놔두고) compileSdkVersion을 28로 수정한다.

   app폴더에 커서를 두고 Refactor > Migrate to AndroidX ... 를 선택해서 변경한다.

 

 

 

 

 

 

 

 

 

728x90

+ Recent posts