card.io Mono für Android (Xamarin Studio)

8

Hat jemand erfolgreich einen card.io Wrapper erstellt, den sie teilen möchten, der in einer Mono-Anwendung für Android verwendet werden kann, oder kann jemand etwas Licht auf das werfen, was ich falsch mache?

  1. Erstellen Sie eine neue Android Java Bindings-Bibliothek Projekt
  2. Fügen Sie die .jar- und .so-Dateien von card.io SDK 3.0 hinzu. 3 , verwenden Sie unbedingt die vorhandene Ordnerstruktur
  3. Fügen Sie Folgendes zu Transforms / EnumMethods.xml hinzu, um einen Compilerfehler zu beheben:

    %Vor%
  4. Fügen Sie einen Verweis auf die obige Bibliothek in meiner Hauptanwendung
  5. hinzu

Alles kompiliert und ich kann auf die card.io Klassen zugreifen:

%Vor%

Allerdings wird mir immer der folgende Fehler angezeigt:

Dieses Gerät kann die Kamera nicht zum Lesen von Kartennummern verwenden

HINWEISE:

  • Ich habe versucht, auf verschiedenen physischen Geräten zu laufen
  • Die card.io.jar-Datei hat eine Build-Aktion von: EmbeddedJar
  • Die .so-Dateien haben eine Build-Aktion von: EmbeddedNativeLibrary
  • Ich habe den Abi für jede .so-Datei im Projekt ItemGroup explizit festgelegt

Ich bin sehr neu in Android / Xamarin, also verbringe mehr Zeit mit der Recherche als mit dem Codieren.

Die .so-Dateien scheinen nicht in der .apk-Datei enthalten zu sein

Bearbeiten:

Die .so-Dateien scheinen vom Compiler übernommen zu werden. Wenn ich nach der Kompilierung den Ordner obj / Release / überprüfe, gibt es einen Unterordner native_library_imports , der die .so-Dateien in den entsprechenden Unterordnern entsprechend dem unterstützten Abi-Typ enthält.

Die .so-Dateien erscheinen jedoch immer noch nicht in der endgültigen .apk-Datei.

logcat Ausgabe:

%Vor%

Danke

    
dalesmckay 16.04.2013, 01:23
quelle

2 Antworten

4

Nun, ich habe das nach einigen Experimenten endlich gelöst.

  1. Befolge die 4 Schritte in meinem ursprünglichen Beitrag
  2. Entpacken Sie das card.io SDK in das Stammverzeichnis des Bibliotheksprojekts, sodass Sie eine Ordnerstruktur mit folgendem Namen erhalten: ProjectRoot / libs / <the sdk files and abi subfolders>
  3. Fügen Sie die .jar-Datei zum Ordner Projekt Jars hinzu (wählen Sie die Option einen Link hinzufügen )
  4. Fügen Sie den Ordner libs zum Stammverzeichnis Ihres Projekts hinzu (mit Ausnahme der .jar-Datei)
  5. Möglicherweise müssen Sie die Datei .csproj manuell bearbeiten, um das Abi Ziel jeder .so Datei
  6. hinzuzufügen
  7. Stellen Sie sicher, dass die Datei jar über eine Build-Aktion von EmbeddedJar verfügt
  8. Stellen Sie sicher, dass die .so -Dateien über eine Build-Aktion von EmbeddedNativeLibrary verfügen

@tomwhipple - Danke für den Beitrag. Ich habe versucht, deine Antwort zu verbessern, aber anscheinend habe ich nicht genug Ansehen.

    
dalesmckay 21.04.2013, 00:12
quelle
4

Das Android-Logcat sollte eine spezifischere Fehlermeldung anzeigen, aber dieses Problem ist auf fehlende native Bibliotheken zurückzuführen. (Für normale Android-Projekte leben diese im Verzeichnis /libs mit architekturspezifischen Unterverzeichnissen.)

Dies sind die .so -Dateien, die in der .apk-Datei fehlen. Sie enthalten die gesamte Bildverarbeitungslogik, so dass card.io nicht scannen kann, wenn sie nicht dort sind.

    
tomwhipple 17.04.2013 15:22
quelle