适用于Android的Scala编程

我跟着斯卡拉和Android与斯卡拉2.7.3最后的教程。 由此产生的Android应用程序的作品,但即使是最基本的应用程序需要几分钟(!)编译,需要900 kb的压缩,这是一个移动应用程序的显示停止。 此外,IDE现在耗尽内存。 我认为dex不是为像scala-library这样的大型图书馆制作的。

  • 所以我的问题是:有没有人真的这样做,是否有任何解决办法呢?

我已经在Scala中编写了一些基本的Android应用程序,没有太多的史诗。 不是一个Java程序员,我被build议使用“treeshake”,我朋友解释说,这从jar文件中删除了所有不必要的库。

我没有logging它,但我发现别人已经有:

http://chneukirchen.org/blog/archive/2009/04/programming-for-android-with-scala.html

Proguard不是唯一的解决scheme,你可能会发现一些适合你的工作stream程或更适合你的环境的东西。

另外谷歌刚刚实现了JACK,这相当于减less了构build和内存的时间,见https://source.android.com/source/jack.html

您现在可以使用Gradle的Android插件在Scala中创buildAndroid应用程序。 它集成了ProGuard工具来修剪APK文件中的脂肪,所以似乎可以满足您的需求。

http://wiki.github.com/jvoegele/gradle-android-plugin/

还有一个基于Scala的构build器sbt : sbt-android-plugin的插件 。

有关教程和示例,另请参阅StéphaneMicheloud的“探索Android”页面: http ://lamp.epfl.ch/~michelou/android/

我用Eclipse 3.7,Scala 2.10和插件AndroidProguardScala v50validation了这个详细的解决scheme:

https://stackoverflow.com/a/11084146/1287856

一切工作正常。 一个简单的testing应用程序与scalafied主要活动类只需要38Kb。 支持库项目。 当导出项目时,Proguard被激活。

如果您使用maven,请使用android-scala-test作为启动模板。 它对我来说非常有用,而且是开箱即用的。

Scaloid是一个用Scala编写的Android API包装器,可以帮助你用Scala编写你的Android程序。

为Scala开发Android应用程序正在不断发展。 目前最好的方法是将SBT与android-sdk-plugin结合使用,这个插件在我的Scala / Android项目中保持了*效果。 也可以find一个最近的例子,说明使用这个插件与已经提到的Scaloid。

请注意,这个问题是Stack Overflow 过期问题的一个典型例子。 这个答案在某些时候也可能会过时。

*本答题中提到的其他基于SBT的项目在撰写本文时最近六个月似乎没有编写代码。 他们可能与新版本的Scala和SBT有兼容性问题。

您可以在没有SBT的情况下在Android上使用Scala,它由Gradle在外部构build,以创buildAndroid应用程序。 https://github.com/yareally/android-scala-intellij-no-sbt-plugin

Gradle是比SBT更为本地化的Android构build工具。

有很好的Scala客户端和服务器端解决scheme的例子,以及IntelliJ IDEA工作台的先进的gradle构build工具。

核心类对于客户端和服务器来说是很普遍的。

https://github.com/ghik/akkdroid

IDEA和android-plugin的好教程: http : //fxthomas.github.io/android-plugin/

Android上的Scala最大的问题是编译时间。

可能是因为在双核四核(8-CPU)上使用IDEA13 / Scala插件的Proguard类剥离编译,使用8GB的E5450 Xeon可能需要两分钟或更长的时间。

在完成一个大型的Scala Android项目之后,我简单地回到了Java,因为编译时间太令人沮丧了。