27

Android 向けの関数型言語、できれば Haskell に近いプログラミングに興味があります。Fregeは良い選択のようです。誰かがすでにそのような概念実証アプリケーションを作成していることがわかりましたが、そのソースや類似のものを見つけることができませんでした.

私の質問は、Android で Frege プログラムを実行する方法、それがどれほど難しいか、そして最終的な障害は何ですか?

4

5 に答える 5

6

私が見る主な障害は、現在、frege ソースを、何らかのインターフェースを実装したり、別のクラスを拡張したりする Java クラスにコンパイルできないことです。

代わりに、frege モジュールから生成された Java クラスは、静的メソッドやその他の定義したものの単なる名前空間です。

したがって、簡単な Android プロジェクトを作成するには、frege から java を呼び出すだけでは十分ではありません。これは非常に簡単ですが、java から frege を呼び出すこともできます。つまり、文字通りの意味での完全な*相互*操作性が必要になります。

もちろん、それは可能ですが、Java から簡単に使用できるようにコード生成が正確に設計されていなかったと言わざるを得ません。

私はまだ Android プロジェクトを行っていないので、どれだけのグルー コードが必要になるかわかりません。

最後に 1 つの警告: Gabriel Riba による以前の作業は、以前のバージョンのコンパイラで行われました。JDK6 をサポートする frege ディストリビューションへのリンクもあります。これは使用しないでください。最近のバージョンとは互換性がありません。

それでも引き受ける意思がある場合は、上記の Google グループを通じて可能な限りのサポートを受けることができます。誰かがこれを達成するための「標準的な」方法を作成して文書化したとしたら、それは素晴らしいことです。

于 2013-06-22T13:59:54.130 に答える
3

私は frege に詳しくなく、Android で scala やその他の JVM 言語を使用しようとしたことはありません。

そうは言っても、もし私がそのようなことをしようとした場合、これらは私がそれを機能させる方法を見つけようとするためのステップです.

  1. java -jar HelloWorld.jar HelloWorld などで実行できるシンプルなコマンドラインベースの HelloWorld タイプのアプリケーションを frege で構築します。

  2. HelloWorld.jar で dx を実行し、dalvikvm を使用して、adb シェルから Android デバイスで動作する例を取得してみてください。つまり、dalvikvm -cp blah.dex HelloWorld

  3. frege の Android sdk が提供する android.jar からクラスを参照/使用する方法を理解する

  4. fregeでActivityクラスの簡単な概念実証を構築し、そこからclasses.dexファイルを手動で構築します

  5. Java で同様の概念実証アプリケーションを構築し、既存の Android ツールを使用して apk を構築します。

  6. apk の classes.dex を置き換え、apk を再署名し、動作するかどうかを確認します

  7. そこから、aapt を使用してリソースをコンパイルし、最終的に「ゼロから」完全な apk をビルドして、frege のより良いビルド ストーリーに取り組むことができます。

于 2013-06-20T20:36:27.597 に答える