Android Scala编程

我已经使用Scala 2.7.3 final跟随了Scala和Android的教程。生成的Android应用程序可以工作,但即使是最基本的应用程序也需要几分钟(!)来编译,并且需要压缩900 kb,这是移动应用程序的一个显示停止器。此外,IDE会时不时地耗尽内存。我假设dex不是为scala-library这样的大型库而设计的。

  • 所以我的问题是:有人这样做过吗?有什么治疗方法吗?
66595 次浏览

我已经用Scala写了一些基本的Android应用程序,没有太大的史诗。我不是一个Java程序员,我被建议使用“摇树”,我的一个朋友解释说,这从jar文件中剥离了所有不必要的库。

我还没有记录它,但我发现其他人已经有了:

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

Proguard不是唯一的解决方案,您可能会找到适合您的工作流程或更适合您的环境的解决方案。

此外,谷歌刚刚实现了JACK,它处理了相当多的减少构建和内存时间,参见https://source.android.com/source/jack.html

现在您可以使用Gradle的Android插件在Scala中创建Android应用程序。它集成了ProGuard工具来修剪结果APK文件中的赘肉,因此似乎可以满足您的需求。

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

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

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

我用Eclipse 3.7、Scala 2.10和插件AndroidProguardScala v50验证了这个详细的解决方案:

https://stackoverflow.com/a/11084146/1287856 < a href = " https://stackoverflow.com/a/11084146/1287856 " > < / >

一切都很好。带有扩展的主活动类的简单测试应用程序只占用38Kb。支持图书馆项目。导出项目时激活Proguard。

如果使用maven,则使用android-scala-test作为启动模板。这对我来说很有效。

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

你可以在没有SBT的Android上使用Scala,它由Gradle外部构建来创建Android应用程序。 https://github.com/yareally/android-scala-intellij-no-sbt-plugin < / p >

Gradle是比SBT更适合android的原生构建工具。

这里有Scala客户端和服务器端解决方案概念的好例子,以及作为IntelliJ IDEA工作台的高级gradle构建工具。

核心类对于客户端和服务器来说是一个很大的进步。

https://github.com/ghik/akkdroid

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

为Scala开发Android应用程序正在不断发展。目前最好的方法似乎是SBT与android-sdk-plugin结合在一起,它是维护*的,在我的Scala/Android项目中工作得很好。最近的一个例子演示了这个插件与前面提到的Scaloid的使用可以也被发现

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

*在这个回答线程中提到的其他基于SBT的项目在撰写本文时的过去六个月里似乎没有为它们编写代码。它们可能与新版本的Scala和SBT存在兼容性问题。

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

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

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