Android Compose automation for getting localized images to use on Play Store app image

이미지
사용 언어: Kotlin 2.0.20 사용 버전: Android Studio Ladybug | 2024.2.1 Patch 3 Android Compose automation for getting localized images to use on Play Store app image를 알아보겠습니다. 저는 앱을 전 세계에 출시하고, 여러 언어로 제공해 주고 있습니다. 무려 67개 언어인데요. 사실 맞게 번역한 건지는 모르겠습니다. 이렇다 보니, 스토어의 앱 이미지를 변경할 때, 같은 이미지라도 언어를 달리하여 여러 장 찍어야 하는 노력이 필요하며, 여기에 들어가는 시간이 상당합니다. 2~3일 넘게 걸리는 것 같네요. 그래서 지금 앱 이미지가 옛날 이미지인 상태로 두었습니다. 스토어 이미지 현재 앱 이미지 엄청나게 다른데요. 오늘은 이것을 자동화해보겠습니다. Android에는 Screenshot test라는 것이 존재합니다. Screenshot을 비교해서 앱이 어떻게 달라졌나 확인하는 테스트인데요. 이것을 이용해서 Screenshot을 마구 찍어볼 겁니다. 오늘 사용할 기술입니다. Compose Screenshot Testing. https://developer.android.com/studio/preview/compose-screenshot-testing 자세한 사용법은 다루지 않겠습니다. libs.versions.toml에 다음과 같이 버전을 넣어줍니다. Plugin도 같이 넣어줍니다. screenshotVersion = "0.0.1-alpha07" android-screenshot = { id = "com.android.compose.screenshot", version.ref = "screenshotVersion" } gradle.properties에 다음을 적어줍니다. android.experimental.enableScreenshotTest=true 모듈용 build.gradle.kts에도 androi...

Android Compose Using a view in compose

이미지
사용 버전: Android Studio Koala 2024.1.1 사용 언어: Kotlin 2.0.10 안드로이드 컴포즈 Using a view in compose를 알아보겠습니다. Compose(컴포즈)에서 지원하지 않는 것은 View(뷰)를 사용해야 합니다. 이러한 예로는 AdMob(애드몹)이 있습니다. AdMob의 경우 XML로 되어 있어, Compose에서 바로 사용하지 못합니다. 이럴 때 사용하는 것이 AndroidView입니다. 저는 ViewBinding을 사용하기 때문에 다음 라이브러리를 사용합니다. androidx.compose.ui:ui-viewbinding 설명을 위해 version catalog는 사용하지 않습니다. 버전이 없는 이유는 Compose BOM을 사용하고 있기 때문입니다. Sync Now를 눌러줍니다. 사용법은 다음과 같습니다. Compose 안에 AndroidViewBinding()을 적어주고, Binding을 사용할 layout(레이아웃)과 inflate를 적어줍니다. 여기서는 AdUnifiedSmallRecyclerBinding::inflate가 사용되었습니다. 그러면, 자동으로 괄호 안에 Binding 된 값들이 들어갑니다. 이런 식으로 Binding으로 할 것들을 정해줍니다. Modifier도 적용할 수 있습니다. 실행해 봅시다. 이런 xml이 이렇게 표현됩니다. 끝. 카테고리; Android

Android Proguard R8 retrace an obfuscate debug

이미지
사용 버전: Android Studio Koala Feature Drop 2024.1.2 사용 언어: Kotlin 2.0.20 안드로이드 Proguard R8 retrace an obfuscate debug를 알아보겠습니다. Proguard(프로 가드)는 obfuscate(난독화)를 시켜주는 툴입니다. 그런데, 문제가 있습니다. 개발자 또한 디버그가 어렵다는 것이죠. 또잉? class(클래스) 'c'가 없다네요? 저는 'c'라는 class를 만든 적 없는데 말이죠? 이것이 바로 난독화입니다. 만약 프로그램을 분석하는 사람이 있다면 우리의 앱을 함부로 분석할 수 있겠죠? 이것을 어렵게 해주는 것입니다. 그럼, debug(디버그)는 어떻게 해야 할까요? Setting에 가셔서 Android SDK - SDK Tools - Android SDK Command-line Tools를 설치합니다. 그러면 본인의 SDK 위치에 설치됩니다. 제 경로는 아래와 같습니다. 위에 오류 난 logcat(로그캣)을 복사하여 저장합니다. Mapping.txt 파일도 찾아줍니다. 이 경로들을 잘 적어줍니다. 결과는 짜잔. 난독화가 해결되었는데, 일부분은 여전히 난독화가 되었네요. 이게 오픈소스 프로젝트라서 키 같은 것이 숨겨져있습니다. 그래서 리소스를 전부 가져다 쓰지 못해서 그런가 봅니다. 끝. 카테고리: Android

Android Migrate view to compose on instrumented test

