.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ı:
Yeni bir Java Bağlamaları Kitaplığı projesi oluşturun.
Tek bir ekleyin. Projeye AAR dosyası. Bağlama projesi yalnızca tek bir içerebilir. ACAR.
için uygun derleme eylemini ayarlayın. AAR dosyası.
öğesinin hedef çerçevesini seçin. AAR destekler.
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:
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:
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:
Ş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:
Daha önce indirilen textanalyzer.aar dosyasına gidin, dosyayı seçin ve Ekle'ye tıklayın:
textanalyzer.aar dosyasının projeye başarıyla eklendiğini doğrulayın:
textanalyzer.aar için Derleme Eylemi'ni olarak
AndroidLibrary
ayarlayı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: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:
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:
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:
BindingTest projesinin Başvurular düğümüne sağ tıklayın ve Başvuru Ekle... öğesini seçin:
Daha önce oluşturulan AarBinding projesini seçin ve Tamam'a tıklayın:
AarBinding başvurusunun mevcut olduğunu doğrulamak için BindingTest projesinin References düğümünü açın:
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:
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 buildFullName
sahip 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:
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/image
AAR 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:
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ı.