분류 전체보기 32

Hello, KMP

나의 먼 미래의 작은 창업 꿈을 위해 KMP(Kotlin Multiplatform)를 공부해보기 시작했다. Android 가 나의 주요 기술스택이었기 때문에 Kotlin과 Compose 를 최대한 활용하여 앱을 개발해보려 한다. Compose multiplatform wizard(https://kmp.jetbrains.com/)를 이용하여 아래 사진과 같이 폴더를 구성할 수 있었다. Android Studio 에서 직접 new project 생성해서 만들어주는 구성과 조금 다른데, wizard 버전이 더 직관적이라 마음에 들었다. androidMain 은 android 에만 적용될 코드가, commonMain 은 모든 (android, iOS 등) 플랫폼에서 사용될 코드가, iosMain 에는 iOS에만..

Android Studio / Intellij 에서 Github Repository 만들기

Repository는 한번 만들면 계속 쓰기 때문에 새로운 레포 만들일이 사실 많이 없긴하다. 그래서 자주 까먹곤 하는 GitHub연동법을 기록해놓는다. 이미 Github에 프로젝트가 있다면 터미널에서 원하는곳에 경로 이동해서 git clone ~~~.git 입력하여 으로 내 기기에 다운로드할 수 있다. Fetch All remotes, Update Selected 를 클릭하여 잘 푸시가 되는지 확인해보자.  그런데 내 기기에서만 존재하는 프로젝트를 GitHub에 올릴때, 혹은 GitHub에는 별 거 아닌 파일만(ex. readme) 있는 경우라면 아래와 같이 빠르게 만들 수 있다. 1. Android Studio / Intellji 에서 Project 생성2. 상단 Version control > Cr..

Programming/Github 2024.10.21

Charles Proxy 인증 만료 시 재설치안되던 경우

https://yk-coding-letter.tistory.com/37 Charles Proxy 사용법 + 암호화 해제 방법 개발을 하다보면 클라이언트에서 api 요청을 제대로 보냈는지, 그에 대한 response는 잘 왔는지 테스트하고 싶을 때가 있다. (postman이랑은 다른것은 postman에서 요청하는 request와 동일하게 클라이언 yk-coding-letter.tistory.com 에서 charles proxy의 설치 및 최초 사용법에 대해 설명했었다. 그러고 나서 1년이 지나 인증서가 만료가 되었다. (1년마다 만료되는건 너무 심한것 같다) mac의 `키체인 접근`에 들어가서 Charles Proxy CA 의 만료 시간을 보면 오늘 날짜보다 이전임을 통해 알수 있다. Charles Pro..

Programming 2023.12.06

[이슈 기록] Android 라이브러리 의존성 문제 해결하기

배경 Room 버전을 2.3.0 에서 2.4.0-alpha03 이상으로 업데이트 해야할 일이 생겼었다. 그런데 버전 올리고 빌드를 돌렸더니 갑자기 coroutine 과 rxjava쪽에서 에러가 발생했다고 뜬다. 컴파일 타임이 아닌 런타임에 에러가 발생했다. Room을 업데이트하는데 coroutine/rxjava에서 문제가 생겨서 굉장히 뜬금없다고 생각했다. 원인 라이브러리간에 의존성이 꼬여있었기 때문! kotlinx-coroutines-core의 버전과 kotlinx.coroutines-reactive의 버전은 동일해야한다고 한다. 관련 링크 내가 dependency에 추가한 paging-rxjava3에는 kotlin-coroutines-reactive 가 1.4.3 버전으로 들어가있다. 하지만 room..

Programming/Android 2022.10.03

Charles Proxy 사용법 + 암호화 해제 방법

개발을 하다보면 클라이언트에서 api 요청을 제대로 보냈는지, 그에 대한 response는 잘 왔는지 테스트하고 싶을 때가 있다. (postman이랑은 다른것은 postman에서 요청하는 request와 동일하게 클라이언트에서 개발한것이 전송되지 않았을 가능성도 고려할 수 있다. 그리고 관심갖지 못했던 다른 api 들에 대해서도 감지할 수 있다.) Charles 설치, 사용법과 암호화 해제법에 대해 작성하려 한다. 목차는 아래와 같다. 1. Charles 설치 2. Android 기기를 노트북과 network 연결 3. 노트북에 CA 설치 4. Android 기기에 CA 설치 5. SSL Proxy 설정 0. Charles Proxy에 대하여 Charles 와 같은 프록시 프로그램은 기기에서 발생하는 네..

Programming 2022.09.04

[이슈 기록] Android 에서 단일 모듈 -> 멀티 모듈로 변경할 때 만났던 빌드 에러 이슈

클린 아키텍쳐를 위하여 app - domain - data 의 Layer로 분리한다고 했을 때, app은 domain의 의존성을 갖고(usecase or repository interface 등), data는 domain의 의존성을 갖는다(repository interface를 상속해야함 등) 그런데 app 이 domain 의 의존성만 갖고 있으면 빌드 에러가 났었다. (data의 di에서 Repository interface의 구현체인 RepositoryImp 을 주입해주는데, domain의 의존성만으로 repositoryImp을 알 수 없기 때문이라고 생각한다) 따라서 app 모듈에서 domain과 data 모듈에 모두 의존성을 추가하니 문제가 해결되었다. --아무리 구글링해도 안나왔다. 한 4시간 ..

Programming/Android 2022.06.27

[이슈 기록] TagetSdk 30 -> 31 올리는 과정에서 까다로웠던 이슈 기록 android:exported needs to be explicitly specified for <activity> 이슈

배경 TargetSdk 31부터는 Activity나 Service, broadcast receiver에서 인텐트 필터를 사용하지만 명시적으로 선언된 android:exported 값이 없으면 Android 12 이상을 실행하는 기기에 앱을 설치할 수 없다. ( Reference : https://developer.android.com/about/versions/12/behavior-changes-12?hl=ko#exported ) 하지만 나는 Manifest 파일을 잘 작성 했음에도 android:exported needs to be explicitly specified for . Apps targeting Android 12 and higher are required to specify an expli..

Programming/Android 2022.05.30

Android + CI/CD 적용하기 - CD편 (feat.Github Actions)

CI 에서는 yml 파일을 어떻게 작성하는가에 시간을 많이 썼었다면 CD 에서는 보안파일을 어떻게 외부에 노출시키지 않고, 자동화를 적용하는지에 신경을 많이 썼다. 쿠링 레파지토리의 release 브랜치에 Push 또는 PR이 있을 때 이를 어디에 배포할지에 대한 고민을 첫 번째로 했었고 후보는 플레이스토어에 바로 배포 AWS S3에 apk를 배포 firebase 등에 apk 배포 가 있었다. 플레이스토어에 바로 배포하는 방법도 존재하긴 하지만 바로 검토를 올리는것은 조심스러워서 일단 apk/aab를 받아보기로 했다. 플레이스토어에 출시노트나 다른 세세한 설정들을 만져야 할 때 직접 손으로 하는게 낫다고도 생각했다. 3번째인 firebase에 올리는것이 유력 후보였는데 Github Actions 내에서 ..

Programming/Github 2022.03.11

Android + CI/CD 적용하기 - CI편 (feat.Github Actions)

CI/CD는 Continuous Integration 과 Continuous Deploy(or Delivery) 의 줄임말로, 지속적인 통합과 배포를 의미한다. CI란 CI (Continuous Integration) 개발 + 빌드 + 테스트를 자동화 하는것 (안정화 된 앱 추출) 무엇을 하는것인가? 배포할 브랜치에서 빌드가 잘 되는지 로직 오류 검증을 위한 테스트 코드를 실행하고 결과를 확인 컨벤션 및 코드 스타일 규칙을 지켰는지 CD란 CD (Continuous Deployment) 배포를 자동화 하는것 대표적인 프로세스는 무엇이 있는가? (Android에서) 구글 플레이스토어에 들어가 관련 앱 파일을 업로드 관련된 내용을 팀원들에게 공유 히스토리 관리 및 다음 버전 대비 최근 내가 꾸준하게 관리하고..

Programming/Github 2022.03.09

[번역] RecyclerView를 Wrapping했을 때 퍼포먼스 이슈 - feat.NestedScrollView

Bartek Lipinski의 Medium 게시물 https://medium.com/android-news/android-dev-tip-4-91b7757b1f0a Android Dev Tip #4 The performance of wrapping content in RecyclerView medium.com 을 번역한 내용입니다. 오타 또는 오역이 있다면 댓글로 남겨주시면 수정하겠습니다. [Tip] When RecyclerView is wrapping its content, it’s not recycling anymore. Every record in the dataset has an item View kept in memory for as long as the RecyclerView is in the ..

Programming/Android 2022.03.04