IT/Android (49) 썸네일형 리스트형 안드로이드 스튜디오 / targetSdk33 알림 권한 요청 기존 안드로이드12 이하는 알림 권한 기본값이 활성화였는데, 안드로이드13부터는 기본값이 비활성화라고 한다. 따라서 Notification 권한을 요청하거나, 사용자가 직접 알림 설정에 들어가서 활성화를 해야 한다. Notification권한은 targetSdk33이상에서만 권한 추가 요청이 가능하다. targetSdk31로 되어 있던 프로젝트를 targetSdk33으로 올리기로 하였다. (진작했어야했는데...) 그리고, 알림 설정 팝업을 띄워주는 코드를 추가하였다. 1. build.gradle 에서 targettSdk33, compileSdk33으로 변경 2. manifest 에서 POST_NOTIFICATION 퍼미션 추가 다행히 크게 변경할 코드가 없어서 sync만 맞춰주었다. 3. 알림권한이 설정.. Hilt 오류? module을 나누고, Hilt로 DI 적용을 하다 생긴 소소한 오류의 원인들 1. app단에 domain과 data를 주입했나? 2. Manifest에 name 등록을 해주었나? 3. 적절한 Annotation을 붙여 주입을 해주었나? 4. module 클래스를 생성하여 Provide를 이용하여 의존성을 주입하였나>? 5. kotlin 1.7.10 -> hilt 2.42 https://stackoverflow.com/questions/67744002/hilt-unsupported-metadata-version-in-kotlin 맥 zsh: command not found: adb 오류 안드로이드스튜디오에서 adb 명령어가 안먹는 경우 vi ~/.zshrc -> export ANDROID_HOME=/Users/$USER/Library/Android/sdk/ export PATH=$PATH:$ANDROID_HOME export PATH=$PATH:$ANDROID_HOME/tools export PATH=$PATH:$ANDROID_HOME/platform-tools :wq 후 엔터 source ~/.zshrc -> 적용 adb -> 정상작동 확인 안드로이드 스튜디오 / 4대 컴포넌트 (구성요소) 안드로이드를 구성하는 요소 중 중요한 4대 구성요소가 있다. 1. Activity - 사용자가 화면을 관리하는 구성요소. - 상용자와 상호작용을 담당하는 인터페이스 - 안드로이드 애플리케이션은 반드시 하나 이상의 액티비티를 포함하고 있다. 2. Service - 액티비티와 상관없이 백그라운드에서 실행되는 구성요소 - 별도의 UI를 가지지 않으며 네트워크와 연동이 가능하다. - 애플리케이션이 종료되어도 이미 시작이 된 서비스는 백그라운드에서 계속 동작 3. BoardCast Receiver - 특정 브로드캐스트를 수신하는 구성요소 (액티비티와 레이아웃 필요X) - 각종 이벤트와 정보를 받아와 핸들링 하는 컴포넌트 4. Content Provider - 애플리케이션 간의 데이터 공유를 위해 표준화된 인터페이.. 안드로이드 스튜디오 / Jetpack Compose? xml에 익숙한 나... Compose 사용 가능일까? (경험에 비롯한 Compose) Jetpack Compose란 안드로이드의 선언형 UI 도구 키트이다. Compose는 뷰를 명령형으로 변형하지 않고도 앱에 UI를 랜더링할 수 있게 하는 선언형 UI를 제공한다. 지금껏 xml에 뷰를 그리고, 접근하려면 findViewById(), dataBinding 등을 사용하였다. 레이아웃 수정을 하면서 xml은 수정하였는데, Activity에서 수정하지 못해서 오류가 난 경험이 꽤나 있다. 이러한 문제점을 해결해줄 것 같은 Compose는 뷰를 그림과 동시에 접근이 가능하다. recyclerview를..사용안해도 된다던데.. 다음 프로젝트는 Compose를 사용해봐야겠다. 하하 https://developer.. 안드로이드 스튜디오 / LiveData vs MutableLiveData LiveData : get만 가능 MutableLiveData : get,set 가능 view와 viewModel의 역할 분리를 명확히 하기 위해서 위와 같이 사용한다. viewModel 내에서는 데이터를 수정할 수 있도록 하고, view는 바뀌는 데이터를 읽을 수만 있도록 한다. //viewModel private val _isError = MutableLiveData() val isError: LiveData get() = _isError _isError.postValue(e.message) //view isError.observe(viewLifecycleOwner){ Toast.makeText(context,it,Toast.LENGTH_SHORT).show() } 예외상황이 발생 시 viewMdoe.. 안드로이드 스튜디오 / Expecting android:screenOrientation="unspecified" or "fullSensor" for this activity so the user can use the application in any orientation and provide a great experience on Chrome OS devices tools:ignore="LockedOrientationActivity" manifest에 "LockedOrientationActivity" 추가하면 된다. https://stackoverflow.com/questions/60396601/expecting-androidscreenorientation-unspecified-or-fullsensor-for-this-a 코틀린 / let, with, run, apply, also let : 지정된 값이 null이 아닌 경우에 코드를 실행해야 하는 경우 with : null이 될 수 없는 수신객체, 결과가 필요하지 않은 경우 run : 어떤 값을 계산할 필요가 있거나 여러개의 지역 변수의 범위를 제한하는 경우 apply : 수신 객체 람다 내부에서 수신 객체의 함수를 사용하지 앟고 수신 객체를 자신을 다시 반환하는 경우 also : 수신 객체 람다가 전달된 수신 객체를 전혀 사용하지 않거나 수신 객체의 속성을 변경하지 않고 사용하는 경우 https://kotlinlang.org/docs/coding-conventions.html 이전 1 2 3 4 5 6 7 다음