라벨이 KMM인 게시물 표시

모바일 앱 개발 언어 선정할때 검토사항

모바일 앱을 개발할 때 언어를 선택해야 하는 경우가 많습니다. 일단 저는 아이폰 개발을 시작으로 안드로이드로 확장된 경험을 가지고 있습니다. 아이폰은 Objective-C 부터 Swift 그리고 SwiftUI 까지 개발한 경험을 가지고 있습니다. 안드로이드는 Java 부터 Kotlin 그리고 Jetpack Compose 까지 개발한 경험을 가지고 있습니다. 아이폰으로 먼저 화면과 기능을 구현한 다음 안드로이드를 구현하는 방식으로 개발했습니다. 왜냐하면 아이폰이 저에게는 더 익숙한 환경이었거든요. 아무래도 조건이 더 까다로워서 이것부터 맞춘 다음 안드로이드 하면 더 쉬운 느낌이었으니까요. 이런 작업을 하다 보면 같은 작업을 반복한다는 생각이 많이 듭니다. 개발 도중 현타도 많이 옵니다. 이게 뭐하는 건지....., 그래서 시도한 방법은 KMM(Kotlin Multiplatform Mobile) 적용이었습니다. 이것도 굉장한 물건입니다. 공통 모듈로 뺄 수 있는 부분이 내부 데이터베이스와 API 호출 하는 모듈을 작성하였습니다. 이것만 되어도 굉장한 코딩 중복이 사라집니다. 큰 앱은 이방법을 사용하시면 됩니다. 각 디바이스 마다 적용해야 할 제약이 크다면 이정도만 해도 굉장한 중복제거 효과를 볼 수 있습니다. 만약 좀 더 나아가서 기획 쪽까지 틀 수 있는 정도면 Flutter 를 추천합니다. 저도 사실 예전에 Flutter 시도를 했었다 실패한 경험이 있습니다. 아직도 camera 부분이나 machine learning 부분 등이 버전이 1.0대가 아니어서 많이 느리지만 그래도 구현은 됩니다. Flutter 로 개발하면서 느낀 점은 아이폰과 안드로이드 설정은 똑같이 해야 한다는 점입니다. 그래들과 info.plist 등 설정이 필요합니다.

App Store Connect Operation Error 조치

이미지
KMM(Kotlin Multiplatform Mobile) 을 활용하여 앱을 제작하였습니다. 아이폰 쪽 앱을 스토어에 올리는데 오류가 납니다. 설마할까 하면서 그냥 올려 보았습니다. 통과 되었습니다. 이 오류는 그냥 무시해도 될거 같습니다.  

KMM 에서 XML 자료 가져와서 Parsing 처리방법

이미지
KMM 대단한 물건이다. 비지니스 로직 부분을 코틀린으로 통일만 하면 개발량이 확 줄어든다. 샘플로 제시된 코드는 JSON 형식이다. 하지만 공공데이터 형식이 XML 인 경우가 많다. 이것에 대한 매뉴얼도 물론 있다. 주석처리 된 부분이 매뉴얼에서 제공된 라이브러리이다. 결론부터 말하자면 안된다. shared -> build.gradle.kts 상단에 1.7.10 으로 추가하였다. 1.7.20이 최신파일인데 이게 또 compose 와 충돌이 나서 하위버전으로 낮추었더니 오류가 나지 않는다. androidMain 부분에 라이브러리를 추가해준다. iosMain  부분에도 라이브러리를 추가해준다. 제일 하단에 메모리 관련 설정을 추가해준다. Project 제일 상단 폴더의 build.gradle.kts 파일은 위와 같이 설정한다. 여기서도 버번을 1.7.20 으로 했다가 1.7.10 으로 하향 설정 하였다. 호출하는 부분의 모듈이다. 일단 String 으로 받아서 함수를 만들어서 구조체에 넣을 것이다. 결과 데이터를 담을 구조체는 이렇게 작성하였다.  결과 XML 은 대충 이렇게 내려온다. 문자열 추출하여 내용을 파악하는 함수를 작성하였다. 추출된 각 항목을 Item 으로 생성하여 리스트에 넣고 이를 각 구조체 내용에 추가하여 데이터를 완성하는 부분이다. 이제 이 함수를 사용해서 가져온 결과를 리턴하는 비동기 함수를 클래스에 추가한다. 안드로이드 소스에서는 이렇게 호출한다. 아이폰 소스에서는 이렇게 호출한다. 뒤에 오는 개발자에게 도움이 되었으면 하는 마음으로 작성하였다. 전체 소스 https://github.com/whenyourapprun/ElevatorKMM 

KMM(Kotlin Multiplatform Mobile) 환경 구축 on 맥북(12.6 Monterey)

이미지
KMM 은 아직 알파이다. 베타도 아닌 플랫폼이 현장에 적용되고 있다고 해서 한번 구축해보았다. 나의 노트북 환경이다. 첫 번째로 공식 사이트에서 진행한다. https://kotlinlang.org/docs/multiplatform-mobile-getting-started.html 여기서 제공하는 도구가 있다. 맥북에서 설치하는 환경을 맞춰주는 도구이다. $ brew install kdoctor $ kdoctor 실행결과는 다음과 같다. 여기서 중요한게 버전을 맞추는 일이다. 나도 버전때문에 이틀 정도 체크가 뜨지 않았다. 안드로이드 스튜디오도 돌핀으로 올리고  엑스코드도 14.0.1로 올렸다. 결국 ruby 2.7 로 낮추고 겨우 환경 체크가 된거 같다. 루비와 코코아팟 설치에서 아주 애를 먹었다. 루비 버전을 2.7로 낮춰야 한다. 최신 버전에서 아직 지원이 되지 않는거 같다. 이렇게 아직 문제도 많은데 사용자가 점점 늘어나는거 같다.