일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 안드로이드 os 구조
- Rxjava Observable
- 2022 플러터 설치
- 객체
- android ar 개발
- ar vr 차이
- ANR이란
- 큐 자바 코드
- rxjava hot observable
- rxjava cold observable
- jvm이란
- 자바 다형성
- android retrofit login
- 2022 플러터 안드로이드 스튜디오
- 클래스
- 안드로이드 라이선스
- 안드로이드 라이선스 종류
- 안드로이드 레트로핏 crud
- 서비스 쓰레드 차이
- 스택 큐 차이
- rxjava disposable
- 멤버변수
- 플러터 설치 2022
- 안드로이드 유닛테스트란
- 안드로이드 유닛 테스트 예시
- 서비스 vs 쓰레드
- jvm 작동 원리
- 안드로이드 레트로핏 사용법
- 안드로이드 유닛 테스트
- 스택 자바 코드
- Today
- Total
목록Android (402)
나만을 위한 블로그

사용자에게 선택할 수 있는 요소들을 제공할 때 가장 자주 사용되는 것들이 제목의 3가지 컴포넌트다. 이것들을 컴포즈에선 어떻게 사용할 수 있는지 확인해 본다. 먼저 data class를 만든다. data class ToggleComponentInfo( val isChecked: Boolean, val text: String ) 액티비티의 전체 코드는 아래와 같다. import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.clickable import androidx.compose.foundation.l..

Compose로 앱을 만들 때 NavigationDrawer를 구현하는 방법에 대해 포스팅한다. 먼저 NavigationDrawer가 열렸을 때 표시할 제목, 아이콘들을 갖고 있을 data class를 만든다. import androidx.compose.ui.graphics.vector.ImageVector data class NavigationItem( val title: String, val selectedIcon: ImageVector, val unselectedIcon: ImageVector, val badgeCount: Int? = null ) 그리고 액티비티를 구성한다. import android.os.Bundle import androidx.activity.ComponentActivity i..

Compose로 앱을 만들 때도 당연히 브로드캐스트 리시버를 사용해야 하는 경우가 발생할 수 있다. 이 포스팅에선 기기에서 비행기 모드를 온오프 했을 때 이를 감지하는 것, 버튼을 누르면 내가 정의한 인텐트를 브로드캐스트 리시버를 통해 받는 예제와 관련 코드 분석을 진행한다. 그러나 브로드캐스트 리시버가 무엇인지 잘 모를 수 있으니 먼저 브로드캐스트 리시버가 무엇인지 확인하고 넘어간다. 브로드캐스트 리시버(Broadcast Receiver)는 어떻게 작동할까? 라디오를 생각해 보자. 라디오는 여러 주파수에서 방송하는 많은 채널들이 있다. 난 주파수를 바꿔가면서 원하는 채널을 들을 수 있다. 이와 유사하게 브로드캐스트 리시버는 안드로이드 시스템에서 발생하는 여러 이벤트를 듣고 반응한다. 배터리 부족, 비행..

Compose에서 이미지를 가져와 리스트 형태로 표시하는 예제를 다룬 영상이 있어 공부한 후 포스팅한다. 링크는 아래 남긴다. https://www.youtube.com/watch?v=uHX5NB6wHao&t=102s 이미지 처리 라이브러리는 Coil을 사용한다. 오늘 날짜인 23.08.13 기준 최신 버전은 아래와 같으니 참고한다. implementation("io.coil-kt:coil-compose:2.4.0") 그리고 에뮬레이터로 안드로이드 12, 13 기기에서 어떻게 보이는지 확인했기 때문에 무료 이미지 몇 장을 준비해서 에뮬레이터에 옮겨둔 다음 진행했다. 에뮬레이터에 사진 파일을 넣는 방법은 아래 순서대로 따라하면 된다. 이 과정은 당연히 하나의 에뮬레이터에만 적용되며 한 에뮬레이터에 옮겼다고..

앱의 targetSdkVersion을 33 이상으로 설정하면 onBackPressed()가 deprecated되는 등 다양한 변경사항이 있는데, 가장 중요한 변경사항은 READ_EXTERNAL_STORAGE 권한의 변경사항이다. https://developer.android.com/about/versions/13/behavior-changes-13?hl=ko 동작 변경사항: Android 13 이상을 타겟팅하는 앱 | Android 개발자 | Android Developers Android 13 이상을 타겟팅하는 앱에 영향을 미치는 Android 13의 변경사항을 알아봅니다. developer.android.com 앱이 안드로이드 13 이상을 타겟팅하고 다른 앱에서 만든 미디어 파일에 접근해야 하는 경우..

