본문 바로가기

안드로이드/Report

(9)
Expecting android:screenOrientation="unspecified" or "fullSensor" (LockedOrientationActivity) 해결 방법 최근 Android Studio를 3.6으로 버전 업하면서 기존에 작업한 소스의 AndroidManifest.xml의 android:screenOrientation="portrait" 설정에서 빨간줄이 생겼다.(물론 빌드배포에선 전혀 문제가 나지 않았다.) 내용은 아래 스크린샷과 같다. 요약하면, 현재 지정한 'portrait' 속성 대신에 'unspecified'나 'fullSensor' 사용을 권고하는 내용이였다. 해결 방법은 간단하다. ignore 속성에 "LockedOrientationActivity" 를 추가하면 된다. tools:ignore="LockedOrientationActivity" 참고링크: https://stackoverflow.com/questions/58519021/in-andr..
java.lang.IllegalArgumentException: Comparison method violates its general contract! 해결 방법 개발을 할 때 데이터 정렬을 위해 Comparator 사용이 필요할 경우가 있다. 'java.lang.IllegalArgumentException: Comparison method violates its general contract!' 에러의 경우 Collection 사용 중 정렬을 위해 Comparator를 사용할 경우 return 값의 정의를 명확히 해줘야 한다는 내용이다. 해결 방법은 나와있는 그대로이다. Comparator의 return 값을 모든 상황에 맞게 전단해주는 것이다. 두 값을 비교하는 것이기 때문에 A 데이터와 B 데이터 중 한 쪽이 크거나, 혹은 두 값이 같은 경우, 모두 명시를 해줘야 하는 것이다.(Java 9에서 해당 오류가 수정되었다고 한다.) 아래는 kotlin.compar..
Invoke-customs are only supported starting with android 0 --min-api 26 해결방법 빌드 시 간헐적으로 해당 메세지를 보이며 에러가 나는 경우가 있다. 'Invoke-customs are only supported starting with android 0 --min-api 26' 원인은 아마도 코딩하며 사용된 문법중에 Java8부터 지원하는 문법을 사용하였을 경우에 발생하는 것 같다. 해결방법은 간단하다. 빌드시 Complie 옵션으로 Java8을 지정해주면 된다. 방법은 아래와 같다. 1. 상단 메뉴의 File > Project Structure 로 이동 2. Modules 탭의 'Source Compatibility'와 'Target Compatibility'를 Java8(1.8)로 지정후 적용 아래는 build.gradle에 추가되는 코드이다. android { ... compi..
Android Studio - Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6. Please specify proper '-jvm-target' option 해결 방법 기존엔 변화가 없다가 안드로이드 스튜디오 업데이트 및 Kotlin plugin 업데이트를 진행하고 나서 기존 프로젝트에 적용하던 중 해당 에러가 발생하였다. 에러 내용은 아래와 같다. 'Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6. Please specify proper '-jvm-target' option' 해결방법은 아래와 같이 build.gradle(Module: app)에 kotlinOptions에 jvmTarget을 1.8로 지정해주면 빌드가 정상적으로 된다. android { ... kotlinOptions { jvmTarget = 1.8 } ... }
RecyclerView 사용시 끊김현상 없애는 방법 안드로이드 앱에서 각종 리스트를 사용자에게 보여줄 경우가 있다. 이 때 RecyclerView를 사용해서 보여주게 되는데 새로운 목록을 불러오거나 목록의 내용이 변경될 경우 RecyclerView가 깜빡이면서 전체 리스트가 고쳐지는 경우가 있다. 이는 RecyclerView의 Adapter 구현을 정확히 하지 않았기 때문에 발생하는 현상이다. Adapter에서는 아래와 같은 메서드를 제공해 Adapter의 item들을 새로고침해주는 방식을 제공한다. notifyDataSetChanged() // 해당 Adapter의 모든 데이터를 변경 (전체 새로고침) notifyItemChanged(position: Int, payload: Any?) // position의 데이터에 대해 변경 notifyItemRan..
안드로이드 앱 배포시 '지원되는 기기 0개' 오류 해결 최근 앱 내부 테스트를 하기 위해 APK를 업로드 했는데 지원되는 기기가 0개여서 내용을 찾아보고 공유하고자 올리게 되었다. Google play console에서 APK 배포시 아래와 같이 APK에 대한 상세 정보를 볼 수 있다. 나에게 해당되는 원인은 카메라 사용시 아래 의 android:required 속성을 false로 주지 않아서 발생하였다. 해당 속성은 앱에서 camera 하드웨어 사용시 기기에서 해당 하드웨어가 없을 경우 구글플레이에서 '해당 앱을 지원하지 않는 기기 입니다.' 란 식으로 설치 자체가 되지 않는다. 기본값은 true기 때문에 false로 설정해줘야 다운로드가 가능해진다. 아래는 적용 후 APK 상세 정보이다.
Android: 프로그레스바(ProgressBar) 회전하지 않는 문제 해결 기본적으로 앱을 생성하면 발생할 확률이 매우 적다. 원인은 Androidx를 적용하면서 dependency 정리중 'com.google.android.material:material:1.0.0'를 삭제해서 발생하였다. Androidx는 추후 정리해서 포스팅할 예정이지만 간단히 설명하면 Google I/O 2018에서 발표된 Jetpack 오픈소스 프로젝트이다. 참고 링크: https://developer.android.com/jetpack/androidx AndroidX 개요 | Android Developers AndroidX는 Android 팀이 Jetpack 내에서 라이브러리를 개발, 테스트, 패키징, 버전 관리, 출시하는 데 사용하는 오픈소스 프로젝트입니다. AndroidX는 기존 Android ..
Android: ERR_CLEARTEXT_NOT_PERMITTED 오류 웹뷰를 사용하다 보면 'ERR_CLEARTEXT_NOT_PERMITTED' 를 볼 수 있다. 원인은 앱이 cleartext를 허용하지 않았기 때문인데, 앱이 안드로이드 9(Pie, API 28)이상을 타겟팅하는 경우 기본적으로 usesCleartextTraffic 속성 기본값이 false이다. 따라서 TLS를 사용하지 않는 도메인의 경우, 네트워크 통신이 기본적으로 불가능하다. 아래의 방법 중 하나를 사용해서 처리를 해주면 정상적으로 통신이 가능하다. 1. useCleartextTraffic 속성값 변경 AndroidManifest.xml에서 의 useCleartextTraffic 속성값을 true로 변경한다. 해당 방법은 매우 간단하지만 Android Developer에서는 추천하지 않는 방법이다. 모..