Tech

안드로이드 스튜디오 플라밍고 업데이트 후 gradle 에러

아주 가지가지 한다. 정확히는 플라밍고 문제라기보단 AGP 8.0.0의 문제다. Electric Eel을 쓰다가 Flamingo로 업데이트하고 AGP를 8.0.0으로 업데이트한 후 gradle build를 실행했더니 아래와 같은 에러가 발생했다. 문서 내용을 보면 AGP 7.4.0부터 android compileOptions의 targetCompatibility 값을 제대로 세팅을 해주지 않아서 발생하는 문제라고 한다. AGP 8.1.0-alpha09에서 수정되었다는데 이걸 쓰려면 Flamingo보다 상위 버전, 즉 아직 stable release가 되지 않은

안드로이드 스튜디오 플라밍고 업데이트 후 gradle 에러 Read More »

Fragment에서 권한 요청하기 (2021)

Activity Result를 받아오는 API가 변경되면서 Fragment.requestPermissions도 deprecated 되었다. registerForActivityResult를 호출하고 ActivityResultContracts.RequestPermission을 인자로 전달해야한다. 복수의 권한이 필요한 경우는 Contract를 RequestMultiplePermissions로 바꿔서 사용한다. 하지만 사진/동영상 촬영, 연락처 선택 등 일반적인 케이스는 기본적으로 제공하는 Contract를 활용하는 것으로 커버할 수 있다.

Fragment에서 권한 요청하기 (2021) Read More »

트레이드 오프

트레이드 오프라는 개념을 처음 배울 때는 서로 양립할 수 없다는 사실을 너무 명백히 알 수 있는 케이스들로 배웠던 것 같다. 예를 들면 시간복잡도와 공간복잡도, 또는 일정과 품질과 비용. 시간을 줄이려면 공간을 많이 써야하고, 공간을 아끼려면 시간을 더 써야한다. 일정을 줄이려면 품질이나 비용을 양보해야하고, 품질을 높이려면 일정과 비용을 더 들여야하고, 비용을 줄이려면 품질과 일정을 희생해야한다는 것은

트레이드 오프 Read More »

[Kotlin] for-loop with no additional object allocation

In Kotlin, we can use functions such as forEach, forEachIndexed, and map to iterate items in collection. It’s convenient to use, but it comes with cost; those functions create additional objects like Iterator. For most cases, it wouldn’t be a serious problem to have some temporary objects. However, when overriding onDraw method of View class,

[Kotlin] for-loop with no additional object allocation Read More »