通过将您的项目拆分为两个独立的项目,一个用于Android和一个用于iOS的,可以使用高于2.2的Android Studio(我正在使用AS 3.0 Canary 3,它支持Java 8功能)解决此问题一个导入模块,其中包含所有常用代码。
要进行设置,您需要将iOS应用程序模块复制到单独的文件夹中。我用这个结构:
Toplevel
android
androidApp
lib
ios
iosApp
每个项目应该有gradle.build,gradlew脚本和gradle这个文件夹的副本 - 最简单的方法就是重复再树从一个,并从其他iosApp删除androidApp。
android和ios文件夹都包含顶级build.gradle和settings.gradle文件。常见的代码在lib目录中,因此而Android项目settings.gradle看起来像这样的IOS文件夹,将需要这样
include ':iosApp', ':lib'
project(':lib').projectDir = new File('../android/lib')
一个settings.gradle:
include ':lib', ':androidApp'
打开每个项目在AS中它自己的窗口,您现在可以独立构建和运行它们。您可以通过使用
gradlew androidApp:assembleDebug
的Android项目和
gradlew iosApp:assemble
的IOS版本在命令行(通常更容易调试gradle这个问题)测试。 我目前与AS 3的唯一问题是在android项目的dexing阶段偶尔出现空指针错误。从命令行构建使得它消失了一段时间。你当然可以使用没有这个问题的AS 2.3(但不支持Android 8中的lambdas等Java 8功能)。
Abhishek的回答已经说明了如何使用RoboVM来解决问题。但手动构建RoboVM,我认为这不是一件容易的事。在此期间尝试使用MultiOS引擎(MOE)而不是RoboVM。 – haxpor