본문 바로가기

안드로이드

(26)
[Android] Compose 도입 ( 마이그레이션 ) Kotlin DSL로 작성되었습니다. build.gradle ( app level ) android{ .... buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.4.3" } } 컴포즈 버전을 선택하실땐 공식문서를 확인하셔서 사용중인 코틀린 버전과 호환되는 버전을 선택하시고 너무 오래된 버전을 사용중이시라면 이번 기회에 올리는 것을 추천드립니다. Dependencies const val composeVersion = "1.4.3" const val composeUi = "androidx.compose.ui:ui" const val composeGraphics = "androidx.compose.ui:ui..
[Android] Kotlin DSL 적용기 Kotlin DSL 이란 DSL이란 Domain Specific Language로 특정 도메인에 최적화된 언어를 말합니다. 안드로이드에서 'Kotlin DSL' 을 적용했단 의미는 Groovy로 구성되어 있는 gradle 파일을 Kotlin으로 변경하는걸 뜻합니다. Kotlin DSL vs Groovy DSL 장단점을 충분히 고려하고 사용해본 후 팀이나 프로젝트에 맞는걸 사용하는걸 추천합니다. 장점 - 컴파일시 에러를 확인 - 자동 완성 - 타입 안정성 - 코틀린 기능 활용 ( 함수형 프로그래밍 ) 단점 - 초기 빌드가 느림 - 학습 곡선 마이그레이션 저는 진행중인 토이프로젝트에 적용한걸 공유하지만 프로젝트에 맞게 다양한 예시들을 검색해보시며 맞는걸들을 찾아 조합해 적용하는걸 추천드립니다. root 프로..
[Android] 구글 로그인 연동 '구글 로그인 연동' 자주 하지 않지만 프로젝트 시작하면 많이 찾게되는 키워드.. 그래서 헷갈릴때가 많아 다시 한번 정리 합니다! 구글 로그인은 크게 2가지로 구분 됩니다. 파베를 이용한 연동 vs Google Cloud Api를 연동 서버가 없는 경우 파베를 이용하면 회원 관리도 직접할 수 있는 어드민 기능을 제공하고 연동 방식도 조금 더 간단합니다. Google Cloud Api 연동은 서버가 따로 있을 경우 이용하는 방식으로 클라이언트에서 구글 idToken을 발급받아 서버로 전송하면, 서버에선 전달 받은 idToken으로 유저의 정보를 얻고 그걸 토대로 각 서비스의 AccessToken을 발급해줍니다. = AccessToken : 서비스 ( 앱 ) 이용시 필요한 유저 인증 정보 해당 포스팅은 Cl..
[Android] 룰렛 구현하기 최근에 [점메추] 앱에서 메뉴를 추천하기 위한 방식중 하나로 개발을 했는데 아쉽게 실 버전엔 포함되지 못했습니다. 결과 화면 개발 방식 라이브러리도 있지만 커스텀하기 용이한 점과 개발 해보고 싶었던 마음이 있어 캔버스에 직접 그리는 방식으로 했습니다. Roulette.kt 룰렛을 한 화면에서만 사용하지만 관리가 용이해 커스텀 뷰로 만들었습니다. @SuppressLint("DrawAllocation") override fun onDraw(canvas: Canvas?) { super.onDraw(canvas) if (canvas == null) return val rectLeft = left + paddingLeft + Constant.DEFAULT_PADDING val rectRight = right - ..
[Android] TargetSdk 33 변경 후 xml 자동완성 기능이 작동 안하는 경우 개요 알람 권한 추가로 인해 OS버전이 13인 디바이스에 권한 요청을 받지 않으면 Notification이 노출되지 않는 문제로 인해 부랴부랴 targetSdk를 33으로 변경하고, 관련 코드를 추가후 배포했습니다. 이후 다른 작업을 진행하는데 xml 자동 완성이 작동하지 않았습니다. 실패한 시도 - 국룰(clean, rebuild) - 프로젝트 캐시 제거 여러개의 프로젝트를 운영하다보니 순간적으로 발생한 상황이라고 생각해 간단한 대처들을 진행했는데 해결되지 않았고, targetSdk 변경으로 인한 문제라고 생각 못했습니다. 성공한 시도 Android Studio를 최신 버전으로 사용하면 정상 작동된다는 글을 발견해 해당 버전(Android Studio Electric Eel | 2022.1.1 RC 3..
점메추 개인정보 처리 방침 1. WONY (이하 "http://superwony.tistory.com/")는 이용자의 개인정보를 매우 중요하게 생각하며 각별히 주의를 기울여 처리하고 있습니다. 다음과 같은 목적외에는 사용하지 않습니다. - 카메라로 찍은 사진의 링크를 앱내 저장해서 식물의 사진이나 일기의 사진을 보여주는 용도로만 사용합니다. 2. 정보 주체의 권리, 의무 및 그 행사방법 이용자는 개인정보 주체로서 다음과 같은 권리를 행사할 수 있습니다. ① 정보주체는 ('사이트URL'이하'사이트명) 에 대해 언제든지 다음 각 호의 개인정보 보호 관련 권리를 행사할 수 있습니다. 1) 개인정보 열람요구 2) 오류 등이 있을 경우 정정 요구 3) 삭제요구 4) 처리정지 요구 3. 처리하는 개인정보의 항목 작성 ① 은(는) 다음의 개인..
[AOS] Splash Screen Api 적용기 ( api 12 ), 하위 버전 호환까지 수정 이력 - 22.12.20 : 최초 작성 - 22.12.27 : 지정한 Splash Screen 끝나고 아이콘 잔상이 남아 보이는 문제 평소 퍼블릭한 작업이 끝나고 남는 시간에는 리팩토링을 하는데, 최근 어느정도 코드가 자리 잡아서 성능 개선도 병행해서 진행하고자 합니다. 그래서 Screen Api가 추가 됐단 얘기를 들은지 한참 지났지만 이제라도 대응해보려고 합니다! Splash Screen Api 많은 앱들이 구동에 필요한 정보들을 호출하거나 아이덴티티를 보여주는 용도로 스플래시 화면을 구현해 사용하고 있었는데 구글에서 Splash Api를 만들어서 12버전 이상의 디바이스부턴 강제하도록 했습니다. 대응하지 않은 앱들은 아이콘 모양의 스플래시와 앱에서 추가한 화면인 스플래시도 보여주기 때문에 유저..
[iOS] UILabel에 클릭 이벤트 붙이기 AOS로 클릭 이벤트를 구현할땐 상황에 맞게 View, TextView등 다양한 오브젝트를 활용해서 레이아웃을 그리고 거기에 간단하게 클릭이벤트를 붙입니다. 하지만 iOS는 버튼에만 IBAction을 사용해서 편리하게 붙일 수 있고 그 외엔 'TapGesture'를 붙여야 합니다. class ViewController: UIViewController { @IBOutlet weak var view: UILabel! override func viewDidLoad() { super.viewDidLoad() // 포인트 구매 let buyPoint = UITapGestureRecognizer(target: self, action: #selector(clickPoint)) view.addGestureRecogni..