2014-05-02 8 views
5

Do ostatniej aktualizacji mogłem debugować na urządzeniu. Teraz dostaję następujące błędy:Xamarin - nie można już debugować na urządzeniu -error 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. 

Oczyściłem i przebudowałem, ale bez skutku. Jakieś pomysły?

Odpowiedz

1

Mając dokładnie ten sam problem. Ale oba na zipArchive i SDWebImage. Odinstalowano - ponownie zainstalowano xamarin. Nie pomogło.

Utworzono rozwiązanie od podstaw, dodano zipArchive i dodano do sekcji "Używanie". Projekt nie jest zbudowany dla urządzenia. Ale budowanie symulatora jest w porządku.

Wysłanie e-maila do pomocy technicznej dotyczącej Xamarin.

+0

Czy otrzymałeś wsparcie od Xamarin? Nawet moja aplikacja działa poprawnie na symulatorze, ale ulega awarii na urządzeniu. – Sushant

+0

Musiałem przenieść się do komponentu innego producenta, który był utrzymywany dla Unified API, nazywa się IPWorks, jeśli pamięć służy – Chad

9

Okazuje się ten błąd jest spowodowany poprawą surowości nowego domyślnego statycznej sekretarz:

Można obejść ten problem tymczasowo żądając że Xamarin .iOS używają rejestratora legacy. Aby to zrobić, dodaj "--registrar: legacy" w "Opcjach projektu -> Kompilacja iOS -> Dodatkowe argumenty mtouch".

Zespół składników skontaktował się również z autorami składnika ZipArchive, aby poinformować go o problemach z nowym rejestratorem, ale nie odpowiedzieli jeszcze. W przypadku gdy nie dostarczą one wkrótce aktualizacji, możesz spojrzeć na przejście do powiązania typu open-source dla tej samej biblioteki napisanego przez zespół Xamarin components [1]. Ostrożność z tym wiązaniem polega na tym, że nazwy metod i klas mogą różnić się od nazw w składniku ZipArchive, a przestrzenie nazw są zdecydowanie inne. Musisz więc odpowiednio zaktualizować nazwy w swojej aplikacji.

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

+0

Dla mnie działało - ten problem zaczął się mi dziać po uaktualnieniu do Xamarin 3. – voidsstr

+0

Otrzymuję ten błąd, kiedy dodano dotychczasowego rejestratora "Dotychczasowi rejestratorzy (--registrar: legacy | legacystatic | legacydynamic) nie są obsługiwani przez Unified API. (MT0038)". Jakie jest rozwiązanie dla zunifikowanego API? – Anoop

+0

@Noop, musisz przełączyć się do biblioteki, która była utrzymywana przez jej autorów i jest aktualna (lub przełączyć się do biblioteki z otwartym kodem źródłowym, abyś mógł ją zaktualizować samodzielnie). Zwłaszcza w przypadku ZipArchive możesz wypróbować [powiązanie open source wymienione w odpowiedzi] (https://github.com/mono/monotouch-bindings/tree/master/ZipArchive). –