2014-05-02 3 views
5

Bis zum letzten Upgrade konnte ich auf einem Gerät debuggen. Ich bekomme jetzt folgende Fehler:Xamarin - kann nicht mehr auf dem Gerät debuggen - Fehler MT5211

Undefined symbols for architecture armv7: 
"_OBJC_CLASS_$_ZipArchiveDelegate", referenced from: 
    objc-class-ref in registrar.armv7.o 
    _OBJC_CLASS_$_MiniZip_ZipArchive_ZipArchive__ZipArchiveDelegate in registrar.armv7.o 
"_OBJC_METACLASS_$_ZipArchiveDelegate", referenced from: 
    _OBJC_METACLASS_$_MiniZip_ZipArchive_ZipArchive__ZipArchiveDelegate in registrar.armv7.o 
ld: symbol(s) not found for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

error MT5211: Native linking failed, undefined Objective-C class: _OBJC_CLASS_$_ZipArchiveDelegate. If '_OBJC_CLASS_$_ZipArchiveDelegate' is a protocol from a third-party binding, please check that it has the [Protocol] attribute in its api definition file, otherwise verify that all the necessary frameworks have been referenced and native libraries are properly linked in. 
error MT5210: Native linking failed, undefined symbol: _OBJC_METACLASS_$_ZipArchiveDelegate. Please verify that all the necessary frameworks have been referenced and native libraries are properly linked in. 
error MT5202: Native linking failed. Please review the build log. 

habe ich gereinigt, und umgebaut, aber ohne Erfolg. Irgendwelche Ideen?

Antwort

1

Das exakt gleiche Problem haben. Aber sowohl auf zipArchive als auch auf SDWebImage. Deinstalliert-Xamarin neu installiert. Hat nicht geholfen.

Erstellt eine Lösung von Grund auf neu, fügte zipArchive hinzu und fügte dem using-Abschnitt hinzu. Das Projekt wird nicht für das Gerät erstellt. Aber für den Simulator zu bauen ist in Ordnung.

Emailed Xamarin Unterstützung für Hilfe.

+0

Sie Unterstützung von Xamarin gekommen? Selbst meine App funktioniert gut im Simulator, stürzt aber auf dem Gerät ab. – Sushant

+0

Ich musste zu einer anderen Hersteller-Komponente wechseln, die für Unified API gepflegt wurde, sie werden IPWorks genannt, wenn Speicher dient – Chad

9

Es stellt sich heraus, dieser Fehler durch die verbesserte Genauigkeit der neuen Standard-statischen Registrar verursacht:

Sie können das Xamarin vorübergehend das Problem umgehen, durch Anforderung .iOS verwenden Sie den legacy Registrar. Fügen Sie dazu "--registrar: legacy" unter "Projektoptionen -> iOS Build -> Zusätzliche Mtouch-Argumente" hinzu.

Das Components-Team hat auch die Autoren der ZipArchive-Komponente kontaktiert, um sie über die Probleme mit dem neuen Registrator zu informieren, aber sie haben noch nicht geantwortet. Falls sie nicht bald ein Update bereitstellen, können Sie den Übergang zu einer Open-Source-Bindung für die gleiche Bibliothek betrachten, die vom Xamarin-Komponenten-Team geschrieben wurde [1]. Eine Vorsichtsmaßnahme bei dieser Bindung besteht darin, dass sich die Methoden- und Klassennamen möglicherweise von denen in der ZipArchive-Komponente unterscheiden, und die Namespaces sind definitiv unterschiedlich. Daher müssen Sie die Namen in Ihrer App entsprechend aktualisieren.

[1] https://github.com/mono/monotouch-bindings/tree/master/ZipArchive

+0

Arbeitete für mich - dieses Problem begann mit mir passiert, wenn ich auf Xamarin 3 aktualisiert. – voidsstr

+0

Ich bekomme diesen Fehler, wenn ich Legacy-Registrar hinzugefügt "Die Legacy-Registrare (--registrar: legacy | legacestatic | legacydynamic) werden von der Unified API nicht unterstützt. (MT0038)". Was ist die Lösung für eine einheitliche API? – Anoop

+0

@Noop, Sie müssen zu einer Bibliothek wechseln, die von ihren Autoren gepflegt wurde und auf dem neuesten Stand ist (oder zu einer Open-Source-Bibliothek wechseln, so dass Sie sie selbst aktualisieren können). Insbesondere für ZipArchive können Sie die in der Antwort erwähnte [Open-Source-Bindung] (https://github.com/mono/monotouch-bindings/tree/master/ZipArchive) ausprobieren. –