Develop

원인 logcat 의 로그를 보던 중 아래와 같은 메시지가 노출되는 문제를 발견하였습니다. logcat: Unexpected EOF! This means that either the device shut down, logd crashed, or this instance of logcat was unable to read log messages as quickly as they were being produced. If you have enabled significant logging, look into using the -G option to increase log buffer sizes. 이 문제는 ADB의 log buffer 가 작아서 생기는 문제더라구요? 테스트 기기 혹은 애뮬레티어의 개발자옵션으로..
에러 android target sdk 를 29로 올렸더니 멀쩡하던 Glide에서 에러 로그를 뿜기 시작함.. 스택 W/ExifInterface: Invalid image: ExifInterface got an unsupported image format file(ExifInterface supports JPEG and some RAW image formats only) or a corrupted JPEG file to ExifInterface. java.io.IOException: Invalid byte order: ffff8950 at android.media.ExifInterface.readByteOrder(ExifInterface.java:3164) at android.media.ExifInter..
필요성 Android Studio 로 Android 개발을 하다 보면 adb shell 을 활용하여 테스트해야 하는 경우가 많습니다. 하지만 이와 관련된 환경 변수가 설정되어 있지 않다면 아래와 같은 메시지가 뜨게 되죠. $ adb bash: adb: command not found 환경 변수?? 환경 변수란 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임이라 합니다. 쉽게 말해 환경 변수에 실행할 파일의 경로를 미리 지정해두면 어떤 경로에서도 바로 실행 할 수 있도록 해주는 것이죠. 환경변수 영구 설정 구글링을 하면 bash_profile 을 설정해서 환경 변수를 설정하는 방법이 많은데 이 방법은 터미널을 닫으면 그대로 적용된 설정이 풀립니다. 혹은 MacOS 를 재시동하면 풀려..
문제 원인 개발을 하는 도중에 폴더블 폰에서 내부 화면과 외부 화면의 레이아웃이 다르게 표시되는 문제가 있었습니다. 그래서 폴더블 폰이 접히거나 펼쳐졌을 때 코드로 해당 레이아웃을 동적으로 고쳐주려고 했는데 어느 곳에서도 접힌 상태인지 펼친 상태인지 알 수 있게 제공 해주는 코드 정보를 찾을 수 없더라구요.. 구글링을 오랫동안 하다 한 가지 방법을 찾아내었습니다. 바로 DisplayManager 와 ConfigurationChange 를 활용 하는 것 인데요 위 두가지 방법을 살펴보겠습니다. DisplayManager 를 활용한 방법 폴더블 폰은 화면을 접게 되면 바깥 디스플레이에 앱(화면)을 표시하게 됩니다. 바깥 디스플레이에 표시될 때 이 때 view 는 다시 onResume() 을 타게 되는데 아래..
SMS 인증번호를 읽어와 자동 입력하기 2018년 10월에 구글에서 공지한 '통화 기록 및 SMS 사용 권한 제한'에 따라 2019년 1월부터 '통화 기록 및 SMS 사용 권한 제한' 정책은 전화나 문자를 주 기능으로 하는 앱이 아니면 SMS 권한을 획득할 수 없다고 합니다. 이 경우 단순히 '인증번호 자동 입력' 기능 구현을 위한 앱은 SMS Retriever API 를 사용하는 방식으로 구현하여야 합니다. 참고 http://woowabros.github.io/experience/2019/03/08/googleplay_permission_policy.html https://developers.google.com/identity/sms-retriever/overview SMS Retriever API 소..
1. 함수의 기본 구조 1.1 구조 우선 함수의 기본 구조를 보자 함수는 헤더(header)와 몸체(body)가 존재한다. private fun pointStatus(name: String, score: Int) : String { var result = when(score) { 100 -> "100점" in 90..99 -> "90점" in 80..89 -> "80점" in 70..79 -> "70점" else -> "70점 이하" } return "$name 님의 현재 점수는 $result 입니다." } 1.2 헤더 함수의 첫번째 부분은 헤더다. 함수의 헤더는 다섯개 부분으로 구성된다. 가시성제한자, 함수키워드, 함수이름, 함수 매개변수, 함수 반환타입 이다. 가시성 제한자 private 함수 키워드..
1. 조건문과 조건식 1.1 비교연산자 종류 = 왼쪽 값이 오른쪽 값보다 크거나 같은지 검사한다. == 왼쪽 값이 오른쪽 값과 같은지 검사한다. === 왼쪽과 오른쪽의 두 개의 인스턴스가 같은 객체를 참조하는지 검사한다. != 왼쪽 값이 오른쪽 값과 같지 않은지 검사한다. !== 왼쪽과 오른쪽의 두 개의 인스턴스가 같은 객체를 참조하지 않는지 검사한다. 1.2 논리연산자 종류 && AND 논리 왼쪽과 오른쪽 표현식 모두 true 일때만 true가 되며 이외는 false || OR 논리 왼쪽과 오른쪽 표현식 중 하나가 ture 면 true 가 됨(모두 false 일때만 false) ! NOT 논리 true 일때는 fa..
1. 코틀린 특징 1.1 코틀린/JVM 컴파일과 실행 실행 버튼을 누르고 Run _.kt 파일을 선택하면 인텔리제이가 kotlinc-jvm 컴파일러를 사용해서 코틀린 코드를 *_컴파일** 한다. 즉, 우리의 코틀린 코드를 JVM 에서 실행 할 수 있는 바이트 코드로 변환한다는 뜻이다. 하지만 코틀린은 JVM 에만 국한되지 않는다. 코틀린은 자바스크립트로 컴파일 될 수 있으며, JVM 없이 바로 실행되는 네이티브 바이너리로도 컴파일 될 수 있다. 1.2 코틀린 REPL 때에 따라서는 작은 코드를 실행 할 때 어떻게 되는지 테스트해 보고 싶을 때가 있다. 이것은 코틀린 언어를 배울 때 특히 유용하다. 다행스럽게도 인텔리제이는 파일을 생성하지 않고 코드를 빨리 테스트하는 도구를 제공한다. 이 도구를 코틀린 R..
1. 개요 안드로이드 6 부터 앱이 백그라운드에서 처리하는 작업으로 인해 소모 되는 배터리를 줄이기 위해 도즈(Doze) 와 어플대기 모드(App Standby) 정책을 추가했습니다. 안드로이드 7 부터는 세분화된 도즈 정책을 추가하였습니다. 이러한 배터리 효율 정책은 기기나 어플을 수면 상태로 만들어버리고 여러가지 제한이 발생하기 때문에 이러한 제한이 어플의 핵심 기능을 방해한다면 큰 문제가 발생하게 됩니다. 2. 도즈 (Doze) 2.1 안드로이드 6 (Marshmallow / 6.0 / API 23) 2.1.1 조건 충전기 연결이 되지 않은 배터리 동작이며, 화면이 꺼진 상태로 움직이 없는 경우가 일정 시간 이상 지속 되는 경우 진행됩니다. 2.1.2 제한 도즈가 진행되면 제한이 발생되고 도즈의 중..
소개 구글 I/O 에서 dark theme 에 대해서 발표한 내용이다. Dark theme 를 끄고 켜는 방식으로 변경 됬다고 함. Dark theme 의 작동 방식은 크게 4가지로 구분 되어 짐 Option A: Android Dark Theme 사용 Theme.AppCompat.DayNight : 이미 사용 가능 Theme.DeviceDefault.DayNight : Device 스타일에 맞춤 ThemeOverlay.DeviceDefault.Accent.DayNight : Device 스타일에 맞춤 근데 함정은 빡치게도 위 3가지 다 안됨 아놔... Option B: Dark Theme 를 강제 On/Off 사용 사용자의 설정 여부와 상관 없이, 앱 내부 코드로 활성/비활성화 시킬 수 있다. Opti..
Linitial
'Develop' 카테고리의 글 목록 (3 Page)