스팀 앱 개발기 #149 - 개발 완료: Jetpack Compose 마이그레이션 4단계
개발 완료: Jetpack Compose 마이그레이션 4단계
No. 149
2026. 04. 29 (수) | Written by @dorian-mobileapp
저번 포스트에서 말씀드린 Jetpack Compose로 마이그레이션. 그중 4단계를 진행했습니다. 아... 길다는 생각이 드네요. 기록은 단계별로 해야 의미가 있다고 생각합니다. 귀찮더라도 이렇게 하려구요. 요약 내용은 다음과 같습니다.
Jetpack Compose 마이그레이션 4단계 요약
작업 개요
레거시 Fragment 기반 코드와 DataBinding XML 파일을 전부 제거하여 Compose 전환을 완료했습니다.
변경 파일 목록
| 파일 | 변경 내용 |
|---|---|
AndroidManifest.xml | MainActivity 항목 제거 |
PostItemListAdapter.kt | 삭제 (미사용 고아 클래스) |
삭제한 Kotlin 파일 (4개)
| 파일 | 이유 |
|---|---|
MainActivity.kt | Main2Activity로 완전 대체됨 |
MainViewModel.kt | MainActivity에서만 사용됨 |
BaseActivity.kt | 모든 Activity가 Compose 기반으로 전환됨 |
BaseFragment.kt | 모든 Fragment 클래스가 Step 1에서 삭제됨 |
삭제한 XML 파일 (22개)
layout/ (20개)
| 분류 | 파일 |
|---|---|
| Activity 레이아웃 | activity_main.xml, activity_splash.xml, activity_vote_list.xml |
| Fragment 레이아웃 | fragment_tags.xml, fragment_profile.xml, fragment_blog.xml, fragment_account_details.xml |
| 공통 컴포넌트 | layout_post_item.xml, layout_vote_item.xml, layout_reply_item.xml, layout_tag_item.xml |
| 기타 | layout_profile_content.xml, layout_profile_menu.xml, layout_profile_menu_item.xml, layout_loading.xml, layout_loading_error.xml, layout_input_account.xml, layout_account_lookup.xml, layout_tag_lookup.xml, layout_post_image.xml |
menu/ (1개)
bottom_nav_menu.xml—activity_main.xml에서만 참조됨
navigation/ (1개)
mobile_navigation.xml— 빈 파일,activity_main.xml에서만 참조됨
작업 후 남은 Activity 구조
| Activity | 방식 |
|---|---|
SplashActivity | ComponentActivity + setContent {} |
Main2Activity | ComponentActivity + Navigation Compose |
VoteListActivity | ComponentActivity + setContent {} |
PostImagePagerActivity | AppCompatActivity + ComposeView (하이브리드, 향후 정리 대상) |
ProfileImageActivity | AppCompatActivity + ComposeView (하이브리드, 향후 정리 대상) |
GitHub Commit
보다 자세한 코드는 아래 commit을 참고하세요.
지난 스팀 앱 개발기
- #148 - 개발 완료: Jetpack Compose 마이그레이션 3단계
- #147 - 개발 완료: Jetpack Compose 마이그레이션 2단계
- #146 - 개발 완료: Jetpack Compose 마이그레이션 1단계
- #145 - 개발 계획: Jetpack Compose 마이그레이션
- #144 - 개발 완료: 리팩토링: 타입 안전성과 일관성 개선
- #143 - 개발 완료: 내비게이션 컴포즈 활용하여 프로필 화면으로부터 다른 화면 이동
- #142 - 개발 완료: API 연동 코드 자동 생성 방안
- #141 - 개발 완료: Main2Activity 관련 리팩토링
- #140 - 개발 완료: Navigation Compose 활용하여 태그 화면에서 포스트 화면 이동
- #139 - 개발 완료: Main2Activity 클래스를 추가하고 내비게이션 라이브러리 변경
- #138 - 개발 완료: Hilt 라이브러리 활용한 의존성 주입 구현
- #137 - 개발 완료: libs.versions.toml 파일 생성
- #136 - 개발 완료: 사용자 히스토리 화면에서 스팀파워 보상을 SP로 보여주기
- #135 - 개발 완료: 태그 및 포스트 리스트 화면에서 텍스트의 HTML 태그 제거
- #134 - 개발 완료: (1) 태그/포스트 리스트 화면의 포스트 항목에 댓글 개수 보여주기 (2) 댓글 리스트를 Jetpack Compose로 리뉴얼
- #133 - 개발 완료: (1) 검색 버튼 클릭시 키보드 숨기기 (2) 버그 수정: 팔로잉 계정 수 오류
- #132 - 개발 완료: 포스트 이미지 페이저 화면에 XML 대신 Jetpack Compose 적용
- #131 - 개발 완료: 프로필 이미지 화면에 XML 대신 Jetpack Compose 적용
- #130 - 개발 완료: 태그 화면에 XML 대신 Jetpack Compose 적용
- #129 - 개발 완료: 지갑 화면에 XML 대신 Jetpack Compose 적용
- #128 - 개발 완료: 포스트 리스트 화면에 XML 대신 Jetpack Compose 적용
- #127 - 개발 완료: 프로필 화면에 XML 대신 Jetpack Compose 적용
- #126 - 개발 완료: 계정 히스토리 화면에 XML 대신 Jetpack Compose 적용
- #125 - 개발 완료: 댓글 리스트 바텀시트에 XML 대신 Jetpack Compose 적용
- #124 - 개발 완료: 포스트 화면에 XML 대신 Jetpack Compose 적용
- #123 - 개발 완료: 계정 상세 화면
- #122 - 개발 완료: 포스트 화면에서 댓글 리스트 보여주기
- #121 - 개발 완료: 사용자 히스토리 화면에서 항목 클릭시 링크 팝업 띄우기
- #120 - 개발 완료: 사용자 히스토리 화면
- #119 - 개발 완료: Comments, Replies 화면
- #118 - 개발 완료: 포스트(Posts) 화면
- #117 - 개발 완료: 블로그 화면
- #116 - 개발 완료: 프로필 화면
- #115 - 개발: 프로필 화면 구현에 필요한 ProfileViewModel 클래스 개발
- #114 - 수정: 태그 화면의 포스트 리스트 항목 레이아웃 변경
- #113 - 오류 수정: 태그 리스트 로딩 중 다른 화면 이동하면 앱 비정상 종료
- #112 - 포스트 화면에서 보팅 리스트 화면으로 연결
- #111 - 시작 화면 추가
- #110 - 오류 수정: 지갑 화면 시작시 오류 토스트 뜸
- #109 - 개선: 태그 입력하고 검색 버튼 클릭 또는 엔터 키 누르면 키보드 닫기
- #108 - 개선: 태그 검색창에 엔터 키 적용
- #107 - 버그 수정: 태그 화면 복귀시 포스트 리스트 다시 로딩됨
- #106 - 포스트 화면 개발
- #105 - 포스트 화면의 로직 처리를 담당할 PostViewModel 클래스 개발
- #104 - 포스트 내용 읽기 기능을 Repository, Use Case 패턴에 적용
- #103 - 포스트 내용을 읽기 위한 bridge.get_discussion API 연동 코드 작성
- #102 - 포스트 내용을 읽기 위한 bridge.get_discussion API
- #101 - build.gradle에서 라이브러리 이름과 버전 통합
- #1 ~ #100
Layout provided by Steemit Enhancer hommage by ayogom
안녕하세요.
SteemitKorea팀에서 제공하는 'steemit-enhancer'를 사용해 주셔서 감사합니다. 개선 사항이 있으면 언제나 저에게 연락을 주시면 되고, 관심이 있으신 분들은 https://cafe.naver.com/steemitkorea/425 에서 받아보실 수 있습니다. 사용시 @응원해 가 포함이 되며, 악용시에는 모든 서비스에서 제외될 수 있음을 알려드립니다.
안녕하세요.
이 글은 SteemitKorea팀(@ayogom)님께서 저자이신 @dorian-mobileapp님을 응원하는 글입니다.
소정의 보팅을 해드렸습니다 ^^ 항상 좋은글 부탁드립니다
SteemitKorea팀에서는 보다 즐거운 steemit 생활을 위해 노력하고 있습니다.
이 글은 다음날 다시 한번 포스팅을 통해 소개 될 예정입니다. 감사합니다!
Upvoted! Thank you for supporting witness @jswit.