Kotlin与现有的XCode项目

umuewwlo  于 2023-05-07  发布在  Kotlin
关注(0)|答案(1)|浏览(142)

我目前在Android和iOS上都有一个应用程序,有很多共享的业务逻辑。业务逻辑是Java语言,在Windows上的Android Studio中开发(与Android特定代码一起)。我目前将Java文件复制到Mac上的XCode,并使用J2 ObjC将它们合并到我的XCode项目中。编辑:我已经在Android Studio中使用Kotlin来处理一些没有与iOS共享的类。
对Kotlin类/文件做同样的事情最简单的方法是什么?我想先在Windows/AndroidStudio中继续开发,然后将文件/framework/pod放到XCode/Mac中使用。
我遇到的所有教程似乎都假设所有的开发都是在Mac上完成的,Android Studio在那里运行。有一些博客在谈论Gradle插件,我不明白它们在这种情况下如何应用。在StackOverflow上也有类似this one的页面,但我还是不明白这是怎么回事。我不知道我在XCode中使用Gradle,所以我猜事情必须发生在Windows/AndroidStudio端。
我如何将源代码复制到Mac/XCode并编译它,或者(我怀疑)在Windows/AndroidStudio上创建一个框架或Pod,我可以复制到Mac/XCode。还是我完全误解了!

u4vypkhs

u4vypkhs1#

回答我自己的问题,因为它可能对别人有用。
您需要在Mac上安装Android Studio,即使您不在Mac上开发。Mac上的Android Studio生成框架,然后将其导入到XCode。您无法从Windows上的Android Studio生成它。
该框架是从XCode中的构建脚本生成的,该脚本似乎在后台调用Android Studio来生成框架。
安装AS后,使用this link安装Kotlin插件,使用this link安装KMM。
然后按照this tutorial设置新的Android Studio项目。重要的是将您的“iOS应用”命名为与您现有的iOS应用相同,以便它在没有大量重构的情况下仍然可以工作(如教程中所述)。
将整个XCode项目文件夹移动(或复制)到Android Studio项目的“iOS app”文件夹,替换现有内容。然后,您可以将XCode指向该文件夹而不是原始文件夹。
然而,该教程中建议的新构建阶段现在已经过时了,因为它使用了packForXCode。更新的方法是用embedAndSignAppleFrameworkForXcode替换整个脚本:

cd "$SRCROOT/.."
./gradlew :<sharedcodefolder>:embedAndSignAppleFrameworkForXcode

这个新的构建阶段在每次编译时运行,即使没有任何更改。通过添加指向Kotlin源文件夹的输入文件和一个虚拟输出文件(在我的例子中是用Echo创建的),它应该只在需要时运行。
您需要安装JDK版本17才能使KMM工作。接下来交给我吧
如果您已经在使用J2 ObjC进行跨平台代码,那么在JDK版本中可能会有冲突。KMM需要v17,但J2 ObjC需要v1.8或11。这可以在XCode中通过为JAVA_HOME添加用户定义的构建设置并将其指向旧版本来解决。J2 ObjC将使用它。
现在你可以走了!在Windows上开发Android应用并共享Kotlin。将共享的Kotlin复制到Mac上的共享代码文件夹(或使用Git)。使用Xcode。好好享受

相关问题