2

私は、Hello World Android アプリを scala と intellij で動作させようとしています。同じ偉業を試みた人は、次の手順に精通している必要があります。問題は、sbt を使用しているときに最後に発生します。

私が使用する各ツールのバージョンに注意してください。手始めに、Javaバージョン1.7.0_07を使用しています

-Android SDK をダウンロードしてセットアップします。1.5 (API 3) から 4.1 (API 16) までのすべてのバージョンをダウンロードしました。これについてはこれ以上詳しく説明しません。すでに多くのチュートリアルがあります。

環境変数に Android のホーム パスが必要になります。それでは、現在のユーザーに永続的な環境変数を設定しましょう

gedit ~/.pam_environment

そして今これを追加します: ANDROID_HOME= 例

ANDROID_HOME=/home/pligor/android-sdks

それでは、sbt ツールを取得しましょう。sbt を手動でインストールしたい。リンクで「Unix」セクションを見つけます: https://github.com/harrah/xsbt/wiki/Getting-Started-Setup および sbt-launch.jar をダウンロードし、~/bin に配置します。現在、これはバージョン 0.12.0 です。次に、sbt ファイルを作成します。

gedit ~/bin/sbt

この行を中に書きます:

java -Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M -jar `dirname $0`/sbt-launch.jar "$@"

スクリプトを実行可能にします。

chmod u+x ~/bin/sbt

次に、intellij 用の sbt プラグインをインストールする必要があります。sbt-idea バージョン 1.1.0:

gedit ~/.sbt/plugins/build.sbt

行内に append を追加します (各 .sbt ファイルでは、各ステートメントが余分な空行で区切られていることに注意してください):

addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.1.0")

github テンプレートの場合は、giter8 ツールが必要です。だから実行:

カールhttps://raw.github.com/n8han/conscript/master/setup.sh | し

そして実行します:

cs n8han/giter8

g8 を使用して、jberkel から Android アプリ テンプレートを取得します。

g8 jberkel/android-app

セットアップについていくつか質問があります。現在、すべてをデフォルトのままにしています。つまり、scala バージョン 2.9.1 と Android 2.3.3 (API 10)、および 1.8.RC1 の scalatest_version を使用しています。これまで使用したことがないため、プロガードに慣れていないため、useProguard を false に設定します。

sbt を実行する前に: android-plugin は現在、sbt の 0.11.3 バージョンと互換性があります。調整が必要です。したがって、新しい Android アプリケーションのフォルダー内で次を実行します: gedit project/build.properties および次の行を挿入します: sbt.version=0.11.3

同じフォルダ内で次を実行: sbt 'gen-idea no-classifiers' compile

次に、sbt インタラクティブ モード コンソールに移動します: sbt

コンソール内で次を実行します: android:package-debug

そして、これらの種類の警告が問題の始まりであると私は信じています: 処理のトラブル: 悪いクラス ファイル マジック (cafebabe) またはバージョン (0033.0000) ... my/android/project/R$id.class の解析中

android:emulator-start # avds のリストを取得するために使用します。例: android:emulator-start android2_3_3

エミュレーターが完全に起動したら、次のように Android アプリを実行します: android:start-emulator

そして、このすべての後、アプリはクラッシュします!!

4

2 に答える 2

2

問題はJavaのバージョンにあります。Java 6に戻すか、できない場合は、https://stackoverflow.com/a/7705091/203487が役立つ場合があります。

「不正なクラスファイルマジック(cafebabe)またはバージョン(0033.0000)」は、生成されたクラスファイルのバージョンがJava 7である51であることを意味します。したがって、デクサーもProGuardもこれらのクラスファイルを処理できないことは明らかです。ここでは、最新のProGuardバージョンではなく、AndroidSDKにバンドルされているバージョンについて説明します。

于 2012-09-16T10:47:48.037 に答える
0

これまでのところ成功しているセットアップについてのみ話すことができます。

  • apk妥当なサイズのを作成するには、Proguard が必要です。
  • Scalaは古く、特に Android では癖があり、Proguard に対して非常に遅いため2.10-M6、私は Scala を使用しています。2.82.9
  • それ以外のkeep class scala.collection.SeqLike { ...場合、クラスはメソッド参照を持っているのとは逆に除外されます(私はこの回避策を投稿しました)。
  • Build.scala、scalaz や libgdx などの多くの楽しいものを使用しています。これらは自由に削除してください。多くのアンドロイドのものは、さまざまなg8テンプレートから一緒にハッキングされています.thxは、それらを共有しているすべての人にとって.

だからここに私のセットアップのダンプがあります:

project/Build.scala プロジェクト/plugins.sbt

と を使用sbt 0.11.3Idea 11.1ます。sbt私はコンソールを使用してコンパイルし、主にandroid:start-deviceコマンドを使用し、時にはandroid:emulator-start RomName+ android:start-emulator. アイデアは、実行中の Android プロセスにうまく結び付けられます。

グラフィックスをあまり使わない小さなゲームを開発していますが、これまでのところ慣用的な Scala (および Scalaz でさえも) をスローダウンなしで使用しています。したがって、Android のためだけに配列、変数、および while ループに戻す必要はありません :)

幸運を!

于 2012-09-13T22:52:05.667 に答える