본문 바로가기

ANDROID/Debug Logs

(19)
[안드로이드] 안드로이드 스튜디오 Gradle build가 먹통일 때! Gradle sync failed: EventQueue.isDispatchThread()=false Toolkit.getEventQueue()=com.intellij.ide.Ide 갑자기 무슨 일일까, Git 브랜치를 변경한 후 제대로 빌드되지 않은 클래스들을 다시 빌드하기 위해 Invalidate Caches and Restart를 해주었는데 웬걸 위와 같은 오류와 함께 그래들 빌드가 전혀 되지 않았다. 위 상황을 해결하기 위해 갖은 노력을 해보았다. Invalidate Caches and restart 반복 : 실패 Android Studio 재시작 : 실패 Project 닫은 뒤 다시 열기 : 실패 아무 SDK 다운받아 설치해보기 : 실패 컴퓨터 재시작 : 실패 그리고 마침내 내가 찾은 솔루션은....
[Android Studio] No cached version of com.android.tools.build:aapt2:3.6.1-6040484 available for offline mode 에러 대처하기 Unit testing 참고를 위해 Google blueprint 레퍼지토리를 클론해 싱크를 하고 있었는데 No cached version of com.android.tools.build:aapt2:3.6.1-6040484 available for offline mode ... 등의 오류와 함께 그래들 빌드에 실패하는 것이었다. gradle offline mode를 끄라는 글도 있었지만, 해당 옵션이 deprecate 된건지 gradle 옵션에서 찾을 수가 없었고, 다음으로 찾은 해결책은 프로젝트의 Project Structure를 조정하는 것이었다. 안드로이드 스튜디오의 해당 메뉴로 들어가 Project의 Gradle Plugin Version과 Gradle Version을 전부 최신으로 맞춰주었고, ..
[안드로이드] CountDownTimer의 시간 Sync 문제 해결하기 프로젝트에서 MediaPlayer와 CountDownTimer를 사용하면서 몇가지의 애로사항이 있었는데, 이를테면 영상을 중지하고 다시 재개할 때의 기존의 타이머를 어떻게 다시 설정하냐는 것이었다. 왜냐하면 CountDownTimer에는 별도의 pause 기능이 없고, stop만이 가능했기 때문이다. 우선 기존의 요구사항은 아래와 같다. MediaPlayer는 10개의 영상을 연달아 재생한다. 각 영상은 각기 다른 재생시간을 가진다. 영상은 10초의 대기시간을 가진 뒤 재생을 시작한다. 사용자는 대기시간 및 재생중에도 상관없이 일시정지 및 다시시작(resume)이 가능하다. 일시정지 및 다시시작, 재생을 진행하는데 모든 타임라인이 일치하여야 한다. (남은 시간, 경과 시간 등) 여기서 포인트는 일시정지 ..
[안드로이드] ExoPlayer2 오류 : invoke-customs are only supported starting with Android O) invoke-customs are only supported starting with Android O) Defaut interface methods are only supported starting with Android N .. 영상 재생을 위한 ExoPlayer를 Implement하는 과정에서 위와 같은 오류가 발생했다. Stack Overflow에서 어렵지 않게 해결책을 구할 수 있었는데, 비슷한 오류를 겪은 사람들이 많았던 듯. 아래의 코드를 app레벨의 gradle 파일에 추가하자. android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 ..
[안드로이드] Exo Player에서 발생하는 java.net.MalformedURLException: unknown protocol 해결 Exo player 셋업을 마치고 player에 Uri 파일을 넘겨주는 과정에서 java.net.MalformedURLException: unknown protocol 에러가 발생하였다. player에 넘겨주고자 했던 건 프로젝트의 리소스 폴더 내 raw 폴더에 넣어둔 mp4 파일이었는데, 기타 다양하게 나와있는 Uri 생성 방법으로 해보았으나 실패하였고, 결론적으로 아래의 방식을 통해 문제를 해결할 수 있었다. val rawDataSource = RawResourceDataSource(context) rawDataSource.open(DataSpec(RawResourceDataSource.buildRawResourceUri(R.raw.sample_video))) val videoSource = Prog..
[안드로이드] Inconsistency detected. Invalid view holder adapter positionViewHolder 최근 크래시 리포트에서 RecyclerView와 관련된 오류가 하나 집계되었다. Inconsistency detected. Invalid view holder adapter positionViewHolder 찾아보니 삼성 디바이스에서 발생하는 이슈로 올라와있는 스택 오버플로우 질문이 있었고, 나와있는 해결책중에 개인적으로 덜 복잡하다고 생각되는 솔루션을 사용해보았다. 방법은 1. LinearLayoutManager를 상속받는 LinerLayoutManagerWrapper 클래스를 만든다. ... class LinearLayoutManagerWrapper: LinearLayoutManager { constructor(context: Context) : super(context) {} constructor(..
[안드로이드 | RxAndroid | Room] no suitable method found for createFlowable room 해결 Room DB의 쿼리 결과를 Flowable으로 받고 싶었는데 빌드 실행 후 no suitable method found for createFlowable room.. 와 같은 오류가 발생하였다. Room에 사용하는 Dao 파일을 IDE가 실제 사용하는 자바 코드인 DaoImpl로 만드는 과정에서 나타나는 오류였다. 해결법은 단순했는데, Flowable 사용이 가능한 room 관련 implementation을 추가적으로 build.gradle에 포함시켜야 하는 것이었다. 기존에는 room과 rxJava 관련 implementation이 이미 들어가 있었으나 implementation "android.arch.persistence.room:rxjava2:1.1.1" 아래와 같은 implementation이..
[안드로이드] 안드로이드 스튜디오 Build 에러 | Unfortunately you can't have non-Gradle Java modules and > Android-Gradle modules in one project 기존 프로젝트의 마이너버전 개발을 위해 원본 프로젝트를 복사해 단순히 버전 네이밍만 바꾸어주었는데, 안드로이드 스튜디오에서 빌드 오류가 발생했다. Unfortunately you can't have non-Gradle Java modules and > Android-Gradle modules in one project 이후 스택 오버플로우에서 간단한 해결법을 찾았는데 해결방법은 아래와 같았다. 1. 안드로이드 스튜디오를 종료한다. (완전종료) 2. 프로젝트 폴더에 존재하는 .idea 디렉토리를 제거. 3. 프로젝트 폴더에 존재하는 .imi 확장자 파일을 전부 제거. 4. 안드로이드 스튜디오 Open, 빌드 재수행 기존 프로젝트가 빌드될 때의 속성이나 기타등등 설정값이 제거한 위치등에 존재하기 때문에 충돌..