我正在考虑使用Scala而不是普通的Java(或者我猜的等价物)在Android上构建应用程序。值得吗?
任何问题和不必要的麻烦?
答案 0 :(得分:26)
使用Scala应该是无痛的,因为dex编译器只使用字节码 - 这正是Scala产生的。
然后你最大的问题是对scala-library的依赖,因为dex期望一切都在一个Jar中。这最好用Proguard处理(它也会删除未使用的代码并为您提供较小的可执行文件,非常适合移动设备)
目前的最佳做法是将SBT与Android插件一起使用;它会照顾你的一切:http://github.com/jberkel/android-plugin
如果您必须使用Eclipse和Google提供的插件,那么您将拥有非标准的目录结构。我还写了一篇关于如何处理这个问题的文章:http://www.assembla.com/wiki/show/scala-ide/Developing_for_Android
但要注意......这样需要付出更多的努力!
答案 1 :(得分:15)
There is来自bu.mp的人们在Scala Days 2011上的演讲。
免责声明:虽然他们谈论了他们所面临的问题,但整体体验肯定是积极的。此外,这是一个特定团队的问题,而且是次要问题。
要点:
虽然他也在讨论IDE,但我认为这不是问题(关于Scala environment ,请查看this帖子)。做Scala IDE和IntelliJ的人做得很好,IDE支持越来越好。
对于单元测试,可以使用RoboSpecs(允许您在JVM内运行单元测试,而不是在模拟器内部运行),这样更快。
我偶然发现的最大问题之一是dex格式的limitations(每个dex文件不超过65536个方法引用)。 Scala库根本不符合限制,因此您必须通过以下方法解决:
有些人声称IDE存在问题,但事情变化很快:当前版本的IntelliJ IDEA 12不仅支持Scala作为插件,而且还包含Android UI设计器。此外,您可以使用支持Android(Google)和Scala(按Typesafe)支持的Eclipse。 Android Studio(基于IDEA的新IDE,在Google IO '13上宣布并由Google开发)支持IDEA插件,因此Scala。
答案 2 :(得分:5)
我们上周五在Scala Lift Off London进行了讨论,并且一致认为,只要你避开Actors,它通常都能正常工作。此外,强烈建议使用sbt-android-plugin。 Nathan Hamblen的博客有many posts on Android,而且标记为Scala的博客也有很多值得关注的问题。