본문 바로가기

전체 글

(159)
[안드로이드 짤막공부] 23.08.01 1. 요새는 이론 위주로 보고 있어서 딱히 오류가 생기거나 하는 게 잘 없었는데 오랜만에 에러와 맞닥뜨렸다. 'compileDebugJavaWithJavac' task (current target is 1.8) and 'kaptGenerateStubsDebugKotlin' task (current target is 17) jvm target compatibility should be set to the same Java version. ... 이런 에러였는데, 아무래도 내 컴파일 환경이랑 kapt 메소드가 동작할 수 있는 환경 조건이 맞지 않는 거 같았다. 해결 방법은 간단했다. build.gradle(Module) 내의 저 옵션들을 모두 버전 17로 맞춰주니 바로 해결되었는데 하나 이상한 건 발생한 에..
[안드로이드 짤막공부] 23.07.21 1. 강의 중에서, 내가 선택한 유저가 나를 좋아요 했는지 알아보기 위한 로직을 작성하는 부분이 있었다. firebase를 이용하기 위해 ValueEventListener 내의 onDataChange()를 오버라이드 하는 내용이었는데 처음에 강사 분은 이렇게 작성하셨다. val postListener = object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { for (dataModel in dataSnapshot.children) { val likeUserKey = dataModel.key.toString() if(likeUserKey.equals(uid)) { Toast.makeText(this@MyLik..
[안드로이드 짤막공부] 23.07.20 1. 지금 강의를 보며 하고 있는 게, 데이팅 앱 클로닝인데 강의에서 굳이 처리하지 않는 디테일한 부분들이 많다. 실제로 서비스하기 위한 앱을 만들 때는 분명히 신경 써야 할 부분들인데, 강의의 목표와는 조금 떨어져 있는 부분들이라 생략하는 거 같다. 나중에 혼자 프로젝트를 제대로 하게 되면 그때는 신경 써봐야겠다. 2. 강의에서는 레이아웃 작업을 할 때 주로 절대적인 수치와(이를테면 레이아웃이나 요소의 크기 같은 것들) LinearLayout을 많이 이용한다. 그러다 보니 렌더링 된 레이아웃을 보며 직관적으로 빠르게 만들어내긴 좋지만, 확실히 다양한 기종에 대한 이식성이 떨어진다. 아무래도 ConstraintLayout과 match_parent, wrap_content 옵션 위주로 구현하는 연습을 따로..
[git bash] git push rejected error 해결 새로운 안드로이드 연습용 프로젝트를 위해 git hub 상에서 repository를 새로 생성하고, git bash로 클로닝 했다. 간단하게 프로젝트 작성 후에, add 해주고 메시지 써서 commit했는데 push가 되지를 않았다. ! [rejected] main -> main (non-fast-forward) error: failed to push some refs to 'https://github.com/XXXXXX/XXXXXXX.git' hint: Updates were rejected because the tip of your current branch is hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git p..
[안드로이드 짤막 공부] 23.07.17 1. MySoleLife 작업 중에 자꾸 AVD가 저번과 같은 waiting for all target devices to come online에서 멈춘다. 진행 중이던 걸 취소하고 다시 run 하면 그 이후로는 AVD가 켜지고 빌드가 시작되는 단계도 일어나지 않는다. 매번 wipe data를 해줄 수는 없는 노릇이라, 실행 중인 프로세스 중에서 qemu 프로세스만 죽이고 다시 run 하니 정상작동 했다. 가상머신 문제인 거 같긴 한데 아직 상세한 원인은 잘 모르겠다.
[안드로이드 짤막 공부] 23.07.16 1. DTO를 위해 data class를 생성해 사용할 때, 패러미터들은 디폴트 값을 지녀야 한다. 2. startActivity()로 새로운 액티비티를 실행할 때, 기존에 쌓여있던 모든 액티비티를 종료하기 위해서는 intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_CLEAR_TASK 이와 같이 intent의 플래그를 설정하면 가능하다. FLAG_ACTIVITY_NEW_TASK: 다른 affinity 값을 가지는 액티비티 호출 시 새로운 task 스택 생성하고 그곳에 생성하는 액티비티 push. 기존의 task 스택들 중 호출하는 액티비티와 affininity 값이 같은 ..
[안드로이드 짤막 공부] 23.07.15 1. 안드로이드 스튜디오 AVD 사용시, waiting for all target devices to come online 상태에서 더 이상 진행되지 않는다면 device manger에서 해당 디바이스에 대해 wipe data 해줄 것 2. 레이아웃에서, 기본 제공되는 ScrollView 이용 시 내부 요소는 하나만 존재해야 함