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.
Uyarı
Bu özellik yalnızca .NET 9+ ile kullanılabilir.
Bir bağlama projesi için Java bağımlılık doğrulaması <AndroidMavenLibrary> aracılığıyla otomatik olarak veya <AndroidLibrary> aracılığıyla el ile etkinleştirildikten sonra, şu tür hatalarla karşılaşabilir ve düzeltmeniz gerekebilir:
error : Java dependency 'androidx.collection:collection' version '1.0.0' is not satisfied.
Bu bağımlılıklar birçok farklı yolla karşılanabilir.
<PackageReference>
En iyi durumda, java bağımlılığının NuGet.org üzerinde zaten mevcut bir bağlaması vardır. Bu paket Microsoft veya .NET topluluğu tarafından sağlanabilir. Microsoft tarafından hazırlanan paketler, hata iletisinde aşağıdaki gibi görünebilir.
error : Java dependency 'androidx.collection:collection' version '1.0.0' is not satisfied. Microsoft maintains the NuGet package 'Xamarin.AndroidX.Collection' that could fulfill this dependency.
Projeye Xamarin.AndroidX.Collection paketini eklemek, paketin androidx.collection:collection bağımlılığını sağladığını tanıtması için gerekli meta verileri sağladığından, bu hatayı otomatik olarak çözmelidir. Bu, özel hazırlanmış bir NuGet etiketi aranarak yapılır. Örneğin, AndroidX Koleksiyonu kitaplığı için etiket şöyle görünür:
<!-- artifact={GroupId}:{ArtifactId}:{Java Library Version} -->
<PackageTags>artifact=androidx.collection:collection:1.0.0</PackageTags>
Ancak bir bağımlılığı karşılayan ancak bu meta verileri eklememiş NuGet paketleri olabilir. Bu durumda, paketin ile JavaArtifacthangi bağımlılığı içerdiğini açıkça belirtmeniz gerekir:
<PackageReference
Include="Xamarin.Kotlin.StdLib"
Version="1.7.10"
JavaArtifact="org.jetbrains.kotlin:kotlin-stdlib:1.7.10" />
Bununla, bağlama işlemi Java bağımlılığının NuGet paketi tarafından karşılandığından emin olur.
Uyarı
NuGet paketleri kendi bağımlılıklarını belirtir, bu nedenle geçişli bağımlılıklar konusunda endişelenmeniz gerekmez.
<ProjectReference>
Gerekli Java bağımlılığı, çözümünüzdeki başka bir proje tarafından sağlanıyorsa, karşıladığı bağımlılığı belirtmek için <ProjectReference> üzerine anotasyon ekleyebilirsiniz.
<ProjectReference
Include="..\My.Other.Binding\My.Other.Binding.csproj"
JavaArtifact="my.other.binding:helperlib:1.0.0" />
Bununla bağlama işlemi, Başvurulan proje tarafından Java bağımlılığının karşılandığından emin olur.
Uyarı
Her proje kendi bağımlılıklarını belirtir, bu nedenle geçişli bağımlılıklar konusunda endişelenmeniz gerekmez.
<AndroidLibrary>
Genel bir NuGet paketi oluşturuyorsanız, NuGet bağımlılık grafiğinin çalışması için NuGet'in "paket başına bir kitaplık" ilkesini izlemek istersiniz. Ancak, özel kullanım için bağlama oluşturuyorsanız, Java bağımlılıklarınızı doğrudan üst bağlamaya dahil etmek isteyebilirsiniz.
Bu, projeye ek <AndroidLibrary> öğeler eklenerek yapılabilir:
<ItemGroup>
<AndroidLibrary Include="mydependency.jar" JavaArtifact="my.library:dependency-library:1.0.0" />
</ItemGroup>
Java kitaplığını dahil etmek ancak C# bağlamaları oluşturmamak için Bind="false" ile işaretleyin
<ItemGroup>
<AndroidLibrary Include="mydependency.jar" JavaArtifact="my.library:dependency-library:1.0.0" Bind="false" />
</ItemGroup>
Alternatif olarak, <AndroidMavenLibrary> Maven deposundan java kitaplığı almak için de kullanılabilir:
<ItemGroup>
<AndroidMavenLibrary Include="my.library:dependency-library" Version="1.0.0" />
<!-- or, if the Java library doesn't need to be bound -->
<AndroidMavenLibrary Include="my.library:dependency-library" Version="1.0.0" Bind="false" />
</ItemGroup>
Uyarı
Bağımlılık kitaplığının kendi bağımlılıkları varsa, bunların yerine getirildiğinden emin olmanız gerekir.
<AndroidIgnoredJavaDependency>
Son çare olarak, gerekli bir Java bağımlılığı yoksayılabilir. Bağımlılık kitaplığının çalışma zamanında değil yalnızca derleme türünde kullanılan java ek açıklamaları koleksiyonu olması, bunun ne zaman yararlı olduğunu gösteren bir örnektir.
Hata mesajı kaybolsa da, bu, paketin kendiliğinden çalışacağı anlamına gelmez. Bağımlılık gerçekten çalışma zamanında gerekliyse ve sağlanmadıysa Android uygulaması bir Java.Lang.NoClassDefFoundError hatayla kilitlenir.
<ItemGroup>
<AndroidIgnoredJavaDependency Include="com.google.errorprone:error_prone_annotations:2.15.0" />
</ItemGroup>
Uyarı
JavaArtifact'in herhangi bir kullanımı, birden çok artifaktı virgül veya noktalı virgülle ayırarak belirtebilir.