Kotlin programming

    [Compose] livedata 에 observeAsState 함수 사용하기

    구글 디벨롭에서 Compose 코스를 공부 하던 중에 livedata 에 observeAsState를 사용하는 예제가 있습니다. 제 앱에서 해당 함수를 호출 하려니 observe만 있고 observeAsState 라는 함수는 없었고 왜 없나 해서 찾아 보니 사용하는 라이브러리 패키지가 달랐습니다. import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState @Composable private fun TodoActivityScreen(todoViewModel: TodoViewModel) { val items: List by todoViewModel.todoItems.observeAsState(l..

    [Kotlin] JCenter 서비스 업데이트로 인한 mavenCentral 전환 이슈(Migration Jcenter to mavenCentral)

    [Kotlin] JCenter 서비스 업데이트로 인한 mavenCentral 전환 이슈(Migration Jcenter to mavenCentral)

    JCenter 서비스 업데이트 여러 Android 프로젝트에서 사용하는 JCenter 아티팩트 저장소를 유지하는 회사인 JFrog가 2021년 3월 31일에 JCenter를 읽기 전용 저장소로 만들었습니다. 발표에 따르면 JCenter는 기존 아티팩트의 다운로드를 무기한으로 허용합니다. JCenter에 아티팩트를 게시하는 개발자는 패키지를 Maven Central과 같은 새 호스트로 이전해야 합니다. JCenter의 종속 항목을 사용하는 개발자는 이러한 종속 항목의 업데이트된 버전의 새 위치를 찾아야 합니다. Jcenter()가 읽기 전용으로 바뀌면서 해당 라이브러리의 유지는 가능 해졌지만 지속적인 업데이트를 위해서는 저장소의 변경이 필요 합니다. Migration JCenter to mavenCentr..

    [Compose] 클릭했을 때 리플 효과 비활성화(disable ripple effect when clicking in Jetpack Compose)

    Compose 스터디중 버튼이 아닌 Row, Column 에다 클릭이벤트를 넣어서 테스트 해봤는데, 기본 리플 효과가 적용되어 있어서 비활성화 기능을 적용해 봤다. Modifier extension을 사용 하면 리플효과 비활성화가 가능하다. inline fun Modifier.noRippleClickable(crossinline onClick: ()->Unit): Modifier = composed { clickable(indication = null, interactionSource = remember { MutableInteractionSource() }) { onClick() } } 위와 같이 선언 하고 아래와 같이 사용하면 됩니다. Row( modifier = Modifier.noRippleCli..

    [Kotlin] ONE UI 4.0 업데이트 하고 나서 앱이 사라 졌다! ㅠㅠ

    화면 검수를 위해서 One UI 업데이틑를 하고 앱을 실행하려는데 내 앱이 사라졌다 급하게 소스를 열어서 빌드 하니 빌드는 정상인데 내 핸드폰에 설치를 하려니 아래와 같은 오류가 발생했다. 원인 : Android 11 이하에서는 manifests에 설정 시 exported가 기본으로 exported=true로 되어 있기 때문에 필요시에만 exported=false로 선언해서 사용 되었습니다. Android 12 에서는 exported 를 명시적으로 선언해야 한다 (단. intent-filter 가 있는 것에만 추가해 주면 된다.) List of apks: [0] '/Users/~/Desktop/android_example/SimpleCompass/app/build/outputs/apk/debug/app-..

    AsyncTask로 되어 있는 소스 Coroutine로 바꾸기(Change AsyncTask to Coroutine)

    AsyncTask가 Deprecate 되고 대응 방법으로 몇 가지가 있지만 간단하게 변경하는 방법입니다. 아직 코루틴에 대한 공부가 부족해 최적화가 되어 있진 않지만 기존 asynctask를 사용하시던 분들이 쉽게 이해하실수 있게 작성 해 봤습니다. private class SampleAsync extends AsyncTask { @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected String doInBackground(Void... voids) { return "결과 스트링값"; } @Override protected void onPostExecute(Void unused) { super.onPostE..

    [Android studio]안드로이드 스튜디오 SDK 오류 : 실제 기기에서 실행 안됨 에러

    [Android studio]안드로이드 스튜디오 SDK 오류 : 실제 기기에서 실행 안됨 에러

    Error message: Failed to install the following Android SDK packages as some licences have not been accepted 안드로이드 스튜디오에서 기존 프로젝트를 열어서 빌드 하려고 했을 때 에뮬레이터에서는 동작하는데 실제 디바이스에서 실행 시에 해당 오류 메세지가 발생했습니다. 에러 문구를 보니 android sdk licences에러로 나와서 찾아 보니 google play licensing library를 다운 받는 것으로 해결 했습니다. 해결 방법 - SDK Managers > SDK Tools > Google Play Licensing Library 다운로드 받아주면 해결 된다. ( 하단 이미지 참고 ) 위의 파일을 다운로드 ..