일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바 다형성
- 클래스
- 안드로이드 유닛 테스트 예시
- 안드로이드 레트로핏 사용법
- 객체
- 스택 큐 차이
- rxjava cold observable
- 안드로이드 유닛테스트란
- 서비스 쓰레드 차이
- 멤버변수
- 2022 플러터 안드로이드 스튜디오
- 플러터 설치 2022
- rxjava hot observable
- 안드로이드 os 구조
- 스택 자바 코드
- jvm이란
- 안드로이드 유닛 테스트
- ANR이란
- 안드로이드 라이선스 종류
- 2022 플러터 설치
- rxjava disposable
- android retrofit login
- 큐 자바 코드
- 서비스 vs 쓰레드
- Rxjava Observable
- 안드로이드 라이선스
- android ar 개발
- jvm 작동 원리
- 안드로이드 레트로핏 crud
- ar vr 차이
- Today
- Total
목록Android (378)
나만을 위한 블로그
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/k8RY7/btsHeYr32kx/HnJxuIBJIKALghhipkvTI1/img.png)
https://developer.android.com/topic/architecture/ui-layer?hl=ko UI 레이어 | Android 개발자 | Android Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. UI 레이어 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. UI의 역할은 화면에 애플리케이션 데이터를developer.android.com UI(User Interface)의 역할은 앱 데이터를 표시하고 사용자 상호작용(버튼 클릭 등)의 기본 지점으로도 기능하는 것이다.사용자 상호작용 또는 외부 입력(네트워크 응답 등)으로 데이터가 바뀔 때마다 이를 반영하도록 UI가 업데이트돼야 한다. 그러나 데이터 레이..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/msE6s/btsHbqw0iK1/vCq27ksGsPk1WKvc3Qx7Qk/img.png)
안드로이드 디벨로퍼에선 앱 아키텍처 가이드 문서들을 통해 안드로이드 개발자들에게 권장하는 아키텍처를 설명하고 있다. https://developer.android.com/topic/architecture?hl=ko 앱 아키텍처 가이드 | Android 개발자 | Android Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. 앱 아키텍처 가이드 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 가이드에는 고품질의 강력한developer.android.comhttps://developer.android.com/topic/architecture/recommendations?hl=ko Android 아키텍처 권장사항 | An..
※ 이 포스팅은 맥북 기준으로 작성됐다 웹뷰 기반의 하이브리드 앱이라면 유저들은 반드시 플레이 스토어에서 앱을 다운받지 않아도 앱의 대부분의 기능을 쓸 수 있다. 삼성 인터넷이나 크롬 등 브라우저 앱에서 서비스의 도메인으로 이동해 모바일 웹 형태로 서비스를 이용할 수 있기 때문이다. 하지만 특정 브라우저 앱에서 문제가 생긴다면 그 브라우저 앱에서 웹뷰를 실행하고 디버깅해야 하는데, 아무 설정도 안 한 크롬 인스펙터로는 브라우저 앱에서 디버깅할 수 없다. 이 포스팅에선 크롬 인스펙터에서 브라우저 앱에 표시되는 웹뷰를 디버깅하는 방법을 간략하게 확인한다. 먼저 터미널에서 아래 명령어를 실행한다. brew install --cask android-platform-tools 이 명령어를 입력해서 설치해야 브라우..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/pcabY/btsGqrwcf8K/67UiCiE4kiECHXVpafPdH0/img.png)
Compose에서 말하는 상태는 아래와 같다. https://developer.android.com/develop/ui/compose/state?hl=ko 상태 및 Jetpack Compose | Android Developers 이 페이지는 Cloud Translation API를 통해 번역되었습니다. 상태 및 Jetpack Compose 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 앱의 상태는 시간이 지남에 따라 developer.android.com 앱의 상태는 시간이 지남에 따라 변할 수 있는 값이다. Room DB부터 클래스 변수까지 모든 항목이 포함된다. 모든 안드로이드 앱에선 유저에게 상태가 표시된다. 아래는 상태의 몇 가지 예다. - 네트워크 연결을 설정할..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cr4kdg/btsF9KoABKc/KKxB5AXP1Ws9aBKaRKfAR1/img.png)
이전 포스팅에서 프래그먼트를 어떻게 구현하는지 간단하게 확인했으니 이제 생명주기를 확인할 차례다. 자체적인 생명주기를 갖기 때문에, 액티비티와 다른 점이 뭔지 생각하면서 보면 좋을 것이다. https://developer.android.com/guide/fragments/lifecycle?hl=ko 프래그먼트 수명 주기 | Android 개발자 | Android Developers 이 페이지는 Cloud Translation API를 통해 번역되었습니다. 프래그먼트 수명 주기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 각 Fragment 인스턴스에는 고유한 developer.android.com 각 프래그먼트 인스턴스에는 고유한 생명주기가 있다. 유저가 앱을 탐색하거나..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/H1rBA/btsF5vfbYBD/BgWYzEl5zWTRy3r76crsrK/img.png)
앱을 만들다 보면 언젠간 액티비티로는 부족하거나 액티비티까지 쓰긴 애매한데 싶은 화면을 구현해야 할 수 있다. 이 때 쓸 수 있는 게 프래그먼트다. 사실 프래그먼트는 DrawerLayout, 뷰페이저, 바텀 시트 등을 구현할 때 요긴하게 사용할 수 있고, 프래그먼트를 써서 구현한 예제들도 검색해보면 심심찮게 볼 수 있다. 뷰페이저의 경우 아예 프래그먼트를 써서 구현한 예시 코드를 제시하는 디벨로퍼 문서도 볼 수 있다. https://developer.android.com/develop/ui/views/animations/screen-slide?hl=ko ViewPager로 프래그먼트 간 슬라이드 | Views | Android Developers 이 페이지는 Cloud Translation API를 통해..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/5Pqui/btsFGJKj5G9/rvGbzRXND9Elqk7ppa0Njk/img.png)
안드로이드의 테스트는 크게 비즈니스 로직을 검증하는 단위 테스트, 안드로이드 API를 같이 사용해 UI와의 상호작용도 같이 검증하는 계측(Instrumented) 테스트의 2가지로 나뉘어진다. 이 글을 찾아온 사람이라면 이미 아는 내용이라 생각되지만, 안드로이드 기준으로 두 테스트의 차이를 간략하게 적으면 아래와 같다. 단위 테스트 : 순수 자바 / 코틀린으로 구성된 함수, 클래스 등을 테스트함. JUnit, Kotest, hamcrest 등을 써서 구성할 수 있음 계측 테스트 : 에뮬레이터, 실기기에서 작동하는 테스트. 네이티브 UI 테스트는 espresso, 웹뷰의 UI 테스트는 espresso-web을 써서 테스트 작성. 필요 시 JUnit의 일부 기능을 같이 쓸 수 있음 안드로이드의 비즈니스 로직..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/daIoRu/btsFlSijqaU/55RUAd6DUNDsHN632jXcZ1/img.gif)
※ 이 글의 코드들은 모두 예시기 때문에 실제로 사용하려면 반드시 리팩토링 후 사용한다 안드로이드 14에서 미디어 접근 권한이 또 변경됐다. 작작 바뀌어라 진짜 어쩔 수 없다. 안드로이드 14에 맞춰 대응하려면 다시 공식문서 뒤적거리면서 뭔 소린지 애써 이해하고, 예시 코드 직접 써 보면서 고통받는 길밖에는 없다. 안드로이드 14의 변경점 중 특기할 만한 것으로는 제목에도 썼듯이 사진, 영상 파일에 대한 일부 접근 권한 부여다. https://developer.android.com/about/versions/14/changes/partial-photo-video-access?hl=ko 사진 및 동영상에 대한 일부 액세스 권한 부여 | Android Developers The Android 15 Devel..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/sGMWl/btsFg1rAkbs/GKnxnDRVpa0W6OQLpfkhP0/img.png)
Compose로 앱을 만들다가 하단 탭이 필요한 시점이 와서 구현하고, 어떻게 구현했는지 그 방법을 정리해 둔다. 먼저 sealed class로 앱에서 표시할 화면을 정의해 둔다. 꼭 sealed class가 아니라도 상관없다. sealed class AppScreen( val route: String, @StringRes val resourceId: Int, ) { object Home: AppScreen("home", R.string.home) object Favorite: AppScreen("favorite", R.string.favorite) object MyPage: AppScreen("mypage", R.string.my_page) } 이 클래스는 본인이 어떤 화면들을 만들 건지에 따라 구현이..
Compose로 앱을 만들던 중 CircularProgressIndicator를 써서 로딩 뷰를 구현하고 실행했더니 아래 에러가 발생했다. android java.lang.NoSuchMethodError: No virtual method at(Ljava/lang/Object;I)Landroidx/compose/animation/core/KeyframesSpec$KeyframeEntity; in class Landroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig; or its super classes (declaration of 'androidx.compose.animation.core.KeyframesSpec$KeyframesSpecConfi..