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
728x90
  • 버그 리포트 메일로 안드로이드 에러가 전송되어서, 무슨 일인가 하고 확인해보았다.

1. Error

Fatal Exception: java.lang.IllegalArgumentException
reportSizeConfigurations: ActivityRecord not found for: Token{a8646d4 null}
android.os.Parcel.createException + 1970 (Parcel.java:1970)
com.android.internal.os.ZygoteInit.main + 1445 (ZygoteInit.java:1445)

 

Caused by android.os.RemoteException
Remote stack trace: at com.android.server.am.ActivityManagerService.reportSizeConfigurations(ActivityManagerService.java:10468) at android.app.IActivityManager$Stub.onTransact$reportSizeConfigurations$(IActivityManager.java:12548) at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2385) at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:4162) at android.os.Binder.execTransact(Binder.java:739)

 

 

2.원인

Performance issue: "too much work on its main thread"

 

 

 

 

Reference

728x90
728x90

 

메뉴는 한번 만들어놓으면 대체로 초기에 설정하는걸 까먹는데, 이것도 가끔씩 오래간만에 사용하려고 하면 까먹어서 메모.

 

 

- ViewPager 사용시 페이지를 넘기는데, 갑자기 에러가 나타나는 경우는 여러가지 경우의 수가 있다.

  그 중, instantiateItem에서 IndexOutOfBounds exception이 뜰 경우는

  심플하게 생각하면, ViewPager한테 화면을 얼마나 띄워야하는지 미리 안알려줘서 그렇다.

 

 

방안 1. setOffScreePageLimit 메소드 사용

viewpager.setOffscreenPageLimit(페이지수 int값);  

 

limit을 미리 걸어두면, instantiateItem에서 단순하게

(ViewGroup) container.addView(view, position); 으로 사용해도 에러가 나지 않는다.

 

 

 

방안 2. instantiateItem에서 addView할 때 조건 걸기

((ViewPager)container).addView(view, ((ViewPager)container).getChildCount() > position ? position : ((ViewPager)container).getChildCount())

 

ViewPager가 가지고 있는 자녀의 수가 position값보다 큰 지를 판별해서, index가 초과하지 않도록 하는 방법.

 

 

(미리 알 수 있으면) 개인적으로 2번보단 1번이 간결하고 편한 거 같음.

 

 

 

 

Reference

https://stackoverflow.com/questions/9402970/android-viewpager-throwing-indexoutofbounds-exception-when-setting-current-item

728x90

+ Recent posts