【发布时间】:2014-10-19 18:02:50
【问题描述】:
我正在考虑使用 Scala 在 Android 上构建一个应用程序,而不是使用常规的 Java(或者我猜的等价物)。值得吗?
有什么问题和不必要的头痛吗?
【问题讨论】:
我正在考虑使用 Scala 在 Android 上构建一个应用程序,而不是使用常规的 Java(或者我猜的等价物)。值得吗?
有什么问题和不必要的头痛吗?
【问题讨论】:
使用 Scala 应该很轻松,因为 dex 编译器只使用字节码 - 这正是 Scala 生成的。
那么您最大的问题是对 scala-library 的依赖,因为 dex 期望所有内容都在一个 Jar 中。这最好使用 Proguard 处理(它还会删除未使用的代码并为您提供更小的可执行文件,非常适合移动设备)
当前的最佳实践是使用带有 Android 插件的 SBT;它会为您处理一切:http://github.com/jberkel/android-plugin
如果您必须使用 Eclipse 和 Google 提供的插件,那么您将拥有一个非标准的目录结构。我还写了一篇关于如何处理的文章:http://www.assembla.com/wiki/show/scala-ide/Developing_for_Android
但请注意……这样需要付出更多的努力!
【讨论】:
There is bu.mp 的人在 2011 年 Scala 日的演讲。
免责声明:虽然他们谈论了很多他们所面临的问题,但总体体验绝对是积极的。而且,这是一个特定团队的问题,而且是次要问题。
总结:
虽然他也谈到了 IDE,但我认为这不是问题(请参阅 this 帖子,关于 Scala 环境)。使用 Scala IDE 和 IntelliJ 的人做得很好,IDE 支持越来越好。
对于单元测试,可以使用RoboSpecs(允许您在 JVM 中运行单元测试,而不是在模拟器中),这样更快。
我偶然发现的最大问题之一是 dex 格式的 limitations(每个 dex 文件不超过 65536 个方法引用)。 Scala 库根本不符合限制,因此您必须通过以下方式解决该问题:
有些人声称 IDE 存在问题,但事情很快发生了变化:当前版本的 IntelliJ IDEA 12 不仅很好地支持 Scala 作为插件,而且还包含适用于 Android 的 UI Designer。此外,您可以使用同时支持 Android(由 Google)和Scala(由 Typesafe)支持的 Eclipse。 Android Studio(基于 IDEA 的新 IDE,在 Google IO '13 上发布,由 Google 开发)支持 IDEA 插件,因此支持 Scala。
【讨论】:
我们上周五在Scala Lift Off London 讨论了这个问题,大家的共识似乎是,只要你避免使用 Actors,它通常就可以正常工作。此外,强烈推荐sbt-android-plugin。 Nathan Hamblen 的博客有 many posts on Android 和标记 Scala 的博客有很多值得关注的问题。
【讨论】: