[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..
[SKT DEVOCEAN YOUNG] 데보션 영 3기 합격 및 발대식 후기 🔥
·
🔥 대외활동
복학 준비를 하면서 학교 생활과 병행해서 할 수 있는 활동을 찾아보던 중, SKT에서 진행하는 Devocean Young이라는 대외활동을 발견하게 되었다. 특히 내 눈을 사로잡았던 건 '대학생 테크 인플루언서를 찾습니다'라는 문구였는데 개발을 시작하기 전에는 콘텐츠 제작(카드뉴스, 영상)에 관심을 가졌었기에, 너무나도 나에게 적합한 활동이 아닌가! 라는 생각이 들었다 ㅎㅎ 1️⃣ 지원서 작성모집 기간이 ~1/31까지였는데 사실 나는 이날이 제주도에서의 한 달 간의 여행을 마치고 돌아오는 날이었기에 ,,6-7시쯤 집에 도착해서 밥을 먹으면서 허둥지둥 지원서를 작성했다.  지원서는 구글폼으로 6가지 질문에 응답하면 되는 형식이었다. 기억이 정확히 나지는 않지만, 아마 글자수 제한은 따로 없었던 것 같다! (..
[Frontend/Nuxt] Nuxt3에서 달력 라이브러리 사용하기
·
💻 Web
달력을 직접 커스텀하기에는 시간 상 한계가 있을 것 같아서 나와 있는 달력 라이브러리를 사용하고자 했다. But, (1) vuetify에서 제공하는 v-calendar 라이브러리 사용 - native component는 등록하라며 에러 발생 (2) v-calendar 라이브러리 사용 - maximum stack size 어쩌고... 발생 으로 몇 시간 가량 삽질을 하다가... Nuxt에서 SSR로 동작할 때 문제가 발생하며, 라이브러리를 다르게 사용해야 한다는 것을 알게 되어서 내용 기록해 둔다! 우선 내가 사용한 건 이 v-calendar 라이브러리이다. Welcome | VCalendar vcalendar.io (1) 설치하기 yarn add v-calendar@next @popperjs/core (..
[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 넣기 &..
[Frontend/Web] CORS 총정리
·
💻 Web
프론트 개발을 하면서 숱하게 만나왔던 CORS 에러... 항상 야매로 인터넷에 뜨는 해결책 이것저것 찔러보다 해결되면 넘어가고 말았었는데, 이번에 인턴 활동 하면서 & 서버 공부 하면서 CORS가 일어나는 이유와 해결 방법에 대해 완전 이해해버렸다! 까먹지 않기 위해 내용을 기록해 두려고 한다 CORS란? Cross Origin Resource Sharing, 이 말은 즉슨 Origin이 다른(=출처가 다른) 자원들을 서로 공유한다는 뜻이다. Origin은 Protocol + Host + Port 이 세 가지로 판단하며, 이 3가지가 같으면 동일한 출처로 간주한다. 예를 들어, 아래 경우들은 서로 다른 출처로 간주되는 경우이다. Protocol이 다름 https://lamerry.com http://la..
[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() /..