Skip
약 2~3달 전 처음으로 스킵을 접하고, 어느정도의 레퍼런스와 업데이트를 기다리며 그 동안 Swift로 작업을 하고 있었다.
그리고 최근 안드로이드 폰을 사용하는 지인과 함께 아주아주 작은 프로젝트를 진행해보려고 하는데,
서드파티 라이브러리도 필요없고, 서버도 필요없는 아주 작은 프로젝트라 다시 Skip을 사용해보기로 했다.
Flutter를 한 번 사용해볼까 했는데, 어느정도 구조는 알겠으나, 위젯하나 배치할 때마다 레퍼런스를 찾아봐야해서
일단 Skip을 사용하기로 했다.
근데 이게 웬걸, 내가 마지막으로 작성한 포스팅에 적어놓은 에러들이 아직도 해결이 되지 않았다.
fullScreenCover, navigationTitleDisplayMode, Notification등등
여전히 XCode에서는 빌드가 잘 되지만, apk aab 파일을 만들기 위해
빌드를 하면 macOS 뭐시기 하면서 문제가 발생했다.

어쩔 수 없다. 깃허브 Issue를 들어가서 나와 같은 문제가 발생하는 사람이 있는지 찾아보자.
Skip 깃허브
먼저 내가 전에 작성했던 issue를 확인해봤다.
https://github.com/skiptools/skip/issues/162
swift build command line issue · Issue #162 · skiptools/skip
First of all, Thanks for your hard working! I found an error that occurs when I try to export gradle project. I tried this one below $ skip init --appid=com.xyz.HelloSkip hello-skip HelloSkip Initi...
github.com
지금 내용을 확인해보니 이 문제에 관해 얘기하는 건 맞지만 설명이 조금 부족했던 것 같다.
그래도 aabewhite라는 skip 개발자분이 친절하게 답변을 해주셨었다.
하지만 당시 이 문제가 해결이 안돼서 그냥 감사하다고 한 뒤 한동안 사용을 안했었다.
그리고 그 뒤로 몇개의 issue가 추가되었는데, 그 중 이 문제를 가장 잘 제기한 글이 있어 한 번 확인해봤다.
https://github.com/skiptools/skip/issues/180
정확히 내가 마주하는 에러 로그와 같은 로그를 직면했다.
그리고 답변 또한 명확했다.
This is a shortcoming with our skip export command: in order to build locally, it first launches swift build to create the transpiled Kotlin sources, which it then builds and packages using gradle. But the swift build command can only build against the default macOS target, and so you are seeing errors with any API that isn't supported in macOS.
This has been irksome for a while, so I plan to try to fix it soon. In the meantime, however, I'm afraid you'll need to block out and non-macOS-compatible symbols inside if #os(iOS)/endif blocks.
요약하자면 swift build commad를 수행하려면 MacOS를 타겟으로 빌드를 하는 과정이 포함되기 때문에 fullscreen cover, navigationTitleDisplayMode 같이 macOS에서 사용할 수 없는 API들을 포함할 경우 에러가 발생한다는 의미다.이게 진짜 짜증나는 문제로 있었는데, 최대한 빨리 고치기로 했다고 한다.
때문에 macOS에 호환되지 않는 API나 코드블록은 컴파일 지시문으로 분기처리를 해줘야한다고 한다.가령 다음과 같은 코드가 있다면,
VStack {
123123
}
.fullScreenCover(~~) {
someView()
}
macOS에서는 빌드 단계에 포함하지 않도록 다음처럼 컴파일 지시문으로 막아줘야한다.
VStack {
123123
}
#if os(iOS)
.fullScreenCover(~~) {
SomeView()
}
#endif
근데 너무 귀찮다.
혹시 업데이트가 있었는지 물어봤다. 이 issue가 열린지도 거진 두달이 되었고
곧 수정할 계획이 있다고 했으니 뭔가 바뀌었을수도 있다.

몇 분안에 답변이 왔다.

........없다고 한다. 귀찮으면 run타겟을 macOS 타겟으로 돌리고 찾아보라고 한다. 그러면 생각보다 빨리 찾을 수 있을거라고 한다.

감사 인사도 빼먹지 말자.
결론
굉장히 매력적이지만 여전히 많이 부족한 느낌이 많이 드는 프레임워크다.
그도 그럴것이 flutter의 구글 혹은 rn의 뭐시기(리액트는 잘몰라서...ㅎ) 같은 기업이나 조직이 아니라
두명의 개발자가 전체 프레임워크를 관리하다보니 속도가 느린건 어쩔 수 없는 것 같다.
결국 더 많은 사람들이 skip에 관심을 가지고 더 많이 사용해주길 바라는 수 밖에 없겠다.
그러면 자연스럽게 업데이트도 많아지고 서드파티 라이브러리도 많아지지 않을까 싶다.
'Skip' 카테고리의 다른 글
| [Skip] Skip Framework 빌드 시 에러가 나는 것들 (0) | 2024.07.06 |
|---|---|
| [Skip] Skip Framework 패키지 및 라이브러리 (0) | 2024.06.28 |
| [Skip] Skip Framework 빌드하고 실행하기 2 - 실행 (0) | 2024.06.26 |
| XCode에서 크로스 플랫폼 코딩하기 SKIP Framework(1) - 설치 (0) | 2024.06.24 |