일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- androidStudio
- 코드포스
- pandas
- Kotlin
- Coroutines
- android
- Coroutine
- 코루틴
- relay
- textfield
- Codeforces
- Gradle
- activity
- MyVoca
- MiTweet
- Hilt
- architecture
- Rxjava
- TEST
- AWS
- 백준
- 쿠링
- 암호학
- GitHub
- livedata
- 프로그래머스
- Python
- ProGuard
- boj
- Compose
- Today
- Total
목록Primary/Android (80)
이동식 저장소
주의: 이 블로그에서 말하는 바인딩은 ``@Binds``와 ``@Provides`` 모두를 의미합니다. Entry Point란 변수를 주입받을 수 있는 클래스를 말한다. Hilt의 모태인 dagger에도 존재하는 유서깊은 개념이다. ``Application``에서 의존성 주입 기능을 활성화했다면 다른 안드로이드 클래스에서 변수를 주입받을 수 있다. 그런데 모든 클래스에서 주입받을 수 있는 건 아니고, 다음 클래스에서만 멤버를 주입받을 수 있다. Activity (``ComponentActivity``) Fragment (androidx ``Fragment``) View Service BroadcastReceiver ViewModel 사실 ``ViewModel``은 다른 5개의 클래스와는 약간 다른 방식이..
Hilt를 사용하려면 ``Application`` 클래스에 ``@HiltAndroidApp`` 어노테이션을 붙여야 한다. ``@HiltAndroidApp``은 Hilt component 코드를 만드는 시발점이다. @HiltAndroidApp class MyVocaApplication: Application() { @Inject lateinit var foo: Foo } 사실 ``Application``도 Hilt의 entry point이다. 따라서 ``Application``에서도 변수를 주입받을 수 있으며, 해당 변수는 ``super.onCreate()`` 안에서 주입된다. 물론 해당 변수를 제공할 바인딩이 ``SingletonComponent``에 존재해야 한다. 잠깐 복습! 바인딩의 위치를 결정하는..
모듈을 java module에서 android module로 바꿨더니 듣도 보도 못한 오류가 난다. 원인을 찾아보니 ``gradle.properties``에서 ``-Dfile.encoding=UTF-8``을 지우라고 한다. 윈도우 계정 이름에 한글이 들어가 있어서라고 한다. 이놈의 한글!! 해결. Test events are not received 오류를 거의 매주 보는 것 같다.
잘 모르지만 그냥 사용했던 파일 1위! ``AndroidManifest.xml`` ...어쨌든 잘 모르고 쓴 건 맞지 않는가? Activity나 service 정의할 때 많이 보긴 했지만, 정작 manifest 파일이 뭔지는 제대로 공부하지 않았다. 그래서 manifest가 뭔데요? Android가 앱을 실행하기 위해서는 우선 그 앱에 어떤 컴포넌트가 있는지 알아야 한다. ``AndroidManifest.xml`` 파일에는 앱의 모든 컴포넌트가 정의되며, 이것이 가장 중요한 역할이다. 그 밖에도 다음의 역할을 수행한다. 앱에서 요구할 사용자 권한을 정의한다. ex) ``android.permissions.INTERNET`` 앱이 실행될 수 있는 최소 API 레벨을 정의한다. 앱에서 사용하는 하드웨어/소프..
Product flavor 결합하기 Flavor를 여러 그룹으로 나눌 수 있다. 예를 들어 1) API 레벨에 따라 2) 체험판 여부에 따라 포함되는 코드를 다르게 하고 싶다면, flavor dimension을 여러 개 만들고 각 dimension에서 flavor를 하나씩 고르면 된다. 고등학교 확통 시간에 배웠던 윗도리 3개와 바지 4개를 입는 경우의 수와 비슷하다. 위의 예시를 gradle로 구현해 보자. android { ... buildTypes { debug {...} release {...} } // flavor 그룹. 모든 flavor는 적어도 하나의 flavor dimension에 속해야 한다. // flavor를 고를 때 여기에 나열된 순서대로 고른다. flavorDimensions "a..