当前位置: 首页>>技术教程>>正文


如今的IntelliJ Idea 12 + Android + Scala

, , , ,

问题描述

根据我的建议,我浏览了几篇文章,描述了如何使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一起使用。

  1. SBT-Android几个月没有更新。我发现说明已经过时,而且我没有设法创建一个有效的项目。

  2. android-sdk-plugin工作。只需按照简单的步骤操作,我的手机上就会运行”hello world”。但是将SBT项目导入IntelliJ将无法正常工作,需要手动进行一些项目修改。

  3. 我也尝试过先创建一个Android项目,然后添加Scala框架,但没有达到我的预期。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9588.html,未经允许,请勿转载。