Android应用中的C#.dll库

时间:2011-12-06 02:41:22

标签: c# android dll xamarin.android

我目前正在使用Monodroid开发Android应用程序。我对手机应用程序很陌生,所以对于几件事感到困惑:

  1. 定义什么是android库?我使用Mono模板创建android库:为Android类库创建一个Mono =>编写代码并构建到.dll =>从Visual Studio运行模拟器,它在模拟器中工作正常。但是.dll文件是一个安卓库吗?或者在使用模拟器之前由Mono转换,'REAL'安卓库应该是JAR?

  2. 我可以直接使用我用C#编写的定义的.dll来制作这款应用吗?我通过直接在我的Android应用程序中引用它在Mono中尝试它并且它正在构建,没有错误。但是当模拟器运行这个应用程序时,它会被卡住(仍然没有错误) - 在Android应用程序项目中使用c#.dll的正确方法是什么?

  3. 我意识到有很多主题讨论c#和android之间的联系以及单声道但是在阅读之后我还是无法解决这个库引用问题,所以如果有人能提供任何提示/想法将是最受欢迎的

1 个答案:

答案 0 :(得分:3)

  1. 生成的DLL是针对Mono for Android profile编译的,part of your application基于Moonlight(Mono的Silverlight实现)。在运行时,.NET代码直接针对运行为callable wrappers的Mono运行时运行。当.NET代码从Java端子类化(例如Java.Lang.Object)时,Mono for Android会生成blog post here来处理运行时之间的通信。
  2. 从技术上讲,您可以在Mono for Android应用程序中使用普通的.NET DLL,但我不推荐它。 Mono for Android公开的配置文件比完整的.NET框架小得多(甚至不完全等同于Silverlight),所以如果你的DLL引用了Mono for Android中找不到的方法,那么你的应用程序将崩溃。相反,我建议为您的应用程序创建一个单独的类库,并使用文件链接跨项目共享源文件。我的{{3}}包含了如何执行此操作的示例。