반응형

Android 13

Kotlin callbackFlow callback listener의 데이터를 Coroutines flow로 보내기

Android에서 callback listener를 코루틴(Coroutines) flow로 보내는 방법을 포스팅합니다. Android에서 이벤트가 호출될 때 listener를 통해 응답을 처리합니다. Flow를 이용하여 데이터 흐름을 만드려고할 때 listener를 통해 받은 값을 flow로 보낼 수 없습니다. Flow와 listener 내부의 scope가 다르기 때문에 listener내부에서 emit을 사용하여 바로 데이터를 보낼 수 없습니다. (Suspension functions can be called only within coroutine body) 이러한 경우 callbackflow를 사용하여 listener 내부 값을 flow로 보낼 수 있습니다. listener 내부에서 offer함수를 호..

Kotlin 2021.09.13

Kotlin KAPT(Kotlin Annotation Processing Tool) 이란

kotlin KAPT(Kotlin Annotation Processing Tool)에 대한 글입니다. Kotlin에서 Annotation처리를 위해서 KAPT(Kotlin Annotation Processing Tool)을 제공합니다. Project 내부에서 Hilt, Room, Databinding 등 library가 사용된다면 기존에 annotationProcessor에서 kapt로 바꾸어 선언하는 게 필요합니다. Kotlin은 kotlinc로 컴파일되기 때문에 기존에 Java로 작성된 Annotation Process로는 Kotlin의 Annotation이 제대로 처리되지 않습니다. 예를 들어 Android의 Room library를 사용하다가 아래와 같은 Exception을 만날 수도 있습니다. ..

Android 2021.09.13

[Android] PID(Process ID)/UID(User ID) ADB로 확인하는 방법

Android의 ADB를 사용하여 PID와 UID를 확인하는 방법입니다. PID는 Process ID로 Android App이 실행되어 프로세스가 생성되는 시점에 할당받습니다. UID는 User ID로 Android App을 설치하면 AndroidManifest에 있는 Package name으로 할당됩니다. ADB 명령어로 특정 Package의 PID를 찾는 방법 adb shell pidof PACKAGE_NAME 예제 adb shell pidof com.google.android.youtube 15704 shell의 ps를 사용하여 PID 찾는 방법 두 번째 값이 PID입니다. adb shell "ps -ef | grep com.google.android.youtube" u0_a238 15704 807..

Android 2021.09.07

[Android] logcat chatty 로그가 제대로 출력되지 않을 때 expire 1 line

에러 메시지 03-06 10:21:11.147 13050 13050 I chatty : uid=10238(com.google.android.youtube) expire 1 line Android APP에서 로그를 찍을 때 logcat에 수 초안에 많은 양의 로그를 찍으면 즉시 그 앱의 로그가 출력되지 않고 줄어드는 경우가 있습니다. logcat의 과부하를 방지하기 위해서 제약을 둔 것으로 보입니다. Logcat에 App정보를 white list로 등록하면 로그 유실이나 출력방지를 피할 수 있습니다. PID나 UID로 Logcat에 white list를 등록할 수 있습니다. PID나 UID를 확인하는 방법은 아래 포스팅에서 확인할 수 있습니다. 2021.09.07 - [Android] - [Android]..

Android 2021.09.07

Android 버전, SDK 버전, API 수준 정리

Android 버전 및 API 수준을 정리 Pet Name(펫네임) Android 버전 API 수준 빌드 버전 코드 Android 12(비공식 Tiramisu) 13.0 Android 12(비공식 Snow Cone) 12.0 31 S Android 11(비공식 Red Velvet Cake) 11.0 30 R Android 10(비공식 Quince Tart) 10.0 29 Q Pie 9.0 28 P Oreo 8.1 27 O MR1 Oreo 8.0 26 O Nougat 7.1 25 N MR1 Nougat 7.0 24 N Marshmallow 6.0 23 M Lollipop 5.1 22 Lollipop MR1 Lollipop 5.0 21 Lollipop Kitkat Watch 4.4W 20 KiKatWatch..

Android 2020.07.27

Android adb 명령어 정리

ADB(Android Debug Bridge) 안드로이드 폰/태블릿으로 애플리케이션을 개발하다 보면 PC에서 adb명령어를 사용해야하는 경우가 있다. adb 명령어를 사용하면 편리하게 기기를 제어할 수 있다. 아래와 같이 자주 사용되는 adb 명령어를 정리했다. : adb 서버를 시작한다. 켜지지 않았을 경우 사용한다. adb start-server : adb 서버를 중단 시킨다. adb kill-server : adb로 연결가능한 안드로이드 기기 목록을 보여준다. adb devices : 셸(shell)을 실행한다. adb shell : 앱(pacakge명으로 씀)을 강제로 종료한다. adb shell am force-stop package : 앱의 모든 데이터를 삭제한다. adb shell pm cl..

Android 2020.05.19

Android Annotation 정리

Android Annotation Annotation은 Java source code에 추가할 수 있는 구조화된 메타데이터이다. @Nullable : 매개변수에 null이 할당(assign)될 수 있음 @NonNull : 매개변수에 null이 할당(assign)되지 않음 @StringRes : 매개변수가 리소스(Resource) R.string을 참조 @DrawableRes : 매개변수가 리소스(Resource) R.drawable을 참조 @DimenRes : 매개변수가 리소스(Resource) R.dimen을 참조 @ColorRes : 매개변수가 리소스(Resource) R.color을 참조 @InterpolatorRes : 매개변수가 리소스(Resource) R.interpolator을 참조 @Any..

Android 2020.04.23

WifiNetworkSuggestion 구현 예제

WifiNetworkSuggestion은 이름과 같이 Wi-Fi 네트워크를 사용자에게 제안해주는 API이다. Android10(API레벨 29) 이상에서 사용 가능하다. App에서 구현한 Wi-Fi 네트워크 정보들을 추가하여 App을 사용하는 사용자에게 추천해 줄 수 있다. 등록을 위한 WifiManager.addNetworkSuggestions() API는 사용자에게 제안할 Wi-Fi 네트워크를 등록하는 용도이며 API 호출 시 바로 Wi-Fi 네트워크를 제안하는 Notification을 발생시키진 않는다. 추가된 Wi-Fi 네트워크는 Nearby(주변기기를 찾고 통신하기 위한 Platform)를 통해 최초 발견되면 Notification으로 사용자에게 알려 준다. 1. 예제 : 2개의 Wi-Fi Ac..

Android 2020.04.20

WifiNetworkSpecifier 구현 예제

WifiNetworkSpecifier는 Android10(API 레벨 29) 이상 기기에서 새롭게 사용할 수 있는 API이다. 폰에서 구글 크롬캐스트나 구글 홈과 같은 기기의 Wi-Fi Network로 연결하여 통신하는데 사용할 수 있다. 연결할 기기를 찾기 위해서 SSID, SSID pattern, BSSID, BSSID pattern 등을 조합하여 연결할 지 결정할 수 있다. 필요 permission Manifest.permission.ACCESS_NETWORK_STATE 1. 기본 예제 : WPA2 보안설정을 가진 Wi-Fi 네트워크에 연결한다. WifiNetworkSpecifier wifiNetworkSpecifier = new WifiNetworkSpecifier.Builder() .setSsi..

Android 2020.04.19
반응형