[Android] Android CI/CD 구축하기 (3) - Fastlane + Firebase App Distribution, PlayStore + Slack
·
💻 Android
지금까지 나는 앱을 직접 버전을 올리고 -> 빌드하고 -> 파일을 첨부하여 스토어에 올리는 방식으로 작업을 진행했다. 이 과정 역시 사람이 직접 하는 것이기에,, 실수가 있지 않을까 걱정도 많이 되었고 여간 귀찮은 일이 아니었다...!!그러던 중 Fastlane을 이용해 CI/CD 구축이 되어 있는 프로젝트에 참여하게 되었고 이걸 접한 후에 나는 신세계를 경험했다 🥹   1. Fastlane이란?Ruby 기반의 Android 및 iOS의 배포를 자동으로 도와주는 오픈소스 프로젝트앱의 빌드, 배포, 플러그인 연결(ex. 슬랙 메시지 전송) 등이 가능 올리브영에서도 Android의 CI/CD를 Firebase App Distribution + Fastlane 조합으로 사용 Firebase App Distr..
[Android] Android CI/CD 구축하기 (2) - BuildType으로 개발/운영 환경 분리
·
💻 Android
내가 지금 작업하고 있는 프로젝트는 개발/운영 환경의 url을 개발자가 '직접' 바꾸어 배포를 진행해야 했다.회사에서는 빌드 환경에 따라 상수가 분리되어 있어 Build Variants만 바꾸면 해당 환경으로 실행이 가능했는데,,,배포 시마다 내가 혹시나 개발 url로 올려버리지는 않을까 불안에 떨고는 했다. 이번에 앱 배포 관련 작업을 하면서 해당 부분도 환경을 분리하여 개선할 수 있는 시간이 주어져서 !! 작업을 진행했고, 결과적으로는 30분의 작업이 내 앞으로의 작업 환경을 너무나 쾌적하게 만들어 주었다 😎    1. Build Type이란프로젝트를 생성하면 기본적으로 debug, release 두 개의 BuildTypes이 설정되어 있다.debug는 기본적으로 debuggable true 설정이..
[Android] Android CI/CD 구축하기 (1) - Firebase App Distribution, Play store 테스트 트랙
·
💻 Android
테스트/운영 환경의 앱을 Firebase App Distribution, Play Store의 비공개/내부 테스트 트랙을 이용해 전달하고 있다. 프로젝트 진행 시에는 내부 앱 공유만 이용했었는데, 이번 기회의 여러 테스트 트랙을 경험해 볼 수 있었다. 각 방식의 차이점과 장단점을 잊지 않도록 기록해 두려고 한다.  1. Play ConsolePlay Console에서는 크게 프로덕션, 공개, 비공개, 내부 테스트 트랙, 그리고 내부 앱 공유를 제공한다.   프로덕션 - PlayStore에 배포공개 테스트- 출시 직전에 대규모 그룹을 대상으로 테스트 진행 - Google Play에서 바로 참여 신청하여 테스트 가능 - 인원 제한 (1000명 이상) or 무제한비공개 테스트- 타겟팅하는 그룹 대상으로 테스터..
[Android] Android 13 마이그레이션
·
💻 Android
시스템의 앱 알림 ON 버튼이 눌리지 않는다는 이슈가 발생했다.  원인은 Android 13 이상 기기에 대해 알림 관련 마이그레이션 작업이 되어있지 않았던 것이었다. '이 앱의 알림을 모두 차단했습니다' 문구는 알림 권한이 허용되지 않았을 경우 나타나는 문구이고,Android 13 이전 기기까지는 알림 권한이 자동으로 허용되었으나 그 이후 기기에서는 권한 허용 알럿창을 노출해 직접 유저에게 허용을 받아야 했다. 따라서, 아래 두 개의 작업을 진행했다.  ✔️ 안드로이드 13 마이그레이션 작업1. Android 13 이상인 경우, 알림 권한 요청 2. 알림 수신 로직에서 Android 13은 Pending Intent 부분 플래그 추가  1. Android 13 이상인 경우, 알림 권한 요청  - Man..
[Android/IOS] 인앱 리뷰 기능 추가하기
·
💻 Android
요약 리뷰 API를 호출하더라도, 할당량에 따라 호출되지 않을 수 있음 (Android 1달에 2번, IOS 1년에 3번) 사용자가 앱을 충분히 경험한 후 & 경험이 단절되지 않는 위치에 적절히 넣어야 함 리뷰를 무조건 달게 하려면 or 문구를 추가하거나 상황에 따라 직접 처리하려면 그냥 수동으로 앱스토어로 이동시켜야 함(=딥링크) Android 요청 시기 사용자가 유용한 의견을 제공할 수 있을 정도로 충분히 앱 또는 게임을 사용한 이후 버튼 등으로 유도하는 것은 안됨 (뜨지 않는 경우 앱이 멈추지 않게) 조건 사용자는 PlayStore가 설치되어 있고 & API 21 이상이어야 함 리뷰 대화상자를 표시할 수 있는 빈도에 관한 시간제한 할당량 有 → 1개월에 최대 2번 이를 넘어가면 대화상자가 표시되지 ..
[Android] 인스타그램 DM으로 공유하기 기능 만들기
·
💻 Android
메타에서 제공하는 공식 문서에 따르면 스토리에 공유하기, 피드에 공유하기 기능만을 제공하고 있다. 스토리에 공유하기는 이미지를/피드에 공유하기는 글 또는 이미지를 공유할 수 있는데, 나는 인스타그램 DM으로 원하는 내용을 공유하도록 구현해야 했다. 스토리에 공유하기 - Instagram 플랫폼 - 문서 - Meta for Developers 개요 Android 암시적 인텐트 및 iOS 맞춤 URL 스키마를 사용하면 앱에서 사진, 동영상과 스티커를 Instagram 앱으로 전달할 수 있습니다. Instagram 앱이 해당 콘텐츠를 받아서 스토리 작성기에 읽어들이 developers.facebook.com 몇날 며칠을 고민하다 내린 나의 해결책은... 💡 ACTION_SEND에 text로 extra 넣기 &..
[Android/MySQL] 안드로이드에서 JDBC 사용하기
·
💻 Android
데이터베이스 텀 프로젝트에서 트위터 클론 코딩을 진행한다. 1) ERD 설계 2) JDBC 구현 3) GUI 구현의 순으로 진행하는데, 우리는 GUI를 안드로이드로 구현하고자 했다! (Java Swing으로 해도 되는데... 어 음 어 사정이 길다) 암튼... 이 방법이 권고되지 않는 방법이기도 하고 앞으로는 절대 쓸 일이 없기는 하겠지만... 내 거의 3-4시간 가량의 삽질이 아까워서 글로 남긴다. [방법 1] Android MySQL Connector 라이브러리 사용 열심히 구글링을 하니까 Android에서 MySQL을 사용할 수 있는 라이브러리가 나왔다. https://github.com/BoardiesITSolutions/Android-MySQL-Connector GitHub - BoardiesI..
[Android/Kotlin] 갤러리에서 이미지 가져오기
·
💻 Android
권한 설정하기 1. manifest.xml에 저장소 이용 권한 설정 2. 권한 허용 체크 후 필요에 따라 요청하기 /* 권한 가져오기 */ private fun checkPermission(){ val permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) if(permissionCheck != PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), REQUEST_CODE) }else{ getPhotos() /..