KUG Seoul 사이트를 Compose Web으로 만들면서 알게된 문제점들
개발/Compose2024. 1. 20. 06:44KUG Seoul 사이트를 Compose Web으로 만들면서 알게된 문제점들

KUG Seoul 사이트(임시)를 Compose Web으로 만들면서 알게된 문제점들... https://haeyum.dev/kug-seoul 1. 리소스가 로딩되는 과정에서 웹사이트가 멈춘다... 2. 버튼 클릭으로 Alert 발생 시 Ripple 이펙트가 중단된다. 3. 초기 별다른 기능/화면이 없음에도 600MB나 잡아먹는다. 4. Compose Multiplatform에서 대표적으로 사용되는 moko-resources를 사용하여도 초기 폰트 로딩되는 과정에서 ㅁㅁ로 한글이 깨진다... 5. 각 Weight별로 폰트가 불러와지면서 FontWeight이 적용되는게 시각적으로 보인다. (ㅁㅁ였다가 얇은 글씨가 보였다 두꺼워진다!) 6. fontFamilyResource로 폰트를 불러왔더라도, 다시 호출 ..

Compose iOS 첫 성공
개발/개발 일기2023. 3. 27. 17:33Compose iOS 첫 성공

기존 Skiko를 활용하여 Web 내 순수 Compose 그리는 것에 성공한데 이어 iOS도 성공하였습니다! 다만 iOS는 빌드되지만 AOS 관련하여 빌드 이슈가 발생하기에... (gradle 관련 추가 작업이 필요한데 힘들군요) 아직 추가적인 수정 및 테스트가 필요할 것 같지만 1차적으로 성공하였기에 너무 행복하네요 헤헤 사실 그동안 실패하여 막막하다 이번에 다른 GDSC Lead들과 함께 부산으로 MT오는 길에 KTX 코딩 + 음주 코딩을 통해(?) 성공하였습니다. 역시 무언가 개발하다 막힐 때에는 환경을 변화시키는 것이 새로운 해결책일 수 도 있지 않을까 싶습니다.

Compose Web - Skiko
개발/개발 일기2023. 2. 23. 03:21Compose Web - Skiko

Compose Web에 Skiko를 입히니 기존 Compose 로직 그대로 Web에서도 UI를 그릴 수 있네요. Canvas에 그려지는 형태이기에 SEO는 불가능할 것 같아 아쉽지만 차후 Flutter SEO 라이브러리처럼 구현된다면... 이번 발견(?)으로 이제 정말 Flutter처럼 Compose 단일 UI 코드로 AOS, iOS, Desktop(Windows, Linux), Web 모두 구현이 가능할 것 같습니다. 물론 아직 Web에서 몇 가지 테스트를 해보니 몇몇 인터렉션이 작동되지 않기에 수 작업으로 연결이 필요하는 등 stable 한 것 같지는 않기에 정식 product 사용은 어려워 보이긴 하지만 언젠가 정말 stable 하게 출시된다면 Compose로 세계 대통합을 할 수 있지 않을까.....

컴포즈 내비게이션 CreationExtras must have a value by `SAVED_STATE_REGISTRY_OWNER_KEY` 오류
개발/Android2022. 12. 7. 21:48컴포즈 내비게이션 CreationExtras must have a value by `SAVED_STATE_REGISTRY_OWNER_KEY` 오류

오류 로그 java.lang.IllegalArgumentException: CreationExtras must have a value by `SAVED_STATE_REGISTRY_OWNER_KEY` 오류 시나리오 현재 GDSC TUK(Google Developer Student Clubs - TECH UNIVERSITY OF KOREA)에서 2022년 안드로이드 스터디 마무리 프로젝트로 스쿨메이트라는 서비스를 개발하고 있었다. 초기 프로젝트 셋업 시 Hilt, Ktor 등 필요한 라이브러리도 디펜던시 연결해둔 상태에서 시간이 흘러 내비게이션을 도입을 해야하는 상황까지 오게 되었다. 컴포즈 내비게이션은 회사에서 매 프로젝트마다 작업하던 것이기에 간단하게 생각하고 적용을 하였으나 런타임에서 위의 오류 로그를..

PopupWindow에서 Jetpack Compose를 사용하는 방법
개발/Android2022. 11. 4. 11:30PopupWindow에서 Jetpack Compose를 사용하는 방법

Jetpack Compose에서 PopupWindow를 왜 사용하죠? 사실 처음부터 Compose로 개발하였다면 PopupWindow를 사용할 경우는 거의 없다고 생각된다. 그렇지만 그 이전, 우리는 커스텀 팝업을 만들 때 PopupWindow를 사용하여 XML을 Inflate 시켰기에 보다 편하게 만들어 왔었다. 그러다 점차 신규 프로젝트가 Compose로 개발이 시작되면서, 구 프로젝트(XML)에서도 독립적인(연계되지 않는) 신규 화면에 한해 Compose로 개발을 하였다. 이미 전반적인 커스텀 팝업을 PopupWindow를 사용하고 있으며 해당 팝업을 사용하는 곳도 Compose가 아니기에 기존 구조를 그대로 사용하면서 내용물만 Compose로 만든 다음 AbstractComposeView로 wra..

개발/Android2022. 7. 11. 02:03[Jetpack Compose] BasicTextField - clearFocus() 이슈

Error Log layoutcoordinate operations are only valid when isattached is true 시나리오 BasicTextField 생성 decorationBox안에 value(입력 값)이 empty이 아니면 innerTextField를 호출하지 않도록 함 키보드 엔터 누른 경우 search를 하고 키보드 숨김 및 focusManager로 clearFocus 호출 이때 text가 비어있는 상태에서 키보드 숨김 및 focus 해제 후 다시 BasicTextField를 클릭하면 앱 사망 분석 clearFocus() 함수의 문제인가? clearFocus() 함수를 호출하고 이후 호출을 하지 않더라도 앱이 사망 키보드가 내려간 상태에서 textField를 클릭하였기 때문..

image