C # .dll-Bibliothek in der Android App

9

Ich verwende derzeit Monodroid, um eine Android App zu entwickeln. Ich bin ziemlich neu in Telefon-Apps, also bin ich über ein paar Dinge verwirrt:

  1. Was ist per Definition eine Android-Bibliothek? Ich benutze die Mono-Vorlage, um Android-Bibliothek zu erstellen: Erstellen Sie ein Mono für Android-Klassenbibliothek = & gt; schreibe den Code und baue ihn in .dll = & gt; mit Emulator von Visual Studio ausführen und es funktioniert gut im Emulator. Aber ist die .dll-Datei eine Android-Bibliothek? Oder es wird von Mono konvertiert, bevor man an dem Emulator arbeitet und die 'REAL' Android-Bibliothek sollte JAR sein?

  2. Kann ich meine in C # geschriebene .dll direkt verwenden, um diese App zu erstellen? Ich habe es in Mono versucht, indem ich es direkt in meiner Android App referenziere und es baut, keine Fehler. Aber wenn der Emulator diese App ausführt, bleibt sie hängen (immer noch kein Fehler) - wie kann man c # .dll im Android App-Projekt verwenden?

Mir ist klar, dass es eine Reihe von Themen gibt, die die Verbindung zwischen c # und android und über mono diskutieren, aber nach dem Lesen kann ich immer noch nicht mit diesem Problem der Bibliotheksreferenz umgehen, also würde jemand, der einen Hinweis / Gedanken anbietet, am meisten geschätzt werden >     

lynnyilu 06.12.2011, 02:41
quelle

1 Antwort

3
  1. Die generierte DLL wird mit dem Mono-Profil für Android kompiliert, das auf Moonlight basiert (Monos Implementierung von Silverlight). Zur Laufzeit wird .NET-Code direkt für die Mono-Laufzeit ausgeführt, die als Teil Ihrer Anwendung ausgeführt wird. Wenn .NET-Code etwas von der Java-Seite ableitet (z. B. Java.Lang.Object), generiert Mono für Android aufrufbare Wrapper um die Kommunikation zwischen den Laufzeiten zu verwalten.
  2. Technisch gesehen können Sie eine normale .NET DLL in Ihrer Mono für Android Anwendung verwenden, aber ich würde es nicht empfehlen. Das von Mono für Android bereitgestellte Profil ist viel kleiner als das des gesamten .NET-Frameworks (und entspricht nicht einmal vollständig dem von Silverlight). Wenn also Ihre DLL auf eine Methode verweist, die in Mono für Android nicht gefunden wird Anwendung wird abstürzen. Stattdessen würde ich empfehlen, eine separate Klassenbibliothek für Ihre Anwendung zu erstellen und Quelldateien projektübergreifend über Dateiverknüpfungen freizugeben. Mein Blogeintrag hier enthält ein Beispiel wie man das macht.
Greg Shackles 06.12.2011, 04:25
quelle

Tags und Links