Aracılığıyla paylaş


.JAR’ı Bağlama

Önemli

Şu anda Xamarin platformunda özel bağlama kullanımını araştırıyoruz. Gelecekteki geliştirme çalışmalarını bilgilendirmek için lütfen bu ankete katılın.

Bu izlenecek yol, Android'den Xamarin.Android Java Bağlamaları Kitaplığı oluşturmaya yönelik adım adım yönergeler sağlar. JAR dosyası.

Genel bakış

Android topluluğu, uygulamanızda kullanmak isteyebileceğiniz birçok Java kitaplığı sunar. Bu Java kitaplıkları genellikle içinde paketlenir. JAR (Java Arşivi) biçimi, ancak bir paketleyebilirsiniz. İşlevselliğinin Xamarin.Android uygulamalarında kullanılabilmesi için Java Bağlamaları Kitaplığı'nda JAR. Java Bağlamaları kitaplığının amacı API'leri içinde yapmaktır. Jar dosyası, otomatik olarak oluşturulan kod sarmalayıcıları aracılığıyla C# kodu için kullanılabilir.

Xamarin araçları, bir veya daha fazla girişten bağlama kitaplığı oluşturabilir. JAR dosyaları. Bağlamalar Kitaplığı (.DLL derlemesi) aşağıdakileri içerir:

  • Özgün öğesinin içeriği. JAR dosyaları.

  • içinde karşılık gelen Java türlerini sarmalayan C# türleri olan Yönetilen Çağrılabilen Sarmalayıcılar (MCW). JAR dosyaları.

Oluşturulan MCW kodu, API çağrılarınızı temel alınan öğesine iletmek için JNI (Java Yerel Arabirimi) kullanır. JAR dosyası. Herhangi bir için bağlama kitaplıkları oluşturabilirsiniz. Başlangıçta Android ile kullanılmak üzere hedeflenen JAR dosyası (Xamarin araçlarının şu anda Android olmayan Java kitaplıklarının bağlamasını desteklemediğini unutmayın). Bağlamalar Kitaplığı'nı içeriğini eklemeden oluşturmayı da seçebilirsiniz. JAR dosyası, DLL'nin üzerinde bir bağımlılığı olması için. Çalışma zamanında JAR.

Bu kılavuzda, tek bir için Bağlama Kitaplığı oluşturmanın temellerini adım adım inceleyeceğiz. JAR dosyası. Her şeyin doğru gittiği bir örnekle göstereceğiz; yani bağlamalarda özelleştirme veya hata ayıklama gerekli değildir. Meta Verileri Kullanarak Bağlama Oluşturma, bağlama işleminin tamamen otomatik olmadığı ve el ile müdahale gerektiren daha gelişmiş bir senaryo örneği sunar. Java kitaplığı bağlamaya genel bir genel bakış için (temel bir kod örneğiyle) bkz . Java Kitaplığı Bağlama.

İzlenecek yol

Aşağıdaki kılavuzda, popüler bir Android olan Picasso için bağlama kitaplığı oluşturacağız. Görüntü yükleme ve önbelleğe alma işlevselliği sağlayan JAR. Xamarin.Android projesinde kullanabileceğimiz yeni bir .NET derlemesi oluşturmak üzere picasso-2.x.x.jar bağlamak için aşağıdaki adımları kullanacağız:

  1. Yeni bir Java Bağlamaları Kitaplığı projesi oluşturun.

  2. öğesini ekleyin. JAR dosyasını projeye ekleyin.

  3. için uygun derleme eylemini ayarlayın. JAR dosyası.

  4. öğesinin hedef çerçevesini seçin. JAR destekler.

  5. Bağlamalar Kitaplığı'nı oluşturun.

Bağlamalar Kitaplığı'nı oluşturduktan sonra Bağlamalar Kitaplığı'nda API'leri çağırma yeteneğimizi gösteren küçük bir Android uygulaması geliştireceğiz. Bu örnekte, picasso-2.x.x.jar yöntemlerine erişmek istiyoruz:

package com.squareup.picasso

public class Picasso
{
    ...
    public static Picasso with (Context context) { ... };
    ...
    public RequestCreator load (String path) { ... };
    ...
}

picasso-2.x.x.jar için bağlama kitaplığı oluşturduktan sonra bu yöntemleri C# dilinden çağırabiliriz. Örneğin:

using Com.Squareup.Picasso;
...
Picasso.With (this)
    .Load ("https://mydomain.myimage.jpg")
    .Into (imageView);

Bağlama kitaplığı oluşturma

Aşağıdaki adımlara başlamadan önce lütfen picasso-2.x.x.jar indirin.

İlk olarak yeni bir Bağlama Kitaplığı projesi oluşturun. Mac için Visual Studio veya Visual Studio'da yeni bir Çözüm oluşturun ve Android Bağlama kitaplığı şablonunu seçin. (Bu kılavuzdaki ekran görüntüleri Visual Studio'yu kullanır, ancak Mac için Visual Studio çok benzerdir.) Çözüm JarBinding adını verin:

Create JarBinding library project

Şablon, öğesini eklediğiniz bir Jars klasörü içerir. JAR'ları Bağlama Kitaplığı projesine. Jars klasörüne sağ tıklayın ve Varolan Öğeyi Ekle'yi > seçin:

Add existing item

Daha önce indirilen picasso-2.x.x.jar dosyasına gidin, dosyayı seçin ve Ekle'ye tıklayın:

Select jar file and click Add

picasso-2.x.x.jar dosyasının projeye başarıyla eklendiğini doğrulayın:

Jar added to project

