56

私に提案されたように、IntelliJ Idea と Android と Scala を連携させる方法を説明する記事をいくつか読みましたが、それらはすべて 1、2 年前に書かれたものであることが判明しました。おそらく、その時から何かが変わっており、現在、この目標を達成するための他の解決策があります. 具体的には、https://github.com/yareally/android-scala-intellij-no-sbt-pluginで、うまく機能するかどうかわからない新しいソリューションがあります。

IntelliJ Idea 12、Android SDK、Scala、SBT、その他すべてのものをインストールしてセットアップしました。残っている唯一のことは、IntelliJ Idea 12 をセットアップして、Android アプリケーションを作成するために Java ではなく Scala で動作するようにすることです。

質問を閉じないでください。私と似たような以前の質問を見ましたが、私が言ったように、それらは時代遅れでした.

問題は、現在 (2013 年 5 月)どうすればよいかということです。

PS Android Development Studio を試してみましたが、多くのエラーのために起動することさえできませんでした。

4

5 に答える 5

21

更新: SBT-Android (0.7) の新しいバージョンについて私が書いたチュートリアルを読むことができます。あなたの懸念のほとんどはそこで対処する必要があります。そうでない場合、それは問題です。


更新 2:公平を期すために、 GitHub の @pfn によるandroid-sdk-pluginという素晴らしい作業も進行中です。

ProGuard とビルド時間について:

  • 私自身、デバイスに大きなライブラリをプリロードsbt-androidしています. これにより、ProGuard が完全に削除されますが、root が必要です。

  • android-sdk-pluginの最新バージョンは、新しい ProGuard キャッシュ ( AndroidProguardScalaと同じ) を誇っています。これは非常に優れており、ほとんどの場合、開発中に ProGuard を排除します。


私は数か月間SBT-Androidに貢献してきたので、他のソリューションよりもずっとよく知っています。

現在、プラグインは急速に進化しています。

  • IntelliJ の完全なサポート ( SBTIdeaのおかげ) は近日公開予定です(実際、既に機能しており、プル リクエストを送信するだけで済みます)
  • エミュレーターまたはルート化されたデバイスに Scala を自動的にプリロードします(実行するだけでandroid:preload-{device, emulator}、開発に Proguard はもう必要ありません!)
  • 最小限の労力ですぐに使用できる単純な Gradle プロジェクトをサポートする必要があります(ディレクトリ構造は非常に似ています)。
  • 構成ははるかに簡単です(プラグインとプロジェクト ファイルを追加するだけで準備完了です!)

現在のバージョンにはこれらの機能のほとんどがありませんが、今後数週間のうちに追加される予定です。もちろん、いくつかのドキュメントは、例と私が考えるすべてを含む、すぐ後に続く予定です。

ところで、 Scala on AndroidのGoogle グループに参加して、考えを共有することをお勧めします。#sbt-androidIRC が好きなら、Freenode にもチャンネルがあります。

于 2013-05-26T21:18:25.220 に答える
8

これに参加したかっただけです。https://github.com/yareally/android-scala-intellij-no-sbt-pluginを使用しましたが、これまでIntelliJを使用したことがなく、指示が曖昧であることがわかりました。

あなたはおそらく今までにすべてを整理し、SBT に満足しているでしょうが、私の目的のために、余分な付加機能を一切使わずに Android で Scala をテストしたかっただけです。というわけで、sbt プラグインを使わないものを機能させるために私がしなければならなかったいくつかの小さなことを以下に示します。

最終的に、scala-compiler.jar を (scala-library.jar および scala-reflect.jar と共に) グローバル ライブラリとして含めました。 ここに画像の説明を入力

そうすれば、コンパイラはライブラリとリフレクション コードにアクセスできます。そうしないと、エラーが発生していました。ライブラリをインクルードしない場合、IDE はコンパイラが関連するライブラリを必要としていると警告し、リフレクトをインクルードしない場合、コンパイル時にリフレクト クラス定義が見つからないという一連のエラーを吐き出します。

モジュールの依存関係として scala-library.jar も含める必要がありました (ライブラリ セクションにも含めるという副作用がありました)。 ここに画像の説明を入力

すべてを実行する前に、Scala プラグインをインストールし、Android プロジェクトを作成し、Scala ファセットを追加しました (メモリ設定は無視してください。私はふざけていました)。 ここに画像の説明を入力

最後に、いくつかの「-dontwarn」行を proguard txt ファイルに追加して、残りのコンパイル エラーを解決する必要がありました。十分に単純です。

魅力のように機能します。まだ実質的なことは何もしていませんが、次の Android プロジェクトで Scala を使用することを楽しみにしています。

于 2013-07-07T19:02:58.523 に答える