Java コードから Mono for Android で C# ライブラリを使用する可能性はありますか? mtouch コマンドの「--xcode」フラグを使用して、Objective-C から C# (MonoTouch) に変換することができます。しかし、Mono for Android に相当するものはありますか?
そして、それを行う理由はありますか?
ありがとう!
グウェニン
Java コードから Mono for Android で C# ライブラリを使用する可能性はありますか? mtouch コマンドの「--xcode」フラグを使用して、Objective-C から C# (MonoTouch) に変換することができます。しかし、Mono for Android に相当するものはありますか?
そして、それを行う理由はありますか?
ありがとう!
グウェニン
【できること】JavaコードからMono for AndroidでC#ライブラリを利用することはできますか?
はい。すべてのJava.Lang.Objectサブクラスには、ビルド時に生成されるAndroid Callable Wrapperがあります。Android Callable Wrapper は、Java コードがマネージド コードを呼び出せるようにするために存在します (たとえば、Activity.OnCreate()をオーバーライドすると、 Android はマネージド オーバーライドを実際に呼び出すことができます。
ただし、いくつかの制限があります。特に、Android Callable Wrapper で宣言されている唯一のメソッドは、オーバーライドされたメソッドと、実装されたインターフェースからのメソッドです。これにより、Java->C# のシナリオが複雑になります。
【それをする理由はありますか?】
はい。現在、C# を使用できない状況がいくつかあります。android.jar
たとえば、Maps APIの外部にある型を使用する場合などです。( Android.Runtime.JNIEnvがありますが、サブクラス化のシナリオでは機能しません。) そのため、Java API を利用する最も簡単な方法は、Java でコードの一部を記述してから、Java とマネージド コードを統合することです。個別のアクティビティ (Activity.startActivity() を使用して Java からマネージド アクティビティを起動する)、 JNIEnv
、サービスなど、さまざまなメカニズムを介して。