我在Mono for Android项目中创建了一个相当简单的Activity:
[Activity(Label = "AndroidApplication1", MainLauncher = true, Icon = "@drawable/icon")]
public class Activity1 : Activity
{
private string value = "intitial";
[Export]
public string GetString()
{
return value;
}
[Export]
public void SetString(string newValue)
{
value = newValue;
}
}
Run Code Online (Sandbox Code Playgroud)
该活动应仅作为概念验证,因此其简单性.现在,我希望能够从基于Java的"普通"Android应用程序调用方法GetString().
在Xamarin的文档中,我已经阅读了Java to Managed interop,这似乎正是我正在寻找的.如果我理解正确,当Mono for Android应用程序编译时,它会生成称为Android Callable Wrappers(ACW)的Java类.然后我应该可以从基于Java的Android应用程序调用这些ACW上的方法.
问题是,我如何从基于Java的Android应用程序引用编译的Mono for Android应用程序(apk文件)?
这是我现在卡住的地方,无法找到任何具体的例子.这里有类似的问题(这个和这一个)和一些博客,但它们只是归结为"使用ACW".但到底怎么样?也许我错过了一些明显的东西,不是Android家伙.
我试过的是动态加载我从我的Mono for Android apk中拉出来的dex文件.我只是把它放在存储卡上,然后尝试使用基于Java的Android应用程序加载它(我已经关注了这篇博文).找到了ACW类,但是当我尝试创建它的实例时,我收到以下错误:DexClassLoader
找不到本机Lmno/android/Runtime; .register(Ljava/lang/String; Ljava/lang/Class; Ljava/lang/String;)的实现
我想我必须以某种方式将Mono …