Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Genel bakış
Yerel Kitaplık Birlikte Çalışma (eski adıyla "İnce Bağlama" yaklaşımı), Android için .NET, iOS için .NET ve Mac için .NET Catalyst uygulamaları da dahil olmak üzere .NET MAUI uygulamalarında yerel SDK'lara erişmek için kullanılan bir deseni ifade eder. Fikir, .NET'ten çağırmak istediğiniz yerel SDK'lara basitleştirilmiş bir API yüzeyiyle kendi soyutlamanızı veya ince "sarmalayıcınızı" oluşturmaktır. Yerel "sarmalayıcı" kitaplığı/çerçeve projeleri, Objective-C/Swift kullanılarak Java/Kotlin ve/veya Xcode kullanılarak Android Studio'da oluşturulur. Bu yaklaşım özellikle SDK'nın API yüzeyinin yalnızca küçük bir dilimine ihtiyacınız olduğunda faydalıdır, ancak daha büyük API yüzeyi kullanımı için de aynı şekilde çalışır.
Yerel Kitaplık Birlikte Çalışma'nın ne zaman ve neden kullanılacağını anlama
Yerel Kitaplık Birlikte Çalışma, yerel kitaplıklarla tümleştirmeye yönelik çok etkili bir yaklaşımdır, ancak her zaman projeniz için en uygun seçenek olmayabilir. Genel olarak, bağlamaları zaten koruyorsanız ve bunu rahatça yapmaya devam ediyorsanız yaklaşımları değiştirmenize gerek yoktur. Bir kitaplığın API'sinin kapsamlı bir şekilde kullanılmasını gerektiren projeler veya .NET MAUI geliştiricilerini destekleyen satıcılar için geleneksel bağlamalar yine de daha uygun olabilir. Ancak Yerel Kitaplık Birlikte Çalışma, anlaşılması, uygulanması ve bakımı genellikle daha kolay olan bir alternatif sunar.
Yerel Kitaplık Birlikte Çalışma özelliğinin temel avantajlarından biri, basit API yüzeyleriyle etkili olmasıdır. Sarmalayıcılar yalnızca .NET tarafından desteklenen ilkel türler içerdiğinde, mevcut bağlama araçları genellikle geleneksel bağlamalar için gerekli olan en düşük el ile müdahale ile güvenilir tanımlar oluşturabilir. Bu, özellikle sarmalayıcı API uygulaması genellikle SDK belgelerini izlediğinden ve genellikle satıcı belgelerinden doğrudan kopyalamaya izin verdiğinden işlemi basitleştirir.
İlk kurulum daha karmaşık olsa da, temel SDK'larda güncelleştirmeleri yönetmek genellikle daha az çaba gerektirir. Güncelleştirmeler genellikle yalnızca sürümü ayarlamayı ve projeyi yeniden derlemeyi içerir. API yüzeylerinde veya SDK'larda hataya neden olan değişiklikler olsa bile sarmalayıcı API yüzeyinin ve .NET uygulamasının kullanımının kararlı kalma olasılığı daha yüksektir ve geleneksel bağlamalara kıyasla daha az ayarlama gerektirir.
Özetle, Yerel Kitaplık Birlikte Çalışma çeşitli avantajlar sağlar:
- Yerel diller ve araçlarla aşağıdaki SDK belgelerini basitleştirir
- Çalışma bağlamaları oluşturmak için daha az el ile müdahale gerektirir
- Bakımı kolaylaştırır ve gerekli güncelleştirmelerin sıklığını azaltır
- Temel alınan SDK'lardaki değişikliklerden uygulamanın yalıtımını iyileştirir
Bağımlılık zincirlerini çözmek (özellikle Android'de) geleneksel bağlamalarla benzer çaba gerektirse de, kolaylaştırılmış uygulama ve bakım avantajları Yerel Kitaplık Birlikte Çalışma'yı birçok proje için cazip bir seçim haline getirir.
Maui.NativeLibraryInterop'ı anlama
Yerel Kitaplık Birlikte Çalışma aracılığıyla oluşturulan bağlamaları oluşturma ve koruma konusunda önemli bir zorluk, yerel projeleri, bunların yerel bağımlılıklarını, derleme çıkışlarını ve .NET Bağlama kitaplık projesini el ile bir araya getirmedir. Maui.NativeLibraryInterop , örnekleri kendi uygulamanızın ihtiyaçlarına göre oluşturup özelleştirerek işleme hızlı bir başlangıç oluşturmanıza yardımcı olur.
Bunun bir bölümü, MSBuild çağrıları aracılığıyla derleme işleminin bölümlerini düzenlemeyi içerir. Buna şunlar dahil olabilir:
- Yerel SDK bağımlılıklarını çözme veya indirme
- Yerel ince bağlama projesini ve bağımlılıklarını oluşturma
- Gerekli yerel yapıtları beklenen çalışma dizinine taşıma
- Bağlama kitaplığı projesi için API tanımı oluşturma
Android bağlama projeleri, Gradle projesini oluşturmak için kullanılacak bir build.gradle dosyasına işaret eden bir @(AndroidGradleProject)
öğesi ekleyecektir.
<ItemGroup>
<AndroidGradleProject Include="../native/build.gradle.kts" >
<ModuleName>newbinding</ModuleName>
<!-- Metadata applicable to @(AndroidLibrary) will be used if set, otherwise the following defaults will be used:
<Bind>true</Bind>
<Pack>true</Pack>
-->
</AndroidGradleProject>
</ItemGroup>
iOS bağlama projeleri yerel sarmalayıcı Xcode projesine işaret eden bir @(XcodeProject)
öğe ekler:
<ItemGroup>
<XcodeProject Include="../native/NewBinding/NewBinding.xcodeproj">
<SchemeName>NewBinding</SchemeName>
<!-- Metadata applicable to @(NativeReference) will be used if set, otherwise the following defaults will be used:
<Kind>Framework</Kind>
<SmartLink>true</SmartLink>
-->
</XcodeProject>
</ItemGroup>
Android bağlama projeleri, Metadata.xml dönüştürme dosyası aracılığıyla uygulananlar gibi isteğe bağlı el ile yapılan değişiklikleri dikkate alarak API tanımını otomatik olarak oluşturur.
iOS bağlama kitaplığı projesi açıkça tanımlanmış bir API içermelidir. Bu konuda yardımcı olmak için, sonuçta elde edilen yerel çerçevede Objective-Sharpie çalıştırılmalı ve yanında bir API tanım dosyası (ApiDefinition.cs) oluşturulmalıdır. Bu, iOS bağlama projesi tarafından kullanılan ApiDefinition.cs dosyasını oluştururken ve korurken yararlı bir başvuru görevi görür.
Gerekli yerel bağımlılıklar bağlama derlemesine eklenir. Bir .NET projesi yerel projeye başvuru eklediğinde, yerel bağımlılıklar uygulamaya otomatik olarak eklenir.
.NET MAUI Community Toolkit