Android 6

adb를 통해 앱 로그 얻기

adb logcat을 사용하면 앱 로그를 손 쉽게 채취할 수 있다. 물론, adb로 연결해서 로그를 얻기 위해서는 타겟 스마트폰이 "개발자 모드"가 활성화된 상태여야만 한다. # 연결된 스마트폰의 모든 로그 출력 adb logcat # 'Info' 이상인 'ActivityManager' 태그가 있는 로그 메시지와 # 'Debug' 이상인 'MyApp' 태그가 있는 로그 메시지를 제외하고 # 모든 로그 메시지를 억제 adb logcat ActivityManager:I MyApp:D *:S # 로그 출력 결과를 "log.txt" 파일로 저장 adb logcat -d > log.txt 우선순위 (로그 레벨) adb logcat은 아래와 같이 7가지 종류의 레벨(우선순위)를 가지게 된다. V: Verbose(가..

Android 2023.12.30

java.lang.ClassNotFoundException: Didn't find class "java.time.Duration" on path: DexPathList 해결법

Java version: Java8 안드로이드 앱을 개발하면서 dnsjava나 GoogleCredentials 등을 사용하다 보면 아래와 같은 에러를 만날 수 있다. java.lang.ClassNotFoundException: Didn't find class "java.time.Duration" on path: DexPathList 해당 에러의 주요 원인은 앱이 실행되는 환경에 있는 JVM 환경에 java.time이 없기 때문에 발생하는 문제이다. Stackoverflow에 따르면 java.time 관련 기능이 Android API 26에 추가가 되었기 때문에 이보다 아래 버전의 API 환경에서는 위와 같은 에러가 발생한다고 한다. https://stackoverflow.com/questions/6284..

Android 2022.09.20

ADB 커멘드 정리

# attach된 device 목록 adb devices # 연결된 기기/에뮬레이터의 shell에 접속 adb shell # test apk 설치 adb install -t # apk 재설치 adb install -r # apk downgrade 설치 adb install -d # TCP 연결 대기 (5555 포트) adb tcpip 5555 # IP 주소를 사용해서 기기에 연결 adb connect device_ip_address:5555 # adb 서버 실행 adb run-server # adb 서버 종료 adb kill-server # port forwarding (호스트 포트 6100에서 local:logd로의 전달) adb forward tcp:6100 local:logd

Android 2022.09.15

ADB로 apk 설치하기

Android 디버그 브리지(adb)는 기기와 통신할 수 있도록 지원하는 다목적 명령줄 도구이다. adb 명령어는 앱의 설치 및 디버깅과 같은 다양한 기기 작업에 도움이 되며, 기기에서 다양한 명령어를 실행하는 데 사용할 수 있는 Unix 셸에 대한 액세스를 제공한다. 이 도구는 다음과 같은 세 가지 구성요소를 포함하는 클라이언트-서버 프로그램이다. 일반적으로 안드로이드 개발을 하면서 개발한 앱을 테스트할 때에 adb install을 통해서 연결된 안드로이드 기기에 테스트 앱을 설치하게 된다. adb install [-lrtsdg] - push this package file to the device and install it (-l: forward lock application) (-r: replace..

Android 2022.09.15

android.os.NetworkOnMainThreadException 해결 방법

Android HoneyComb 부터는 메인 스레드에서 네트워크 통신 처리를 하게 되면 "android.os.NetworkOnMainThreadException"이 발생하게 된다. 이를 해결하기 위해서 가장 먼저 고려해볼 해결 방법은 바로 AsyncTask를 사용하는 것이다. 이 AsyncTask는 새로운 스레드를 만들지 않아도 안드로이드 운영체제가 알아서 미리 준비된 스레드를 사용해서 비동기적으로 일을 처리한다. AsyncTask에 대한 자세한 설명은 아래의 링크를 참고하길 바란다. 대부분의 경우에는 이 AsyncTask를 사용해서 문제를 해결할 수 있을 것이다. 그러나, 일부 경우에는 시나리오 혹은 앱의 구조 상 이 네트워크 처리를 비동기적으로 수행하지 못하는 경우가 생길 수 있다. 이러한 경우에는 ..

Android 2020.07.11

WebView net::ERR_CLEARTEXT_NOT_PERMITTED

Android OS 9 Pie 버전부터는 (tagetSdkVersion 28 이상일 경우) WebView에 일반적인 텍스트로 "http://" URL 접근이 막혔다. 따라서, 웹뷰에서 http를 통해서 웹페이지에 접근하려고 하면 "net::ERR_CLEARTEXT_NOT_PERMITTED" 에러가 발생하게 된다. 약 30분간의 검색 끝에 이 에러에 대한 3가지 해결책들을 찾을 수 있었다. 1) res/xml/network_security_config.xml 추가 먼저, res/xml/network_security_config.xml 을 만들고, 아래의 코드를 추가한다. ebookfrenzy.com amazon.com nytimes.com 위의 코드에서 ebookfrenzy.com 이나 amazon.com..

Android 2020.06.26