안녕하세요, 지인분 부탁으로 안드로이드용으로 작성된 코틀린 소스를 iOS 용으로 포팅할 수 있는지 확인 중입니다.
현재 소스는 안드로이드용으로 작성된 코틀린 앱 프로젝트는 공용화를 염두해 두고 작성된것은 아니였습니다.
검색해 보니 코틀린 자체는 멀티플랫폼으로 구동이 되는거 같더군요. (오 신기합니다)
제가 공용화를 위해 찾아본 링크들은 아래와 같습니다.
https://play.kotlinlang.org/hands-on/Targeting%20iOS%20and%20Android%20with%20Kotlin%20Multiplatform/01_Introduction
https://medium.com/@myungpyo/kotlin-native-%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-android-ios-%EA%B0%84-%EA%B3%B5%ED%86%B5-%EC%BD%94%EB%93%9C-domain-%EA%B3%B5%EC%9C%A0-f4681fceab55
https://github.com/JetBrains/kotlin-native/tree/master/samples/calculator
위 링크의 소스들을 본 저의 소감으로는 플랫폼에 종속되지 않고 만들수 있는 소위 비즈니스 로직 정도만 공용화가 가능해 보이는데요..
혹시 공용화 작업 해보신 분들이 계시다면 어느정도 가능하다고 보시나요?
참고로 아래는 제가 공용화 해보려다 실패한 코틀린 소스 입니다.
제 생각으로는 안드로이드 쪽 api나 java 특화 기능은 당연히 iOS에서는 쓸수 없기 때문에 애시당초 포팅이 말이 안된다고 결론을 내려야 하나 생각중입니다.
package com.common.util @Suppress("unused") data class Angle(var yaw:Double = 0.0, var pitch:Double = 0.0, var roll:Double = 0.0 ) { override fun toString() = "yaw: %f, pitch: %f, roll: %f".format(yaw, pitch, roll) fun copyFrom(src: Angle) { yaw = src.yaw; pitch = src.pitch; roll = src.roll } operator fun minus(s: Angle) = Angle(yaw-s.yaw, pitch-s.pitch, roll-s.roll) operator fun times(f: Angle) = Angle(yaw*f.yaw, pitch*f.pitch, roll*f.roll) operator fun times(f: Int) = Angle(yaw*f.toDouble(), pitch*f.toDouble(), roll*f.toDouble()) operator fun times(f: Double) = Angle(yaw* f, pitch* f, roll* f) operator fun times(f: Float) = Angle(yaw* f.toDouble(), pitch* f.toDouble(), roll* f.toDouble()) } |
시도해 보신 능력자 분들의 의견을 듣고 싶어 이렇게 글 올려 봅니다.
읽어 주셔서 감사드립니다.
-> 이 조건에 안 걸리는 코드는 얼마 안돨거 같은데요. 차라리 그냥 Kotlin 쪽 코드를 Swift로 바꾸는게 더 빠를거 같은데요. 저 쪽 코드 되면 두 코드가 비슷해서.