Java Bağlamaları kitaplık projesi oluşturduğunuzda, öğesinin olup olmadığını belirtmeniz gerekir. JAR, Bağlamalar Kitaplığı'na eklenmelidir veya ayrı olarak paketlenmelidir. Bunu yapmak için aşağıdaki derleme eylemlerinden birini belirtirsiniz:

  • EmbeddedJar – . JAR, Bağlamalar Kitaplığı'na eklenir.

  • InputJar – . JAR, Bağlamalar Kitaplığı'ndan ayrı tutulur.

Genellikle EmbeddedJar derleme eylemini kullanarak . JAR otomatik olarak bağlama kitaplığına paketlenmiş. Bu en basit seçenektir: içindeki Java bayt kodu. JAR, Dex bayt koduna dönüştürülür ve APK'nıza (Yönetilen Çağrılabilen Sarmalayıcılar ile birlikte) eklenir. öğesini tutmak istiyorsanız. JAR bağlama kitaplığından ayrı olarak InputJar seçeneğini kullanabilirsiniz; ancak, öğesinin olduğundan emin olmanız gerekir. JAR dosyası, uygulamanızı çalıştıran cihazda kullanılabilir.

Derleme eylemini EmbeddedJar olarak ayarlayın:

Select EmbeddedJar build action

Ardından, Hedef Çerçeve'yi yapılandırmak için proje Özelliklerini açın. ise. JAR herhangi bir Android API'sini kullanır, Hedef Çerçeve'yi api düzeyi olarak ayarlayın. JAR bekler. Genellikle, geliştiricisi. JAR dosyası, hangi API düzeyinin (veya düzeylerinin) olduğunu belirtir. JAR ile uyumludur. (Genel olarak Hedef Çerçeve ayarı ve Android API düzeyleri hakkında daha fazla bilgi için bkz. Android API Düzeylerini Anlama.)

Bağlamalar Kitaplığınız için hedef API düzeyini ayarlayın (bu örnekte API düzeyi 19'ı kullanıyoruz):

Target API level set to API 19

Son olarak Bağlamalar Kitaplığı'nı oluşturun. Bazı uyarı iletileri görüntülenebilir, ancak Bağlamalar Kitaplığı projesinin başarıyla derlenmesi ve şu konumda bir çıkış .DLL oluşturması gerekir: JarBinding/bin/Debug/JarBinding.dll

Bağlama kitaplığını kullanma

Bu .DLL Xamarin.Android uygulamanızda kullanmak için aşağıdakileri yapın:

  1. Bağlamalar Kitaplığı'na bir başvuru ekleyin.

  2. içine çağrılar yapın. Yönetilen Çağrılabilen Sarmalayıcılar aracılığıyla JAR.

Aşağıdaki adımlarda bağlama kitaplığını kullanarak bir görüntü indirip görüntüleyen en düşük düzeyde bir ImageViewuygulama oluşturacağız; "ağır kaldırma" işlemi içinde bulunan kod tarafından gerçekleştirilir. JAR dosyası.

İlk olarak Bağlamalar Kitaplığı'nı kullanan yeni bir Xamarin.Android uygulaması oluşturun. Çözüm'e sağ tıklayın ve Yeni Proje Ekle'yi seçin; yeni projeyi BindingTest olarak adlandırın. Bu kılavuzu basitleştirmek için bu uygulamayı Bağlamalar Kitaplığı ile aynı Çözümde oluşturuyoruz; ancak Bağlamalar Kitaplığı'nı kullanan uygulama bunun yerine farklı bir Çözümde bulunabilir:

Add new BindingTest project

BindingTest projesinin Başvurular düğümüne sağ tıklayın ve Başvuru Ekle... öğesini seçin:

Right Add Reference

Daha önce oluşturulan JarBinding projesini denetleyin ve Tamam'a tıklayın:

Select JarBinding project

BindingTest projesinin References düğümünü açın ve JarBinding başvurusunun mevcut olduğunu doğrulayın:

JarBinding appears under References

BindingTest düzenini (Main.axml) tek ImageViewbir düzeni olacak şekilde değiştirin:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:minWidth="25px"
    android:minHeight="25px">
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/imageView" />
</LinearLayout>

using aşağıdaki deyimini MainActivity.cs ekleyin; bu, Bağlamalar Kitaplığı'nda bulunan Java tabanlı Picasso sınıfın yöntemlerine kolayca erişmeyi mümkün kılar:

using Com.Squareup.Picasso;

url'den OnCreate görüntü yüklemek ve içinde ImageViewgörüntülemek için sınıfını Picasso kullanması için yöntemini değiştirin:

public class MainActivity : Activity
{
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.Main);
        ImageView imageView = FindViewById<ImageView>(Resource.Id.imageView);

        // Use the Picasso jar library to load and display this image:
        Picasso.With (this)
            .Load ("https://i.imgur.com/DvpvklR.jpg")
            .Into (imageView);
    }
}

BindingTest projesini derleyin ve çalıştırın. Uygulama başlatılır ve kısa bir gecikmeden sonra (ağ koşullarına bağlı olarak), aşağıdaki ekran görüntüsüne benzer bir görüntü indirip görüntülemelidir:

Screenshot of BindingTest running

Tebrikler! Bir Java kitaplığını başarıyla bağladınız. JAR ve bunu Xamarin.Android uygulamanızda kullandınız.

Özet

Bu kılavuzda, üçüncü taraf için bağlama kitaplığı oluşturduk. JAR dosyası, Bağlamalar Kitaplığı'nı en düşük test uygulamasına ekledi ve ardından C# kodumuzun içinde bulunan Java kodunu çağırabildiğini doğrulamak için uygulamayı çalıştırdı. JAR dosyası.