262

I have followed the tutorial at Scala and Android with Scala 2.7.3 final. The resulting Android App works but even the most basic application takes several minutes (!) to compile and needs 900 kb compressed, which is a show stopper for mobile applications. Additionally, the IDE runs out of memory every now and then. I assume dex is not made for big libraries like the scala-library.

  • So my question is: Has anyone actually done this and is there any cure for this?
4

9 回答 9

128

我已经用 Scala 编写了一些基本的 Android 应用程序,没有什么史诗般的。不是 Java 程序员,有人建议我使用“treeshake”,一位朋友向我解释说,这会从jar文件中删除所有不必要的库。

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

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

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

此外,谷歌刚刚实现了 JACK,它处理了大量减少构建和内存时间的问题,请参阅https://source.android.com/source/jack.html

于 2009-04-20T16:24:49.227 回答
45

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

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

于 2010-04-12T20:59:53.013 回答
22

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

于 2010-06-17T09:06:12.210 回答
19

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

于 2010-07-14T09:06:27.577 回答
15

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

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

一切正常。一个带有扩展的主要活动类的简单测试应用程序只需要 38Kb。支持图书馆项目。导出项目时会激活 Proguard。

于 2012-06-18T14:31:13.333 回答
7

为 Scala 开发 Android 应用程序正在不断发展。在 SBT 看来,目前最好的方法是与android-sdk-plugin结合使用,它得到了维护*,并且在我的 Scala/Android 项目中对我来说效果很好。还可以找到一个最近的示例,该示例演示了如何将这个插件与已经提到的 Scalaid 一起使用。

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

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

于 2014-05-26T09:24:32.990 回答
6

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

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

于 2012-10-15T03:53:10.617 回答
4

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

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

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

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

https://github.com/ghik/akkdroid

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

于 2013-12-07T19:10:56.660 回答
3

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

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

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

于 2014-10-01T00:49:08.167 回答