适用于Android的Scala编程


258

我已经在Scala和Android上使用Scala 2.7.3 final 跟踪了该教程。最终的Android应用程序可以运行,但是即使是最基本的应用程序也要花费几分钟(!)进行编译,并且需要900 kb的压缩率,这对于移动应用程序来说是一个停滞点。此外,IDE有时会耗尽内存。我认为dex不是针对像这样的大型图书馆scala-library

  • 所以我的问题是:有没有人真正做到过这一点,有没有解决办法?

Answers:


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


3
谢谢!我将不得不尝试一下。我想知道它是否可以与Eclipse(使用Scala和Android插件)一起使用
-Lemmy

36
Lemmy-您是否有任何理由不接受此答案?也许您找到了更好的解决方案?
波士顿,

3
以我的经验,对于大多数非平凡的scala代码而言,treeshake还不够好。只是不够积极。
詹姆斯·摩尔

45

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

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


很棒!我尝试过的所有解决方案都没有开箱即用的功能,但是您的Gradle插件为我提供了有用的反馈,因此我可以轻松地解决问题所在。
Mendelt 2011年

杰森,你还在努力吗?上一次提交是9个月前,从那时起,成绩一直是颠簸版本。
Peter Ajtai

彼得,由于Gradle现在是Android的本机构建系统,因此开发已暂停。
杰森·沃格勒



15

我使用Eclipse 3.7,Scala 2.10和插件AndroidProguardScala v50验证了此详细的解决方案:

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

一切正常。具有标称主要活动级别的简单测试应用程序仅需38Kb。支持图书馆项目。导出项目时会激活Proguard。


3
听起来很棒。部署到设备时(与部署类似的Java Android项目相比),此解决方案的构建时间如何?
evilcandybag

1
部署到设备时,构建时间约为10秒。我希望有一天会更快。
米凯尔·梅耶

6
由于一些新的良好缓存实现,使用最新的android sdk和插件大约需要1秒钟的时间。
米凯尔·梅耶

7

为Scala开发Android应用的过程正在不断发展。SBT认为,目前最好的方法是与 android-sdk-plugin在我的Scala / Android项目中得到了维护,*对我来说效果很好。还可以找到一个最近的示例,该示例演示了已在上述Scaloid中使用此插件的方法。

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

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


6

如果您使用Maven,请使用android-scala-test作为启动模板。开箱即用对我来说很棒。

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


4

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

Gradle比SBT更适用于android。

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

核心类在客户端和服务器中很常见,这是一大进步。

https://github.com/ghik/akkdroid

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


3

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

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

由于编译时间太令人沮丧,我在完成了一个比较大的Scala Android项目后才回到Java。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.