问题描述
根据我的建议,我浏览了几篇文章,描述了如何使IntelliJ Idea与Android和Scala一起工作,但事实证明它们都是在一两年前写的。从那时起,可能发生了一些变化,现在还有其他解决方案可以实现此目标。具体来说,有一个新的解决方案https://github.com/yareally/android-scala-intellij-no-sbt-plugin,我不知道它是否有效。
我已经安装并设置了IntelliJ Idea 12,Android SDK,Scala,SBT和所有其他内容。剩下的唯一事情是设置IntelliJ Idea 12使其与Scala一起使用,而不是与Java一起使用来创建Android应用程序。
请不要关闭问题。我看到以前的问题与我的相似,但正如我所说,它们已经过时了。
问题是,我现在该如何做(2013年5月)?
附言我尝试了Android Development Studio,但是由于许多错误,我什至无法启动它。
最佳方法
更新:您可以阅读我写的关于即将推出的SBT-Android(0.7)新版本的tutorial。您的大部分疑虑都应该在那里解决。如果不是,那就是一个问题。
更新2:为了公平起见,还有一项伟大的工作正在进行中:@pfn在GitHub上的android-sdk-plugin。
关于ProGuard和构建时间:
-
我本人是preloading large libraries,使用
sbt-android
在我的设备上。这完全消除了ProGuard,但需要root用户。 -
android-sdk-plugin
的最新版本拥有一个新的ProGuard缓存(与AndroidProguardScala相同),它非常漂亮,并且在开发过程中大多数情况下都消除了ProGuard。
我已经为SBT-Android贡献了几个月,所以我知道它比其他解决方案要好得多。
截至目前,该插件的发展迅速,具有:
-
即将全面提供IntelliJ支持(由于SBTIdea)(事实上,它已经可以工作了,我只需要发送拉取请求)
-
在模拟器或有根设备上自动预加载Scala(只需运行
android:preload-{device, emulator}
,就不再需要Proguard进行开发!) -
应该以最小的努力支持简单的Gradle项目out-of-the-box(目录结构非常相似)
-
配置容易得多(只需添加插件和a project file,就可以设置好!)
当前版本没有这些功能中的大多数功能,但它们将在接下来的几周内发布。当然,一些文档当然会在之后很快出现,包括示例和我将想到的所有内容。
我鼓励您加入Scala on Android Google小组,并顺便分享您的想法。如果您要使用IRC,则Freenode上还有一个#sbt-android
频道。
次佳方法
只是想插上这个。我使用了https://github.com/yareally/android-scala-intellij-no-sbt-plugin,尽管我发现说明很模糊,但在此之前从未使用过IntelliJ。
到目前为止,您可能已经了解了所有内容,并且对SBT感到满意,但是出于我的目的,我只想在Android上测试Scala,而无需所有额外的麻烦。因此,要使no-sbt-plugin工作正常,这是我需要做的一些小事情:
我最终将scala-compiler.jar(以及scala-library.jar和scala-reflect.jar)作为全局库包含在内:
这样,编译器就可以访问库&反射代码,否则会出错。如果您不包括该库,则IDE会抱怨编译器需要关联的库,如果您不包括反射,则它会在编译时吐出一堆错误,导致找不到找不到反射类的定义。
我还必须包括scala-library.jar作为模块依赖项(它的副作用还包括在“库”部分中):
在完成所有操作之前,我安装了Scala插件,创建了一个Android项目,并简单地添加了一个Scala facet(忽略内存设置,我在鬼混):
最后,我不得不通过在Proguard txt文件中添加一些”-dontwarn”行来解决一些剩余的编译错误。很简单。
奇迹般有效。尚未做任何实质性的工作,但期待在我的下一个Android项目中使用Scala。
第三种方法
我编写了Scaloid库,该库使Scala可以更简洁地进行Android开发。
为了快速起步,我为Scala + Android编写了一个hello-world Maven项目。
我将Intellij用作主要的IDE,它可以很吸引人地导入项目。
第四种方法
我已经经历了大约一个月前的工作,并且使用Gradle使其能够很好地工作。
结果如下:https://github.com/ghik/akkdroid
这是一个简单的client-server项目,它使用Scala和Akka,并在Android上通过IntelliJ IDEA开发了客户端。我知道client-server对于Akka来说并没有多大意义,但这只是一个简单的大学项目,用以证明这些技术可以协同工作。
但是请注意,该项目中的gradle脚本仅用于生成IDEA项目,必须对其进行进一步扩展才能执行正确的Android应用程序构建。
第五种方法
我已经看了这个线程好几个月了,终于有一些时间来做真正的测试。
将IntelliJ 13与SBT 0.13和Scala 2.10.3一起使用。
-
SBT-Android几个月没有更新。我发现说明已经过时,而且我没有设法创建一个有效的项目。
-
android-sdk-plugin工作。只需按照简单的步骤操作,我的手机上就会运行”hello world”。但是将SBT项目导入IntelliJ将无法正常工作,需要手动进行一些项目修改。
-
我也尝试过先创建一个Android项目,然后添加Scala框架,但没有达到我的预期。