Android应用中的C#.dll库

lyn*_*ilu 9 c# dll android 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的正确方法是什么?

我知道有很多主题讨论c#和android之间的联系以及单声道但是在阅读之后我仍然无法解决这个库引用问题所以如果有人能提供任何提示/想法将是非常感激

Gre*_*les 3

  1. 生成的 DLL 是根据Mono for Android 配置文件进行编译的,该配置文件基于 Moonlight(Mono 的 Silverlight 实现)。在运行时,.NET 代码直接针对作为应用程序的一部分运行的 Mono 运行时运行。当.NET 代码从Java 端继承某些内容(例如Java.Lang.Object)时,Mono for Android 会生成可调用包装器来处理运行时之间的通信。
  2. 从技术上讲,您可以在 Mono for Android 应用程序中使用普通的 .NET DLL,但我不推荐它。Mono for Android 公开的配置文件比完整的 .NET 框架小得多(甚至不完全等同于 Silverlight),因此,如果您的 DLL 引用了 Mono for Android 中未找到的方法,那么您的应用程序将崩溃。相反,我建议为您的应用程序创建一个单独的类库,并使用文件链接在项目之间共享源文件。我的博客文章包含如何执行此操作的示例。