# Windows Üzerinde Native Kütüphanelerle iOS Uygulamalarının Hata Ayıklaması
Bir Windows makinesinden .NET MAUI iOS uygulamasında hata ayıklarken, IronOCR gibi yerel üçüncü taraf kütüphaneleri yüklenemez. Uygulama bağlı bir iPhone'da başlatılabilir, ancak IronOCR'un bağımlı olduğu yerel Tesseract kodu düzgün bir şekilde yüklenmez.
```txt
Failed to locate 'libtesseract.5'...
Access to the path ... is denied.
```
Neden, Apple'ın sıkı kontrol altındaki geliştirme modelidir. iOS uygulamaları, geçerli bir Apple Developer sertifikası ile **imzalanmalıdır**, yerel kütüphaneler **ARM64 için derlenmeli** ve Apple araç zincirleri aracılığıyla bağlanmalıdır ve uygulamalar, çalışma zamanında dosya sistemi erişimini kısıtlayan **katı bir sandboxing** altında çalışır. Apple'ın araçları (`Xcode`, `codesign`, `lipo`) yalnızca macOS'ta çalışır, bu yüzden bir Windows makinesi, yerel kütüphaneyi tam olarak paketleyemez veya imzalayamaz. Windows'da hata ayıklarken, Tesseract binary'i genellikle eksik, imzasız veya sandbox tarafından engelli şekilde sonuçlanır, bu da yukarıdaki hataları üretir.
Aynı kod tabanı Android veya Windows hedeflerinde sorunsuz çalıştığı için bu durumdur: bu platformlar, yerel kütüphaneleri Apple's imzalama gereklilikleri olmaksızın yükler ve IronOCR'un bağlı olduğu Tesseract beklendiği gibi çalışır.
## Çözüm
### 1. Bir Mac üzerinden derleyin
MacOS üzerinde doğrudan geliştirin veya Visual Studio'nun **Pair to Mac** özelliğini kullanarak iOS derlemelerini bir Mac'e yönlendirin, enquanto Windows üzerinde kod yazarken. Derlemeyi Apple's araç zinciri yoluyla yönlendirmek, yerel kütüphanenin doğru bir şekilde derlenmesi ve imzalanması için tek yoludur.
### 2. IronOCR'un kendi kütüphanelerini dağıtmasına izin verin
Yerel kütüphane dosyalarını elle kopyalamayın veya taşımayın. IronOCR, Tesseract'ı sizin için dağıtır ve yolları elle düzenlemek iOS paketleme modelini bozar.
[[w:(iOS'da yerel kütüphaneleri manuel kopyalamak genellikle yukarıdaki sandbox erişim hatalarını tetikler. Dağıtımı IronOCR'a bırakın, ardından Apple's dağıtım kurallarını tamamen anlamadıkça.)]]
### 3. macOS üzerinden gerçek cihazlarda test yapın
Testlerinizi fiziksel bir iPhone veya bir Mac'ten başlatılan iOS simülatörüne karşı çalıştırın. Bu, imzalı, sandboxed uygulamanın nasıl davrandığına dair doğru bir resim verir, ki bir Windows hata ayıklama oturumu üretilemez.
Bir Windows makinesinden .NET MAUI iOS uygulamasında hata ayıklarken, IronOCR gibi yerel üçüncü taraf kütüphaneleri yüklenemez. Uygulama bağlı bir iPhone'da başlatılabilir, ancak IronOCR'un bağımlı olduğu yerel Tesseract kodu düzgün bir şekilde yüklenmez.
Failed to locate 'libtesseract.5'...Access to the path ... is denied.
Failed to locate 'libtesseract.5'...
Access to the path ... is denied.
Text
Neden, Apple'ın sıkı kontrol altındaki geliştirme modelidir. iOS uygulamaları, geçerli bir Apple Developer sertifikası ile imzalanmalıdır, yerel kütüphaneler ARM64 için derlenmeli ve Apple araç zincirleri aracılığıyla bağlanmalıdır ve uygulamalar, çalışma zamanında dosya sistemi erişimini kısıtlayan katı bir sandboxing altında çalışır. Apple'ın araçları (Xcode, codesign, lipo) yalnızca macOS'ta çalışır, bu yüzden bir Windows makinesi, yerel kütüphaneyi tam olarak paketleyemez veya imzalayamaz. Windows'da hata ayıklarken, Tesseract binary'i genellikle eksik, imzasız veya sandbox tarafından engelli şekilde sonuçlanır, bu da yukarıdaki hataları üretir.
Aynı kod tabanı Android veya Windows hedeflerinde sorunsuz çalıştığı için bu durumdur: bu platformlar, yerel kütüphaneleri Apple's imzalama gereklilikleri olmaksızın yükler ve IronOCR'un bağlı olduğu Tesseract beklendiği gibi çalışır.
Çözüm
1. Bir Mac üzerinden derleyin
MacOS üzerinde doğrudan geliştirin veya Visual Studio'nun Pair to Mac özelliğini kullanarak iOS derlemelerini bir Mac'e yönlendirin, enquanto Windows üzerinde kod yazarken. Derlemeyi Apple's araç zinciri yoluyla yönlendirmek, yerel kütüphanenin doğru bir şekilde derlenmesi ve imzalanması için tek yoludur.
2. IronOCR'un kendi kütüphanelerini dağıtmasına izin verin
Yerel kütüphane dosyalarını elle kopyalamayın veya taşımayın. IronOCR, Tesseract'ı sizin için dağıtır ve yolları elle düzenlemek iOS paketleme modelini bozar.
Uyarı: iOS'da yerel kütüphaneleri manuel kopyalamak genellikle yukarıdaki sandbox erişim hatalarını tetikler. Dağıtımı IronOCR'a bırakın, ardından Apple's dağıtım kurallarını tamamen anlamadıkça.
3. macOS üzerinden gerçek cihazlarda test yapın
Testlerinizi fiziksel bir iPhone veya bir Mac'ten başlatılan iOS simülatörüne karşı çalıştırın. Bu, imzalı, sandboxed uygulamanın nasıl davrandığına dair doğru bir resim verir, ki bir Windows hata ayıklama oturumu üretilemez.
Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.