Android

    [Android] WebView와 React Web간 데이터 전달

    인턴 당시 Android 애플리케이션 내에서 WebView를 통해 React 기반 웹 페이지와 데이터를 주고받는 과정이 필요하여 공부하게 되었다. 이 글에서는 WebView에서 JavaScript 인터페이스를 등록하고 React 쪽에서 수신해 뷰어를 보여주는 방법을 살펴보고자 한다. WebView 설정 (이미지,PDF 파일 공통)WebView 초기화 함수 private fun initWebView() { with(binding.webView) { settings.javaScriptEnabled = true settings.allowFileAccess = true webViewClient = WebViewClient() ..

    [Android] implemantation을 Version Catalog로 바꿔보자

    들어가기 전우리의용기 프로젝트를 -v2 로 마이그레이션 하는 과정에서 기존 의존성 버전 관리 방법에서 버전 카탈로그 방식으로 변경하였다. 이러한 변경의 과정과, 왜 이 변경이 필요했고 어떤 장점이 존재하는지 이번 포스팅에서 알아보고자 한다.Gradle 버전 카탈로그를 활용한 의존성 관리: 왜 필요할까?기존 방식의 문제점build.gradle에서 의존성을 관리할 때, 보통 아래와 같은 방식으로 버전을 명시한다.implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2")이 방식은 간단하고 익숙하지만, 프로젝트가 커지면서 다음과 같은 문제가 발생할 수 있다.버전 중복: 여러 모듈에서 동일한 의존성을 사용하는 경우, 각 모듈마다 버전을 반복적으로 ..

    [Android] Github Actions로 업무 생산성 향상 시키기 feat. APK 자동 추출

    목표GithubActions CI/CD 파이프라인을 구축해 서버에 APK 업로드를 자동화 하자.개발 프로세스의 효율성과 생산성을 극대화하기 위함.문제의식기존 방법의 문제점가상화 서버에 안드로이드 어플을 업로드하기 위해서 포털을 이용하여 직접 APK 파일을 업로드 하였다.하지만 새로운 업데이트가 있을 때 마다 변경된 사항을 Android Studio Build로 APK를 추출하고, 포털에 들어가서 업로드를 진행해야하는 번거로움이 있었다.Github로 관리하는 코드어플 프로젝트 코드 및 파일은 Github로 관리하고 있었다.따라서 이 점을 활용해 GithubActions를 이용하여 APK를 자동으로 추출하고, 추출 뿐만 아니라 서버 업로드까지 자동화하면 어떨까? 라는 생각이 들었다.GithubActions로..

    [Android/공부] NDK(네이티브 개발 키트) 사용과 ABI 빌드 환경 톺아보기

    들어가기 전가상화 솔루션은 x86 환경에 안드로이드 앱을 올린다. 이 때 안드로이드 앱에서 사용한 네이티브로 작성된 라이브러리(.so)가 x86 환경에서는 실행되지 않는 경우가 있었다.왜 이런 상황이 발생하는지, 어떻게 NDK를 사용 및 빌드해야 해결할 수 있는지를 알아보고자 이 포스팅을 작성하게 되었다.NDK란?네이티브 개발 키트(NDK)는 Android에서 C및 C++코드를 사용할 수 있게 해주는 일련의 도구 모음이다.NDK의 호환 가능한 아키텍처ARMarmeabi-v7a : 32비트 ARM 아키텍처arm64-v8a : 64비트 ARM 아키텍처x86x86 : 32비트 Intel 아키텍처x86_64 : 64비트 Intel 아키텍처NDK는 다양한 아키텍처에 대한 지원을 제공하며, 각 아키텍처는 ABI를 ..

    [Compose] Compose에서 MVVM 패턴을 적용해보자

    보호되어 있는 글입니다.

    [Android/공부] Compose로 UI 적용기 -1

    보호되어 있는 글입니다.

    [Android/트러블슈팅] NetworkOnMainThreadException 발생으로 살펴보는 Thread

    들어가기 전MockWebServer로 API 테스트를 하면서 NewtworkOnMainThreadException이 발생하였다.이번 포스팅에서 Android Thread에 대해 살펴보면서, NetworkOnMainThreadException가 무엇인지, 왜 발생한 것인지 등 새롭게 알게된 내용들을 정리하도록 하겠다.NetworkOnMainThreadException 이란?android.os.NetworkOnMainThreadException해당 Exception은 Network 작업을 Main Thread에서 실행했을 때 발생하는 Exception이다.그렇다면 안드로이드에서는 왜 Network 작업을 Main Thread에서 해서는 안될까?질문에 답을 하기 위해서 Thread의 개념부터 Android의 ..

    [Android/트러블슈팅] Kotlin 1.9.0 & Hilt Version Error

    들어가기 전kotlin 1.9.0 을 사용하는 프로젝트에서 Hilt를 적용하려고 하니error: [Hilt] Unsupported metadata version. Check that your Kotlin version is >= 1.0: java.lang.IllegalStateException: Unsupported metadata version. Check that your Kotlin version is >= 1.0 at dagger.internal.codegen.kotlin.KotlinMetadata.metadataOf(KotlinMetadata.java:206) at dagger.internal.codegen.kotlin.KotlinMetadata.from(KotlinMetadata.java:18..

    [Android] MockWebServer란? : okhttp mockwebserver

    보호되어 있는 글입니다.

    [Android] MockWebServer로 Mock API 활용하기

    본 글은 MockWebServer 사용 방법에 초점을 두어 작성되었습니다.들어가기 전UI 렌더링 최적화 테스트를 위해 리스트를 만들어 테스트를 진행해야 했다.더미 리스트를 만들어서 넣는 것보다 실제 네트워크를 통해 데이터를 받아와 테스트하고 싶었다.개발된 API가 따로 없어 공공 API를 활용해야 했지만, 실제 Unit Test에서 많이 사용되는 MockWebServer를 활용해 보고 싶어 선택하게 되었다.프로젝트 설명MockWebServer를 활용해 공지사항 json response를 받아온다.받아온 response를 diffUtil RecyclerView를 통해 리스트 뷰로 보여주도록 한다.프로젝트 구성테스트용 프로젝트이지만 관심사 분리를 위해 폴더링은 아래와 같이 진행하였다.Activity > Vi..

    [Android] XML 과 Compose 렌더링 방식의 차이

    보호되어 있는 글입니다.