Aracılığıyla paylaş


.AAR’ı 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. AAR dosyası.

Genel bakış

Android Arşivi (. AAR) dosyası, Android kitaplıkları için dosya biçimidir. Bir. AAR dosyası, aşağıdakileri içeren .ZIP bir arşivdir:

  • Derlenmiş Java kodu
  • Kaynak Kimlikleri
  • Kaynaklar
  • Meta veriler (örneğin, Etkinlik bildirimleri, izinler)

Bu kılavuzda, tek bir için Bağlama Kitaplığı oluşturmanın temellerini adım adım inceleyeceğiz. AAR dosyası. Java kitaplığı bağlamaya genel bir genel bakış için (temel bir kod örneğiyle) bkz . Java Kitaplığı Bağlama.

Önemli

Bağlama projesi yalnızca bir tane içerebilir. AAR dosyası. ise. AAR, diğer öğesine bağlıdır. AAR, sonra bu bağımlılıklar kendi bağlama projesinde yer almalıdır ve sonra başvurulmalıdır.

İzlenecek yol

Textanalyzer.aar adlı Android Studio'da oluşturulmuş örnek bir Android arşiv dosyası için bağlama kitaplığı oluşturacağız. Bu. AAR, bir TextCounter dizedeki ünlülerin ve ünsüzlerin sayısını sayan statik yöntemlere sahip bir sınıf içerir. Ayrıca textanalyzer.aar, sayma sonuçlarını görüntülemeye yardımcı olacak bir görüntü kaynağı içerir.

'den bağlama kitaplığı oluşturmak için aşağıdaki adımları kullanacağız. AAR dosyası:

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

  2. Tek bir ekleyin. Projeye AAR dosyası. Bağlama projesi yalnızca tek bir içerebilir. ACAR.

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

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

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

Bağlamalar Kitaplığı'nı oluşturduktan sonra, kullanıcıdan bir metin dizesi isteyen, çağıran küçük bir Android uygulaması geliştireceğiz. Metni analiz etmek için AAR yöntemleri, görüntüsünden alır. AAR ve sonuçları görüntüyle birlikte görüntüler.

Örnek uygulama textanalyzer.aar sınıfına erişecekTextCounter:

package com.xamarin.textcounter;

public class TextCounter
{
    ...
    public static int numVowels (String text) { ... };
    ...
    public static int numConsonants (String text) { ... };
    ...
}

Ayrıca, bu örnek uygulama textanalyzer.aar içinde paketlenmiş bir görüntü kaynağını alır ve görüntüler:

Xamarin maymun görüntüsü

Bu görüntü kaynağı textanalyzer.aar dosyasında res/drawable/monkey.png konumunda bulunur.

Bağlama kitaplığı oluşturma

