有可能从 Java 代码中将 C# 库与 Mono for Android 一起使用吗?可以使用 mtouch 命令中的“--xcode”标志从 Objective-C 到 C# (MonoTouch)。但是 Android 的 Mono 中有一个等价物吗?
有理由这样做吗?
谢谢!
格温宁
有可能从 Java 代码中将 C# 库与 Mono for Android 一起使用吗?可以使用 mtouch 命令中的“--xcode”标志从 Objective-C 到 C# (MonoTouch)。但是 Android 的 Mono 中有一个等价物吗?
有理由这样做吗?
谢谢!
格温宁
[是否可以] 从 Java 代码中将 C# 库与 Mono for Android 一起使用?
是的。每个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
、服务等。