이미지
사용 버전: Android Studio Koala 2024.1.1 사용 언어: Kotlin 2.0.10 안드로이드 Migrate view to compose instrumented test를 알아보겠습니다. 먼저 View를 Compose로 변경하는 것을 알아보았고, https://shwoghk14.blogspot.com/2024/08/android-migrate-xml-view-to-compose.html XML themes를 compose를 변경하는 것도 알아보았습니다. https://shwoghk14.blogspot.com/2024/08/android-migrate-xml-themes-to-compose.html 이제 대망의 Instrumented(계측) test를 view에서 compose로 변경하는 것을 알아보겠습니다. View(뷰)의 경우 ActivityScenarioRule을 사용하게 됩니다. 이것을 우리는 AndroidComposeTestRule로 변경해야 합니다. Test가 있는 Module(모듈)의 build.gradle.kts로 갑니다. 설명을 위해 version catalog는 일단 제외했습니다. androidTestImplementation(platform("androidx.compose:compose-bom:2024.08.00")) androidTestImplementation("androidx.compose.ui:ui-test-junit4") Sync Now를 누릅니다. TranslateFragmentTest.kt ActivityScenario를 createAndroidComposeRule로 변경해 줍니다. Test에는 일반 Compose에서 Test를 하듯이 composeTestRule을 사용해 주면 됩니다. 끝. 카테고리: Android

Android Migrate XML themes to compose

이미지
사용 버전: Android Studio Koala 2024.1.1 사용 언어: Kotlin 2.0.10 안드로이드 Migrate XML themes to compose를 알아보겠습니다. 이전 이야기에서는 View(뷰)를 Compose로 변경하는 것을 다뤘습니다. https://shwoghk14.blogspot.com/2024/08/android-migrate-xml-view-to-compose.html 이번에는 XML(엑스엠엘)에 사용하는 Themes(테마)를 Compose(컴포즈)로 이전하는 것을 알아보겠습니다. 우선, Material theme builder가 필요합니다. https://material-foundation.github.io/material-theme-builder/ 그러면 위의 사이트에서 색깔을 정해봅시다. Primary, Secondary, Tertiary 등을 설정해 줍니다. 우리는 XML을 옮기는 것이기 때문에 XML에 있는 것을 적어줍니다. colors를 참고해서 위에 대입해 줍니다. 상단의 + 버튼을 누릅니다. Export - Theme Jetpack compose를 눌러줍니다. 다운로드됩니다. 압축을 해제하고 theme 파일을 적당한 곳에 옮겨줍니다. Theme.kt에 있는 AppTheme을 원하는 이름으로 변경해 줍니다. 저는 AboutSubnetMaskTheme으로 변경했습니다. 그리고 3개의 파일에 package를 본인의 package로 변경해 줍니다. 그 뒤, 사용하는 Compose를 위에서 넣은 AboutSubnetMaskTheme으로 감싸줍니다. 실행해 볼까요? 짜잔. 버튼 색깔이 잘 들어갔네요. 다음 이야기에서는 Instrumented(계측) test를 view에서 compose로 변경하는 방법을 알아보겠습니다. https://shwoghk14.blogspot.com/2024/08/android-migrate-view-to-compose-on.html 끝. 카테고리: Android

Android Migrate an xml view to compose

이미지
사용 버전: Android Studio Koala 2024.1.1 사용 언어: Kotlin 2.0.10 안드로이드 Migrate an xml view to compose를 알아보겠습니다. 오늘은 XML(엑스엠엘) View(뷰)로 만들어진 앱을 Compose(컴포즈)로 변경해 보는 작업을 해봅시다. 아쉽지만 Compose에 대한 설명은 없습니다. 이미 알고 계신다고 생각하고 진행할 거예요. 아래는 현재 XML로 작성된 제 앱입니다. 이걸 Compose로 변경할 것입니다. 재미있어 보이지 않나요? Compose로 변경할 때에는 보통 Fragment 단위로 변경하는 것을 추천합니다. 다시 말하자면, 화면 단위로 변경하는 것이죠. buildFeatures에 compose = true를 적어줍니다. dependencies에는 다음의 내용을 추가해 줍니다. 설명을 위해 version catalog는 적용하지 않았습니다. implementation(platform("androidx.compose:compose-bom:2024.08.00")) implementation("androidx.compose.material3:material3") implementation("androidx.compose.ui:ui-tooling-preview") debugImplementation("androidx.compose.ui:ui-tooling") Sync Now를 눌러줍니다. plugin에 compose compiler를 추가해 줍니다. Project 용 build.gradle id("org.jetbrains.kotlin.plugin.compose") version("2.0.10") apply false Sync Now를 눌러줍니다. compose를 적용할 모듈 용 build.gradle id("org.jetbrains.kotlin.plugin.compose") ...