일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Coroutine
- 코루틴
- relay
- GitHub
- 쿠링
- 프로그래머스
- livedata
- AWS
- activity
- textfield
- 백준
- Codeforces
- androidStudio
- TEST
- 암호학
- pandas
- ProGuard
- Kotlin
- MyVoca
- android
- boj
- architecture
- MiTweet
- Gradle
- Rxjava
- 코드포스
- Compose
- Python
- Coroutines
- Hilt
- Today
- Total
목록Primary/Android (80)
이동식 저장소
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/zaqln/btrOYG60Jgi/aGwqa85I3kWneOrjk2k4Q0/img.png)
1편에서 이어집니다. 라이브러리 ``material3-window-size-class`` 라이브러리의 ``WindowSizeClass`` 클래스와 ``calculateWindowSizeClass()`` 함수를 사용하자. class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val windowSizeClass = calculateWindowSizeClass(this) MyApp(windowSizeClass) } } } Main composable(여기서는 ``MyApp``)은 ``WindowSizeClas..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/LHN8q/btrOQikC3pk/DNZkzDvwxT1c2z2D4sjJd0/img.png)
아래 영상을 보고 요약한 글입니다. 요약본을 백 번 읽는 것보다 원본 영상을 한 번 보는 게 낫습니다. 이 글은 개인적인 기록용입니다. 반응형 UI란 화면 크기에 따라 서로 다른 UI를 보여주는 것이다. 작은 화면에서와 달리 큰 화면에서는 더 많은 정보를 한 번에 보여줄 수 있다. 일반적인 바 형태의 스마트폰용 UI를 태블릿(특히 가로 모드)에서 그대로 보여주면 어색할 뿐 아니라 사용자의 생산성도 방해할 수 있다. 따라서 화면 크기에 따라 서로 다른 UI를 보여주는 것이 바람직하다. Compose에서 반응형 UI를 구현하는 대략적인 방법론을 공부해 보자. 자세한 구현 방법은 다른 글에서 작성해 보겠다. 화면 크기 반응형 UI를 구현하려면 먼저 반응할 화면의 크기를 정해야 한다. 화면 너비는 600dp, ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bDWlIT/btrOxLUL8kz/2JmfWcMOAiqCJ2zeNfVx51/img.png)
AAB의 구조는 다음과 같다. Base Module은 일반적인 모든 모듈을 포함하고, Dynamic Feature 모듈은 Google Play에 의해 동적으로 제공되는 모듈이다. 실제 앱 코드는 각 모듈의 ``root/``에 저장돼 있다. Google Play가 APK를 만들 때 각 모듈의 ``root/``를 합쳐 새로운 ``root``를 만든다. 이 글에서 일반적인 모듈은 feature module이 아닌 모듈, 그러니까 모든 사용자에게 공통으로 배포되는 모듈을 의미한다. 사실 나는 feature module을 작성해 본 적이 없다. Asset Pack은 게임 등에서 사용되는 리소스를 묶은 것이다. 게임 리소스는 특성상 용량이 매우 클 수 있기 때문에, 앱을 설치할 때 함께 다운로드하지 않고 리소스가 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bz3tWV/btrOwj4F1Cn/kE44DlVZeFv2tmSZHjepg0/img.png)
안드로이드 앱을 설치하는 파일 확장자는 APK이다. 그런데 Android Studio에서 앱을 빌드하려고 보면, Android App Bundle이라는 형식이 기본으로 지정된다. 심지어 AAB 파일은 안드로이드에서 설치할 수도 없다. 이게 뭐지? AAB란... Android App Bundle, 줄여서 AAB는 앱의 코드와 리소스, APK 생성 방법과 서명 정보까지 모두 담고 있는 파일이다. 기기에서 직접 사용할 수는 없지만, Google Play가 AAB를 APK로 변환하는 데 사용된다. APK로 변환한다는 말을 자세히 설명하면, 기기의 폼 팩터와 언어, API 레벨에 맞게 적절한 APK를 만든다는 뜻이다. 안드로이드 버전에 따라 다른 코드를 적용할 수도 있고, 화면 크기에 따라 다른 레이아웃을 사용할..
Disclamer 이 글에서 제시하는 버그의 원인은 잘못되었습니다. 아래 글을 참고해 주세요. 한빛 캘린더 버그 소탕 대작전 한빛 캘린더는 내가 일하고 있는 한빛맹학교의 식단 및 학사일정을 알려주는 달력 앱이다. 그런데 앱을 처음 개발할 때부터 나를 괴롭히던 버그가 하나 있다. 학사일정은 전부 보이는데, 식단이 thinking-face.tistory.com 초보 개발자가 버그를 잡아가는 과정이라고 주시면 감사하겠습니다. ^^ 이미 Proguard와 관련된 디버깅 글을 여러 번 쓴 바 있다. [Android] 코드 경량화 시 Instrumented test가 실행되지 않는 오류 [Android] R8 컴파일러로 앱 경량화하기 왜 경량화해야 하는가? APK 파일에는 실행 가능한 바이트코드가 DEX(Dalvi..