일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 최댓값 최솟값
- DB
- kotlin
- 데이터베이스
- keystore
- 실버2
- Myungpyo Shim
- compose
- .github
- gradlew
- 실버 4
- suspend programming
- 개발하는 정대리
- DB 기능
- 브론즈 1
- github action
- 데이터베이스 첫걸음
- 2레벨
- capitalize
- Bitrise
- LazyRow
- 프로그래머스
- Activirty
- Android
- 브론즈1
- navigation component
- 백준
- 성빈랜드
- LazyColumn
- 피보나치 수 2
- Today
- Total
목록전체 글 (47)
plzy의 개발 블로그
소개 DevFest, Studyjam, WTM
Bitrise 의 기본 세팅으로 Android progect 를 빌드할려고 할 때 gradlew 파일이 없어 해맸던 적이 있습니다. 이때 해결방법을 공유해 볼려고합니다. Generate Gradle Wrapper 를 step 에 추가합니다. 이 세팅은 만약 gradlew 파일이 프로젝트에 포함되어 있지 않을 때 Bitrise 자체에서 설치를 해주는 겁니다. .Install missing Android SDK components step 의 gradlew 의 경로를 변경합니다. 변경할 경로는 $GRADLEW_PATH 로 지정해 줍니다. 위의 방법대로 설치를 해준다면 성공적으로 build 가 성공하는 것을 확인해 볼 수 있습니다.
이 블로그 포스팅은 https://myungpyo.medium.com/reading-coroutine-official-guide-thoroughly-part-1-98f6e792bd5b 를 참고하여 만들었습니다. #1 중단 함수에 대해 알아보자. package com.smp.coroutinesample.basic import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.delay import kotlinx.coroutines.launch fun main(args: Array) { GlobalScope.launch { delay(1000L) println("World!") } println("Hello,") Thread.sleep(2000L) } 위의..
Coroutine에서 suspend는 빠트릴 수 없는 중요한 키워드이다. 하지만 붙이는 경우가 있고 붙이지 않는 경우도 있다. ex) flow 어떠한 경우에 붙이고 어떤 역할을 하는지 알아보자. suspend의 뜻 suspend를 구글 번역기를 돌려보면 중지하다 라는 뜻이 보일 것이다. 말 그대로 suspend를 붙인 함수는 중지할 수 있는 상태가 되는 것이다. suspend의 기능 코 루틴은 일시 중단할 수 있다. 예를 들어 A 코 루틴과 B 코 루틴이 있다고 가정했을 때 A코 루틴에서 B의 코 루틴의 결괏값이 필요한 경우가 생길 수 있다. 이런 경우 A 코 루틴을 일시 중지 한 후 B의 결과값을 가져온 후 다시 A 코루틴을 실행한다. 이와 같은 경우가 callback 지옥을 해결해준다! suspend..
이슈 sarchView에서 setonQueryTextListner로 리스너 호출할때 불필요한 android.widget.SearchView.OnQueryTextListener 를 생성해야한다. binding.searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener, android.widget.SearchView.OnQueryTextListener { 해결법 xml에 있는 searchView를 보면 SearchView를 androidx.appcompat.widget.SearchView 로 변경하면 불필요한 생성을 막아준다. binding.searchView.setOnQueryTextListener(object : SearchView..
Compose를 사용하기 전에는 Splash Theme를 사용하거나, startActivity 등 사용해서 만들면 됐었다. 하지만 Compose에서는 조금 방법이 다르다. 바로 Navigation을 사용해야한다. 먼저 splash로 사용할 화면과, splash 후에 나올 화면을 NavHost에 정의해 준다. startDestination 에서 어느 화면이 가장 먼저 실행될 것인지 명시해준다. @Composable fun BosoDiaryApp() { // navigation 설정 val navController = rememberNavController() NavHost( navController = navController, startDestination = Screen.Splash.route ) { ..
Android에서 LiveData는 ViewModel에서의 데이터 값을 가지고 있어 view를 최신 값으로 유지해준다. 이러한 개념은 Android 개발을 한 단면 익숙할 것이다. 자주 사용하고 있는 LiveData가 Flow로 대체될 위기에 처했다. 어떠한 이유 때문에 그러는 걸까? 먼저 LiveData의 장단점에 대해 알아보자 LiveData의 장점 Observer 패턴을 사용하기 때문에, 데이터의 변화를 실시간으로 구독자에게 알려 최신 값으로 유지할 수 있다. 라이프사이클을 알고 있기 때문에 생명주기에 따라 변한다. viewModel과 같이 사용할 경우 화면 회전 같은 현상이 일어나도 view의 데이터 값을 유지할 수 있다. LiveData의 장점만 보면 flow가 나올 이유가 없을 것 같다. 하지..
프로젝트를 하다가 pr 후 ci를 돌리는데 자꾸 Grant execute permission for gradlew 이부분에서 오류가 생긴다. 권환도 줘봤고 별짓을 다해봤지만 고쳐지지 않는 오류.. 하지만 해결을 해버렸다 해결방법 내 기존의 프로젝트 경로가 이렇게 되어 있었다. DailyPoem 폴더를 열어야 app package가 나왔었는데 그 부분이 문제가 생긴것 같다. DailyPoem의 경로를 지우고 바로 app package가 나오도록 경로를 변경했다. app package를 밖으로 꺼낸 모듈 경로를 바꿨더니 그디어 성공이라는 message를 볼 수 있었다.