2011-10-08 45 views
31

我已經開始學習Scala了,我......我想我戀愛了。到目前爲止,我只編寫了很小的測試代碼片段,但是由於我目前在Android開發方面工作,我真正想做的就是盡我所能在Scala編寫Android應用程序。Scala,Android和Eclipse

我發現對此事的文章和問題,但大多指的是舊版本的三種工具(Android SDK中/斯卡拉/ Eclipse的),所以一般的問題是:

是誰編碼Android應用現在在斯卡拉,使用最新的SDK,Scala 2.9和Eclipse Indigo?它有多可行?

而且,特別是:

  1. 怎麼樣Scala的功能和Android庫之間的相互作用/集成?

  2. 什麼是Eclipse的Scala插件的狀態?我已閱讀了您期望的所有功能,但我想知道第一手的故事,特別是關於調試器的故事。

  3. 構建過程(從java到dalvik,ant,proguard等)的自動化過程如何?

謝謝!

+9

+1爲「我認爲我愛上了」部分;) – agilesteel

回答

8

我們正在大量使用Scala來測試我們的Android代碼 - 你可以閱讀我們如何做的here。我們使用Ant或SBT進行編譯 - Android開發中有一個優秀的SBT plugin

說了這麼多,我不確定我會推薦Scala進行Android開發生產。特別是Scala 2.9.x基本上無法使用,因爲沒有好的方法讓這些庫在Android上運行。你可以閱讀關於問題here

這真的很可惜,因爲如果我們能夠正常運行,Android開發將從Scala中獲益很多。

+2

我正在用eclipse上的AndroidProguardScala插件編程scala 2.10(請參閱下文)。 Scala可以推薦用於android開發。 –

3

這從2011年ScalaDays視頻可能是hepful:

Scala on Android: Real-world Experience at Bump Technologies由邁克爾·蓋爾

編輯:

如果你真的想運行在Android上Scala代碼(而不是真正使一個應用程序,但爲你自己),然後我有一個更簡單的解決方案。這取決於您的手機是否支持該程序。總之,步驟是:

  1. 在設備上安裝的Ubuntu(如所描述的here)。這不會影響Android的安裝。

  2. 啓動Ubuntu,安裝JDK,Scala等,複製你的Scala jar並從那裏運行。

3

我開始前一陣子使用Scala 2.9.0-1實現從書"Learning Android" Android的應用程序(Twitter客戶端)。

在我看來,你可以使用它。我在AsyncTask的參數列表中只有一個問題(請參見link,問題3)。 如果你想結賬該項目,你可以找到它here

4

發現的解決方案在這裏使用了最新的Android SDK,與Eclipse 3.7.2和Scala 2.9:

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

  1. 它完全處理的Android庫
  2. 可以使Android庫出來的scala項目像往常一樣
  3. 構建過程是完全自動化的,包括使用常規Android工具對項目進行預編譯和導出。
+0

奇怪但是真的,從某一天起,我無法啓動使用'scala 2.9'(準確地說是'2.9.3 RC1')構建的android應用程序,因爲我在運行時得到了'NoClassDefFound',儘管相應的類實際上是寫入的到'classes.dex'中。但更近期的'scala 2.10.0'工作得很好(目前,與android有一些奇怪的不兼容性,例如''「.format(...)'方法生成的字節碼,android無法正確理解 –

+0

我也是。我不知道爲什麼,我已經轉向Scala 2.10 –