2011-10-08 9 views
31

私はScalaの学習を始めました。私は恋に落ちていると思います。私はこれまでのところ小さなテストスニペットをコーディングしただけですが、現在Android開発に取り組んでいるので、本当にやりたいことはScalaでAndroidアプリケーションを書くことです。Scala、Android、Eclipse

私は問題の記事や質問は、しかし、ほとんどの3つのツール(AndroidのSDK /スカラ座/エクリプス)の古いバージョンを参照することがわかりましたので、一般的な質問は次のとおりです。

Androidアプリをコーディング誰です最新のSDK、Scala 2.9、Eclipse Indigoを使用してScalaで今すぐ?どのように実行可能ですか?

そして、特に:

  1. どのようにScalaの機能とAndroidのライブラリ間の相互作用/統合ですか?

  2. Eclipse用のScalaプラグインの状態は何ですか?私はあなたがそこにあると思うすべての機能を読んだことがありますが、私は最初の手の話、特にデバッガについて知りたいと思います。

  3. ビルドプロセス(dalvik、ant、proguardなどのJavaへのスカラ)はどれくらい自動化されますか?

ありがとう!

+9

+1「私は恋をしていると思う」の部分 – agilesteel

答えて

8

私たちはAndroidコードをテストするためにScalaを大きく使用しています。あなたは私たちのやり方の書き方を読むことができますhere。私たちはAntやSBTを使ってコンパイルします.Android開発用にはSBT pluginがあります。

これまで述べてきたように、私はAndroid用の制作のためにScalaをお勧めします。特にScala 2.9.xは基本的にライブラリをAndroid上で動作させる良い方法がないので使用できません。あなたは問題hereについて読むことができます。

私たちが正しく動作させるためには、Android開発がScalaから大きく利益を得ることができるため、本当に残念です。 ScalaDays 2011から

+2

私はEclipseProのAndroidProguardScalaプラグインを使ってscala 2.10でプログラミングしています(下記参照)。 Scalaは、アンドロイド開発にお勧めできます。 –

3

このビデオでは、hepfulことがあります

Scala on Android: Real-world Experience at Bump Technologiesマイケルギャルピン

EDITによって:

あなたが本当にAndroid上でScalaのコードを実行します(そして実際にアプリを作りませんしたい場合は、自分のために)、私は簡単な解決策を持っています。お使いの携帯電話が手順をサポートしているかどうかによって異なります。要約する手順は次のとおりです。(hereが説明するように)

  1. は、お使いのデバイス上のUbuntuをインストールします。これはAndroidのインストールには影響しません。

  2. Ubuntuを起動し、JDK、Scalaなどをインストールし、Scala jarをコピーしてそこから実行します。

3

私はしばらく前にScalaの2.9.0-1と書籍"Learning Android"からアンドロイドアプリ(Twitterクライアント)を実装し始めました。

私の意見では、あなたはそれを使用することができます。AsyncTaskのパラメータリストに問題が1つしかありませんでした(これはlink、問題#3を参照)。 プロジェクトをチェックアウトする場合は、hereがあります。

4

ソリューションは、Eclipse 3.7.2とScalaの2.9で、最新のAndroid SDKを使用するには、ここが見つかりました:

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

  1. それは完全にあなたが外にAndroidのライブラリを作ることができる
  2. アンドロイドライブラリを扱います通常のスケーラプロジェクト
  3. ビルドプロセスは、自動化されています。
+0

奇妙ですが真実ですが、ある日から 'scala 2.9'(正確には' 2.9.3 RC1')でビルドされたアンドロイドアプリケーションを起動することはできません。ランタイムに 'NoClassDefFound'を取得するので、対応するクラスは実際に書かれていますclasses.dexに変換します。しかし、もっと最近の 'scala 2.10.0'はほとんどうまく動作します(現時点ではアンドロイドとの奇妙な非互換性があります。例えば、' .format(...) 'メソッドはアンドロイドが正しく理解できないバイトコードを生成します。 –

+0

私もそうです。私は理由を知らない。私はarleadyがscalaに切り替えた2.10 –