안드로이드

    [Android UI Test] 안드로이드 UI 테스트 시작하기

    안드로이드 UI 테스트 준비하기 안드로이드 UI 테스트를 위해 다음과 같은 모양의 EmojiTextComposable을 준비하자. @Composable fun EmojiText( modifier: Modifier = Modifier, emoji: String, content: String, contentDescription: String? = null, ) { Card( modifier = modifier.semantics { this.contentDescription = contentDescription ?: "" }, colors = CardDefaults.cardColors(containerColor = Color.LightGray.copy(alpha = 0.2f)), elevation = Card..

    [오류 해결 로그] 안드로이드 테스트 시 java.lang.RuntimeException: Method xxx in android.xxx not mocked 문제 해결법

    안드로이드 메서드를 사용할 때 생기는 문제점과 원인 안드로이드 전용 클래스의 정적 메서드를 클래스 내부에서 사용한다면 테스트 시 문제가 생긴다. 예를 들어 다음과 같은 테스트 코드를 보자. import android.text.TextUtils import org.junit.Assert.assertTrue import org.junit.Test class ExampleUnitTest { @Test fun testTextIsEmpty() { val isEmpty = TextUtils.isEmpty("") assertTrue(isEmpty) } } 이 테스트는 매우 간단한 테스트로, TextUtils.isEmpty를 호출해 매개 변수로 입력된 문자열이 빈칸인지 확인하기 위한 테스트이다. 하지만 이 테스트를 실..

    [Compose Canvas] Jetpack Compose에서 Canvas 사용하는 방법 한 번에 정리하기

    Android에서 Canvas가 필요한 이유 Canvas는 Android에서 Custom UI를 간편하게 그리기 위한 다양한 API를 제공해준다. Canvas에서 제공해주는 API를 사용하면 도형, 텍스트를 그릴 수 있고, 애니메이션 또한 만들 수 있다. 또한 Canvas는 그려야 할 도형들이 많을 때, Composable 여러개를 사용해 그리는 것에 비해 자원을 효율적으로 사용한다. 이 때문에 만약 화면이 여러 도형으로 구성되어있고, 도형의 상태(크기, 색상 등)을 계속해서 변경시켜야 하는 작업에서는 Canvas를 사용하는 것이 훨씬 리소스를 적게 사용한다. 이번 글에서는 Jetpack Compose에서 Canvas를 사용하는 간단한 방법에 대해 살펴볼 것이다. Jetpack Compose에서 Canv..

    Maven Central에 안드로이드 라이브러리 배포하는 방법 한 번에 정리하기

    Maven Central에 안드로이드 라이브러리 배포하기 이번에 첫 라이브러리 Compose Dynamic Theme을 배포하면서, Maven Central에 라이브러리를 배포하기 위한 한국어 자료가 거의 없다는 것을 알게 되었다. 이에 따라 Step by Step으로 배포하는 방법에 대해 정리하면 한국에서 오픈소스 기여 문화가 더욱 활성화될 수 있을 것 같아서 정리하게 되었다. GitHub - seyoungcho2/ComposeDynamicTheme: Provides Dynamic Theme for Jetpack Compose Provides Dynamic Theme for Jetpack Compose. Contribute to seyoungcho2/ComposeDynamicTheme developme..

    [GitHub Actions] Job 간에 파일 공유하기

    서로 다른 가상 머신에서 동작하는 Job build Job을 통해 ubuntu-latest 머신에 저장된 파일들은 다른 Job에서 접근이 불가능하다. 같은 이름의 머신이더라도 실제는 다른 가상 머신에서 돌아가기 때문이다. 따라서 build Job 다음에 실행되는 deploy Job을 추가한 다음 위에서 Apk를 Job Artifact로 만드는데 사용한 Path를 제공한다면 접근할 수 없다. 한 번 시도해 보자. 먼저 빌드를 하는 Job을 만든다. build: runs-on: ubuntu-latest steps: - name: Check out Repository uses: actions/checkout@v3 - name: set up JDK 11 uses: actions/setup-java@v3 with..