이전 포스팅에서 이어지는 글이다. https://onlyfor-me-blog.tistory.com/780 [Android] 안드로이드 OS 변천사 정리(롤리팝~안드로이드 14) - 1 - 안드로이드 초기 버전부터 정리하는 건 사실상 의미가 없기 때문에, 롤리팝부터 곧 출시를 앞둔 안드로이드 14까지의 변천사를 간략하게 정리해 보고자 한다. 왜 롤리팝이냐고 생각할 수 있는데 onlyfor-me-blog.tistory.com 안드로이드 10 - 2019년 공개, API 29(10.0) 안드로이드 10부터는 더 이상 간식 이름을 버전명으로 하지 않고 숫자로 관리한다. 이 버전부터의 특이점은 아래와 같다. 개인정보 보호 관련 변경사항 얼굴 인증 기능 지원 고효율 이미지 파일(HEIF) 형식을 위한 네이티브 카메..

안드로이드 초기 버전부터 정리하는 건 사실상 의미가 없기 때문에, 롤리팝부터 곧 출시를 앞둔 안드로이드 14까지의 변천사를 간략하게 정리해 보고자 한다. 왜 롤리팝이냐고 생각할 수 있는데, 현재 안드로이드 스튜디오 플라밍고 기준으로 보여지는 OS 점유율이 아래와 같기 때문이다. 올해 5월 30일에 마지막으로 업데이트됐다고 하니 어느 정도 참고할 만한 정보는 되는 것 같아서 이걸 기준으로 롤리팝부터 알아보자고 정했다. 롤리팝 (Lollipop) - 2014년 공개, API 21(5.0) 이 버전부터의 특이점은 아래와 같다. 머티리얼 디자인 지원 리사이클러뷰 추가 Chromium M37 버전의 웹뷰 업데이트로 안정성 강화, 버그 수정 화면 캡쳐, 공유 기능 추가 알림 세부정보 수준 제어 추가 및 우선순위 등..
※ 이 포스팅은 Mockito가 아닌 MockK를 사용했을 경우를 바탕으로 작성됐다 뷰모델에 만든 함수들을 대상으로 애써 테스트를 작성한 후, 성공하는지 확인하려고 테스트를 실행하면 가끔 아래와 같은 에러가 발생할 수 있다. Method d in android.util.Log not mocked. android.util.Log 클래스의 d()가 mock되지 않았단 뜻이다. d를 쓰지 않았다면 w, i, e가 될 수도 있는데, 이 에러가 발생하는 이유는 순수 JUnit 프레임워크와 코틀린으로 작성한 테스트가 아니라 Log나 Uri 같이 안드로이드 프레임워크(android로 시작하는 패키지)에 속하는 클래스들을 단위 테스트에서 사용하려면 mock 객체를 만들어 사용해야 한다. 그런데 그런 처리 없이 뷰모델에..
브릿지로 웹뷰와 통신할 때, 웹뷰에서 앱의 카메라 기능을 다루는 함수를 호출하려고 하면 제목의 에러가 발생했다.저 문장을 번역하면 메서드 호출 중에 자바 예외가 발생했다는 뜻이다.이 에러는 자바스크립트가 호출하는 안드로이드의 함수가 메인 쓰레드에서 작동하도록 작성한 경우에 발생할 수 있다. 꼭 모든 evaluateJavascript()가 별도의 쓰레드 또는 코루틴에서 실행돼야 하는 건 아니고, 안드로이드 앱 내의 함수가 실행하는 작업이 UI가 느려질 수 있거나 시간이 좀 걸리는 작업이라면 별도의 쓰레드 or 코루틴에서 호출하면 된다. 간단한 방법으로는 runOnUiThread를 쓸 수 있다. 아래는 예시 코드다. private fun foo() = runOnUiThread { clazz.foo( ..

플레이 콘솔에 apk 또는 aab 파일을 올린 뒤 잘못해서 이전 화면으로 돌아갈 수 있다. 다시 앱 파일을 올리는 화면으로 돌아가면 기존에 올렸던 파일이 보이지 않아서 다시 올리게 되는데, 이 때 포스팅 제목과 같은 빨간 경고 문구가 출력된다. 그럼 이 버전으로는 다시 출시를 못 하는 건가? 지금은 그렇다. 2가지 해결법 중 하나를 따라하면 해당 버전의 apk / aab 파일을 다시 업로드할 수 있다. app gradle에서 versionCode 바꾸기 첫 번째 방법은 안드로이드 스튜디오로 돌아가서 versionCode를 1 올리는 등의 방법으로 변경한 뒤, 다시 apk / aab 파일을 만들어 그걸 올리는 것이다. 그러나 이 방법은 개인적으로 개발한 앱을 스토어에 올릴 때나 가능한 것이고, 그 외의 경..