Android 96

Compose + AGSL 셰이더를 이용해서 간지나는 카드 애니메이션 만들기

어디선가 카드를 휘리릭 돌리면 카드가 돌아가면서 번쩍거리는 멋진 인터렉션을 본 적이 있는거 같다.셰이더나 애니메이션에 관심이 많아진 요즘 뭐라도 해보고 싶어서 뚝딱 해봤다. 일단 최종결과물부터 봐보자.꽤 멋져.  자자 액티비티부터 만들어준다.class MainActivity : ComponentActivity() {    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        enableEdgeToEdge()        setContent {            MetalCardFilpTheme {                Scaffold(modifier = Modifier...

안드로이드의 암호화

안드로이드 개발을 하다보면 암호화에 대한 이야기가 종종 나온다. 민감한 정보를 사용하지 않는 앱이라면 굳이 할 필요가 없을 수 있지만 개인정보나 중요한 key 를 다뤄야할 일이 생기는데이것들이 악의를 가진 사람들에 의해 외부로 노출되면 심각한 문제가 될 수 있다. 하지만 개발자들은 바보가 아니지.시도할 수 있는 방법들이 이미 여럿 만들어져 있는데 대표적인 것들을 알아보고 필요할때 적용해보도록 하자. 암호화의 기본적인 개념암호화에 대해서 설명하기전 아래 개념을 알면 좀 더 이해가 편하다. 평문(Plaintext) : 해독 가능한 형태의 메시지(암호화전 메시지)암호문(Cipertext) : 해독 불가능한 형태의 메시지(암호화된 메시지)암호화(Encryption) : 평문을 암호문으로 변환하는 과정복호화(De..

Android 2024.10.12

안드로이드 compose 비트맵으로 캡쳐하기

를 만들려고 하루종일 삽질을 했다...결국 만드는건 포기했는데관련해서 괜찮은 라이브러리를 찾아서 소개한다.https://github.com/PatilShreyas/Capturable GitHub - PatilShreyas/Capturable: 🚀Jetpack Compose utility library for capturing Composable content and transforming it into🚀Jetpack Compose utility library for capturing Composable content and transforming it into Bitmap Image🖼️ - PatilShreyas/Capturablegithub.com어떻게 만들었다 들여다봐야지 ㅠㅠ..

사실 내 로망중엔 OpenGL 도 있었어

카메라 관련 기술에 꾸준히 흥미가 있었는데필터쪽으로 찾아보게 되면 항상 나오는 단어중 openGl 이라는게 있다.openCV는 예전에 졸업 작품 만들때 써봤던 기억은 있는데 openGL 은 대충 그래픽 처리를 하는뭐시기구나 하고만 있었다. 행렬도 나오고 좌표 , 카메라 이것저것 관련 지식들이 많이 필요하다보니딥하게 알아보려고 하지 않았던거 같다. 마침 카메라 기능을 가진 클린아키텍쳐 샘플앱도 만들고 있겠다. 이번에 그냥 openGL 도여기다가 써볼까한다. 직접 만들면서 개념도 정리해보자. OpenGL의 기본 개념OpenGL은 정점(Vertex)과 프래그먼트(Fragment)라는 기본 단위로 그래픽 데이터를 처리한다.정점(Vertex): 화면에 그려질 점의 위치 데이터를 의미한다. OpenGL은 2D 또는..

Android 2024.08.31

라이브러리를 배포해보자.

스스로 만든 라이브러리를 배포해보는건 안드로이드 개발자를 시작할때부터 버킷리스트 중하나였다. 이번에 샘플프로젝트를 업데이트 하면서 이미지 crop 하는 커스텀 뷰를 개발했는데아직 완성도가 높진 않지만 라이브러리로 따로 빼서 관리해보고 싶다는 생각을 했다. 그래서 시간도 많겠다 뚝딱 해봤다. 아 참 jitPack 을 이용해서 배포한다! 1. 라이브러리를 만들기 위해 모듈을 생성해보자프로젝트를 새로판다.그럼 기본적으로 app 모듈이 있을텐데 이건 일단 냅두고모듈을 하나 새로 만들어보자. new Module 을 누르고 Android Library 로 만든다. 이렇게 해서 생긴 모듈이 실제 사용되는 라이브러리가 될 예정이다. 2. 라이브러리가 될 모듈에 라이브러리화 시키고 싶은 기능들을 넣는다.나의 경우는 샘플..

Android 2024.08.24

Android Compose 의 @Immutable 와 @Stable

Jetpack Compose에서 @Immutable와 @Stable 어노테이션은 컴포저블 함수의 리컴포지션을 최적화하는 데 중요한 역할을 합니다. 각각의 어노테이션은 특정한 상황에서 사용되며, 사용하는 것과 사용하지 않는 것에 따라 성능에 미치는 영향이 달라집니다.1. @Immutable@Immutable 어노테이션은 클래스가 불변(immutable)임을 명시합니다. 불변 객체는 상태가 변경되지 않기 때문에, Jetpack Compose는 해당 객체가 변경되지 않는다고 가정하고 리컴포지션을 피할 수 있습니다.언제 사용할까?@Immutable은 객체가 불변이며, 내부의 모든 필드도 불변 객체일 때 사용합니다. 이는 데이터 클래스와 같은 경우에 자주 사용됩니다.예시:@Immutable data class U..

코루틴의 Dispatcher 를 Hilt Singleton으로 주입해보자

구글의 Codelab의 예제나 안드로이드 공식 문서, 블로그의 코루틴 예시들을 보면 아래의 코드처럼 새로운 코루틴을 생성하거나 withContext를 호출할 때 Dispatchers를 하드코딩하는 경우를 많이 찾아볼 수 있습니다. 하지만 Android의 코루틴 권장사항 문서를 보면 Don't hardcode Dispatchers when creating new coroutines 라는 내용이 제일 먼저 등장합니다.// DO inject Dispatchersclass NewsRepository( private val defaultDispatcher: CoroutineDispatcher = Dispatchers.Default) { suspend fun loadNews() = withContext(..

Android 2024.08.17

[다시 만들어보는 클린아키텍쳐] 모듈구성 편

밑작업이 끝이 났다면 이제 모듈을 구성해봐야한다.아직 만들고 있는 샘플 프로젝트는 모듈구성을 대략적으로 해뒀지만 완성된건 아니라계속 바뀌는 중이다. 그러니 대충 일반적인 상황을 가정하고 설명을 해보겠다. 일단 클린아키텍쳐의 개념에 따르는 모듈 구성은 알고자한다면 그 개념부터 다시 알고 넘어가야한다.사실 예전에 포스팅한게 있어서 첨부한다 ㅎhttps://choi-dev.tistory.com/158 안드로이드 클린 아키텍쳐에 대해개발에 관심을 가지고 있는 사람이라면 클린 아키텍쳐라는 말을 한번 쯤 들어 봤을거라고 생각한다. 나도 개념에 대해서는 어럼풋이 알고 있었지만 흉내만 낼뿐 원칙을 완벽하게 지킨다거나 하choi-dev.tistory.com 핵심은 계층분리다.영역을 역할에 따라 분리하고간섭을 최소화하여 ..

Android 2024.08.12

[다시 만들어보는 클린아키텍쳐] build-logic 편

build-logic 도 이전 포스팅에 있었던 모듈의 하나다.다만 이 모듈에는 Version Catalog, Convention Plugin 이라는 개념을 추가해서 설명할것이다. Version Catalog는 이름에서 느껴지는것처럼 버전을 관리해준다. 즉 프로젝트 전반에 있는 라이브러리 의존성을 관리하는 방식이다.libs.versions.tomi 라는 파일이 있을텐데 요놈이 그 역할을 한다.알아본김에 좀 더 알아보자.이 파일을 열어보면 크게 네 파트로 나뉘는데 [versions][libraries][plugins][bundles]가 있다. versions : 라이브러리의 버전을 정의한다. ex) glide = 5.0.0libaries : 해당 라이브러리 정보를 적는다. ( group : name : ve..

Android 2024.07.31

[다시 만들어보는 클린아키텍쳐] 모듈분리 편

클린아키텍쳐가 유행한지도 이제 꽤 시간이 지난 것 같다.하지만 여전히 현업에서도 많이 쓰이고 있고 시간이 흐를수록 더 관리하기 편하고깔끔한 구조로 변화해가는듯하다. 최근에 보이는 nowinandroid 나 드로이드나이츠 앱을 참고하며 내가 필요한 부분만 취해서새롭게 샘플앱을 구성해보려한다. 단발성으로 끝나는것이 아닌 지속적으로 몇년이고 업데이트 할 사항이 생긴다면추가하고 리펙토링도 진행하며 관리해나갈 목적으로 레포를 만들었다. 그럼 프로젝트를 구성하는 첫번째 발걸음인 모듈 분리를 해보자.참고로 클린아키텍쳐라고 꼭 모듈을 분리해야하는건 아니다.다만 분리를 하면 좀 더 강력하게 코드 관심사를 분리 시킬 수 있다.초기에 설정해야하는 일들이 꽤나 복잡하지만 해두고나면 코드를 보기에도 훨씬 편하다. 모듈분리 모듈..

Android 2024.07.25