Aşağıdaki adımlara başlamadan önce lütfen textanalyzer.aar Android arşiv dosyasını indirin:

  1. Android Bağlamalar Kitaplığı şablonuyla başlayan yeni bir Bağlama Kitaplığı projesi oluşturun. Mac için Visual Studio veya Visual Studio kullanabilirsiniz (aşağıdaki ekran görüntüleri Visual Studio'yu gösterir, ancak Mac için Visual Studio çok benzerdir). Çözümü AarBinding olarak adlandırın:

    AarBindings projesi oluşturma

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

    Var olan öğeyi ekleme

  3. Daha önce indirilen textanalyzer.aar dosyasına gidin, dosyayı seçin ve Ekle'ye tıklayın:

    textanalayzer.aar ekleme

  4. textanalyzer.aar dosyasının projeye başarıyla eklendiğini doğrulayın:

    textanalyzer.aar dosyası eklendi

  5. textanalyzer.aar için Derleme Eylemi'ni olarak AndroidLibraryayarlayın. Mac için Visual Studio'da textanalyzer.aar'a sağ tıklayarak Derleme Eylemi'ni ayarlayın. Visual Studio'da, Derleme Eylemi Özellikler bölmesinde ayarlanabilir:

    textanalyzer.aar derleme eylemini AndroidLibrary olarak ayarlama

  6. Hedef Çerçeveyi yapılandırmak için proje Özelliklerini açın. ise. AAR herhangi bir Android API'sini kullanır, Hedef Çerçeve'yi api düzeyi olarak ayarlayın. AAR bekliyor. (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, textanalyzer'ımızın Android API'lerine bağımlılığı olmadığından en son platform API düzeyini (API düzeyi 23) kullanabiliriz:

    Hedef düzeyi API 23 olarak ayarlama

  7. Bağlamalar Kitaplığı'nı oluşturun. Bağlama kitaplığı projesi başarıyla derlenmeli ve şu konumda bir çıkış .DLL üretmelidir: AarBinding/bin/Debug/AarBinding.dll

Bağlama kitaplığını kullanma

Bu .DLL Xamarin.Android uygulamanızda kullanmak için önce Bağlamalar Kitaplığı'na bir başvuru eklemeniz gerekir. Aşağıdaki adımları kullanın:

  1. Bu kılavuzu basitleştirmek için bu uygulamayı Bağlamalar Kitaplığı ile aynı Çözümde oluşturuyoruz. (Bağlama kitaplığını kullanan uygulama farklı bir Çözümde de yer alabilir.) 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:

    Yeni BindingTest projesi oluşturma

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

    Başvuru Ekle'ye tıklayın

  3. Daha önce oluşturulan AarBinding projesini seçin ve Tamam'a tıklayın:

    AAR bağlama projesini denetleme

  4. AarBinding başvurusunun mevcut olduğunu doğrulamak için BindingTest projesinin References düğümünü açın:

    AarBinding, Başvurular altında listelenir

Bağlama Kitaplığı projesinin içeriğini görüntülemek isterseniz, başvuruya çift tıklayarak Nesne Tarayıcısı'nda açabilirsiniz. Ad alanının eşlenmiş içeriğini Com.Xamarin.Textcounter görebilirsiniz (Java com.xamarin.textanalyzezr paketinden eşlenir) ve sınıfın üyelerini TextCounter görüntüleyebilirsiniz:

Nesne Tarayıcısını Görüntüleme

Yukarıdaki ekran görüntüsü, örnek uygulamanın çağıracağı iki TextAnalyzer yöntemi vurgular: NumConsonants (temel java numConsonants yöntemini sarmalayan) ve NumVowels (temel java numVowels yöntemini sarmalar).

Erişme. AAR Türleri

Uygulamanıza Bağlama Kitaplığı'na işaret eden bir başvuru ekledikten sonra, içindeki Java türlerine erişebilirsiniz. C# türlerine eriştikçe AAR (C# sarmalayıcıları sayesinde). C# uygulama kodu, bu örnekte gösterildiği gibi yöntemleri çağırabilir TextAnalyzer :

using Com.Xamarin.Textcounter;
...
int numVowels = TextCounter.NumVowels (myText);
int numConsonants = TextCounter.NumConsonants (myText);

Yukarıdaki örnekte, sınıfındaki TextCounter statik yöntemleri çağırıyoruz. Bununla birlikte, sınıfların örneğini oluşturabilir ve örnek yöntemlerini çağırabilirsiniz. Örneğin, öğesiniz ise. AAR, örnek yöntemine buildFullNamesahip adlı Employee bir sınıfı sarmalar. Burada gösterildiği gibi örneği MyClass oluşturabilir ve kullanabilirsiniz:

var employee = new Com.MyCompany.MyProject.Employee();
var name = employee.BuildFullName ();

Aşağıdaki adımlar uygulamaya kod ekleyerek kullanıcıdan metin istemesini, metni analiz etmek için kullanmasını TextCounter ve ardından sonuçları görüntülemesini sağlar.

BindingTest düzenini (Main.axml) aşağıdaki XML ile değiştirin. Bu düzende metin girişi için bir EditText ve sesli harf ve sessiz sayıları başlatmaya yönelik iki düğme vardır:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation             ="vertical"
    android:layout_width            ="fill_parent"
    android:layout_height           ="fill_parent" >
    <TextView
        android:text                ="Text to analyze:"
        android:textSize            ="24dp"
        android:layout_marginTop    ="30dp"
        android:layout_gravity      ="center"
        android:layout_width        ="wrap_content"
        android:layout_height       ="wrap_content" />
    <EditText
        android:id                  ="@+id/input"
        android:text                ="I can use my .AAR file from C#!"
        android:layout_marginTop    ="10dp"
        android:layout_gravity      ="center"
        android:layout_width        ="300dp"
        android:layout_height       ="wrap_content"/>
    <Button
        android:id                  ="@+id/vowels"
        android:layout_marginTop    ="30dp"
        android:layout_width        ="240dp"
        android:layout_height       ="wrap_content"
        android:layout_gravity      ="center"
        android:text                ="Count Vowels" />
    <Button
        android:id                  ="@+id/consonants"
        android:layout_width        ="240dp"
        android:layout_height       ="wrap_content"
        android:layout_gravity      ="center"
        android:text                ="Count Consonants" />
</LinearLayout>

MainActivity.cs içeriğini aşağıdaki kodla değiştirin. Bu örnekte görüldüğü gibi, düğme olay işleyicileri içinde bulunan sarmalanmış TextCounter yöntemleri çağırır. Sonuçları görüntülemek için AAR ve tost kullanın. İlişkili kitaplığın using ad alanının deyimine dikkat edin (bu örnekte): Com.Xamarin.Textcounter

using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Android.Views.InputMethods;
using Com.Xamarin.Textcounter;

namespace BindingTest
{
    [Activity(Label = "BindingTest", MainLauncher = true, Icon = "@drawable/icon")]
    public class MainActivity : Activity
    {
        InputMethodManager imm;

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            SetContentView(Resource.Layout.Main);

            imm = (InputMethodManager)GetSystemService(Context.InputMethodService);

            var vowelsBtn = FindViewById<Button>(Resource.Id.vowels);
            var consonBtn = FindViewById<Button>(Resource.Id.consonants);
            var edittext = FindViewById<EditText>(Resource.Id.input);
            edittext.InputType = Android.Text.InputTypes.TextVariationPassword;

            edittext.KeyPress += (sender, e) =>
            {
                imm.HideSoftInputFromWindow(edittext.WindowToken, HideSoftInputFlags.NotAlways);
                e.Handled = true;
            };

            vowelsBtn.Click += (sender, e) =>
            {
                int count = TextCounter.NumVowels(edittext.Text);
                string msg = count + " vowels found.";
                Toast.MakeText (this, msg, ToastLength.Short).Show ();
            };

            consonBtn.Click += (sender, e) =>
            {
                int count = TextCounter.NumConsonants(edittext.Text);
                string msg = count + " consonants found.";
                Toast.MakeText (this, msg, ToastLength.Short).Show ();
            };

        }
    }
}

BindingTest projesini derleyin ve çalıştırın. Uygulama başlatılır ve sol tarafta ekran görüntüsü gösterilir ( EditText bir metinle başlatılır, ancak bunu değiştirmek için dokunabilirsiniz). SESLI HARF SAY'a dokunduğunuzda, sağda gösterildiği gibi sesli harf sayısını görüntüler:

BindingTest çalıştırma ekran görüntüleri

BAĞ_DEĞ_DEĞ_SAY düğmesine dokunmayı deneyin. Ayrıca, farklı sesli harf ve ünsüz sayılarını test etmek için metin satırını değiştirebilir ve bu düğmelere yeniden dokunabilirsiniz.

Erişme. AAR Kaynakları

Xamarin araçları, R verilerini içinden birleştirir. Uygulamanızın Resource sınıfına AAR. Sonuç olarak öğesine erişebilirsiniz. AAR kaynakları, projenizin Kaynaklar yolundaki kaynaklara eriştikçe aynı şekilde düzeninizden (ve arka plan koddan) elde edilir.

Bir görüntü kaynağına erişmek için içinde paketlenmiş görüntünün Resource.Drawable adını kullanırsınız. ACAR. Örneğin, içindeki image.png başvurabilirsiniz. kullanarak @drawable/imageAAR dosyası:

<ImageView android:src="@drawable/image" ... />

içinde bulunan kaynak düzenlerine de erişebilirsiniz. ACAR. Bunu yapmak için içinde paketlenmiş düzenin Resource.Layout adını kullanırsınız. ACAR. Örneğin:

var a = new ArrayAdapter<string>(this, Resource.Layout.row_layout, ...);

textanalyzer.aar örneği, res/drawable/monkey.png konumunda bulunan bir görüntü dosyası içerir. Şimdi bu görüntü kaynağına erişelim ve örnek uygulamamızda kullanalım:

BindingTest düzenini (Main.axml) düzenleyin ve kapsayıcının LinearLayout sonuna bir ImageView ekleyin. BuImageView, @drawable/monkey konumunda bulunan görüntüyü görüntüler; bu görüntü textanalyzer.aar dosyasının kaynak bölümünden yüklenir:

    ...
    <ImageView
        android:src                 ="@drawable/monkey"
        android:layout_marginTop    ="40dp"
        android:layout_width        ="200dp"
        android:layout_height       ="200dp"
        android:layout_gravity      ="center" />

</LinearLayout>

BindingTest projesini derleyin ve çalıştırın. Uygulama başlatılır ve sol tarafta ekran görüntüsü gösterilir; BAĞ_DEĞ_SAY'a dokunduğunuzda sonuçlar sağda gösterildiği gibi görüntülenir:

Consonant sayısını görüntüleyen BindingTest

Tebrikler! Bir Java kitaplığını başarıyla bağladınız. ACAR!

Özet

Bu kılavuzda, için bir Bağlama kitaplığı oluşturduk. AAR dosyası, bağlamalar kitaplığını en düşük test uygulamasına ekledi ve C# kodumuzun içinde bulunan Java kodunu çağırabildiğini doğrulamak için uygulamayı çalıştırdı. AAR dosyası. Buna ek olarak, uygulamasında bulunan bir görüntü kaynağına erişmek ve görüntülemek için uygulamayı genişlettik. AAR dosyası.