일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 리사이클러뷰
- Kotlin
- MVVM
- Flow
- 커스텀뷰
- Android
- coroutine
- Authentication
- 안드로이드
- 파이어베이스
- cleanarchitecture
- 코딩테스트
- 클린아키텍처
- 코틀린
- ListAdapter
- UiState
- NavHost
- sharedFlow
- DiffUtil
- Jetpack
- 알고리즘
- 로그인
- Build variants
- NavController
- 컴포즈
- 뷰
- 플레이스토어
- 회원가입
- Compose
- XML
- Today
- Total
목록전체 글 (53)
Grusie 안드로이드 개발 기술 블로그
개인이나 사이드프로젝트를 진행하면서는 사용해 본 적이 없으나, 회사 프로젝트를 진행할 때, 업데이트를 테스트 하거나 이전 버전이 필요한 경우가 있어서 사용하게 되었다.사실 svn에 버전별로 commit해두어서 버전을 바꾸어 빌드할 수도 있으나, aab파일을 물리 보관하고 있기 때문에 aab를 apk로 변경해서 하는 것이 더 수월하다. 우선 기본 세팅을 몇 개 해야할 게 있다.1. bundletool 다운로드https://github.com/google/bundletool/releases Releases · google/bundletoolBundletool is a command-line tool to manipulate Android App Bundles - google/bundletoolgithub.c..
최근 블로그에 글을 올리지 못 했던 이유가 이직에 성공하여 개발을 하지 못해 글 작성을 하지 못했었다.회사를 가기전까지 인수인계 및 서류 작업 등을 진행하고, 퇴사 이후 여행을 계획을 갖고 있기에 당분간 업로드가 뜸해질 것 같아 이직 썰이라도 풀어보려고 한다. 물론 사이드 프로젝트를 수시로 건드리고 있기에 조만간 올릴지도 모른다. 첫 취업 시 스팩 및 목표학력- 서울에 있는 전문대학 졸업(소프트웨어 공학과) 자격증- 정보처리기능사 경력- 신입 참 별 볼 일 없는 스팩이다.필자의 목표는 개발자로서 많은 경력을 쌓고, 그 경험을 설명하고 다니는 강사가 되는 것이며 이런 스팩을 가지고도 노력하여 성공 할 수 있다는 것을 많은 사람들에게 공유해주고 싶다. 첫 취업 준비우선, 필자는 서울에 있는 전문대학(3년)에..
글라이드를 사용하여 갤러리 이미지들을 로드하는 중에, 다른 분의 휴대폰에서 이미지가 뜨지 않는 것을 확인하였다.Shimmer는 잘 나오기 때문에 처음에는 속도 문제인가 생각하였으나 아예 안 뜨는 것을 보고 로그를 찍어보았다. 결론은 해당 기기는 갤럭시 노트9 안드로이드 OS10에 One Ui 2.5를 가진 기기였으며, 검색결과 OS10에서 해당 에러가 발생한다는 것을 알게 되었다. java.io.FileNotFoundException(open failed: EACCES (Permission denied))해결법 ... 안드로이드 Manifest 파일에 application 내부에 레거시한 외부스토리지 접근요청을 허용한다는 의미인 것 같다.이 코드를 작성하고 다시 실행시켜 보니 문제 없이 ..
지난 번에 추가로, Build Variants에 대한 얘기이다.Release 버전을 테스트 할 수 있다는 것은 지난 번에 사용해보았으며, 주의해야 하는 추가 사항들이 좀 있어서 이번에는 Debug버전과 Release버전 앱이 따로 설치되도록 하면서 발생했던 문제점과, 처리과정에 대해 말해보겠다. 1. 파이어베이스의 google-services.json 처리2. File - Provider 사용 시 중복 처리3. 앱 이름 중복 처리 기본 세팅- 지난 번과 다를 거 없으나 설명을 하자면,debug / release를 구분하고 applicationIdSuffix를 사용하여 debug일 경우 패키지명이 변경되도록 수정하였다. 1. google-services.json파이어베이스의 기능들을 사용하기 위해서는 go..
회사 프로젝트에서는 release와 debug버전의 몇 가지 차이들이 존재했다. 예를 들어, proguard-rules를 활용한 난독화 차이가 있으며, 지난번에 발생했던, Json 난독화 오류에 대응하기 위해, proguard-rules를 수정한 경험이 있었다.하지만 이런 에러가 발생한다는 것은 플레이스토어 내부 테스트 버전을 배포하기 전까지 알지 못 하였고, 그 대로 배포를 했더라면 대참사가 날 뻔 했었다. 그렇기에, 개발단계에서 release버전을 테스트 해볼 수 있는 방법이 없을까? 하는 고민을 하며 찾던 중, Build Variants라는 것을 알게 되었고 실제로 빌드를 실행해보는 과정을 설명해보려고 한다. Build Variants는 기본적으로 이렇게 생겼다.프로젝트에 존재하는 모듈들을 띄워주..
새 버전 업데이트를 진행하기 위해, 앱 번들을 업로드 하였더니, 경고 메세지가 떴다.경고 메세지라서 따로 처리해두지 않아도 되겠지만 얘기 나오기 전에 미리 처리를 해두는 게 좋을 것 같아서 처리 과정을 기록해보려고 한다. 사실 검색 조금만 해보면 많이 나오길래 따라했지만, 다음에 또 있을 때 찾지 않기 위해 기록한다. 1. 플레이스토어 콘솔에서, App Bundle 탐색기에 들어가준다. 2. 해당하는 번들을 선택하고, 다운로드 탭에 들어간다. 하단에 있는 네이티브 디버그 기호 업로드 버튼을 선택 후 ~앱경로\build\intermediates\merged_native_libs\release\out\lib 폴더에 들어가게 되면, 이렇게 네 가지 폴더가 있는 것을 볼 수 있다. 이거를 압축해서, 업로드..
기존 HiltViewModel을 사용했을 때에는 생성자에 의존성이 선언 되어있는 useCase들을 넘겨주는 형태로 사용하였으나, 생성자를 넣어주고 싶어 찾아보다 Assisted Inject에 대해 발견하게 되어 기록해보려고 한다. 사용법1. @HiltViewModel을 사용하지 않는다.2. 뷰모델의 constructor 앞에 @Inject를 @AssistedInject로 대체한다.3. 생성자에 들어갈 파라미터 중 런타임 오브젝트를 주입받는 파라미터에는 @Assisted 애너테이션을 넣는다.4. 생성자를 주입한 뷰모델을 리턴하는 뷰모델 팩토리를 선언한다.5. 뷰에서 뷰모델 팩토리를 사용하여, 뷰모델을 생성한다. 직접 구현해보자class SlowMailBoxViewModel @AssistedInject co..
플로우이미지 리스트를 포함하여 서버통신을 하는 과정이 필요했으며, 중간에 임시저장을 할 수 있도록 구현 했어야 했다.추 후 임시저장 리스트를 통해 불러 올 수 있어야 했기에 이미지 저장은 필수였다.처음 생각은 origin 즉, 기본 이미지를 갤러리에서 가져오니, 그 uri를 그대로 저장하고, crop을 진행한 것들만 저장하면 되겠다고 생각하였다.하지만 고민을 해보다가, 만약 원본 이미지를 갤러리에서 삭제하면 어떻게 되는거지? 라는 물음에 도달해서, originImage도 저장하고, cropImage도 저장하게 되었다.저장은 앱의 내부 저장소를 이용할 것인데, 이미지가 계속 늘어나지 않도록, 화면을 종료하면 임시저장하지 않은 상태일 경우, 삭제하도록 구현하였다.하지만, 만약 임시저장이 되지 않은 상태로, ..