Mengikat . AAR
Penting
Saat ini kami sedang menyelidiki penggunaan pengikatan kustom pada platform Xamarin. Silakan ikuti survei ini untuk menginformasikan upaya pengembangan di masa mendatang.
Panduan ini menyediakan instruksi langkah demi langkah untuk membuat Xamarin.Android Java Bindings Library dari Android . File AAR.
Gambaran Umum
Arsip Android (. File AAR) adalah format file untuk pustaka Android. Sebuah . File AAR adalah arsip .ZIP yang berisi berikut ini:
- Kode Java yang dikompilasi
- ID sumber daya
- Sumber
- Meta-data (misalnya, Deklarasi aktivitas, izin)
Dalam panduan ini, kita akan menelusuri dasar-dasar pembuatan Pustaka Pengikatan untuk satu . File AAR. Untuk gambaran umum pengikatan pustaka Java secara umum (dengan contoh kode dasar), lihat Mengikat Pustaka Java.
Penting
Proyek pengikatan hanya dapat menyertakan satu . File AAR. Jika . AAR tergantung pada yang lain . AAR, maka dependensi tersebut harus terkandung dalam proyek pengikatan mereka sendiri dan kemudian dirujuk.
Panduan
Kita akan membuat Bindings Library untuk contoh file arsip Android yang dibuat di Android Studio, textanalyzer.aar. Ini. AAR berisi TextCounter
kelas dengan metode statis yang menghitung jumlah vokal dan konsonan dalam string. Selain itu, textanalyzer.aar berisi sumber daya gambar untuk membantu menampilkan hasil penghitungan.
Kita akan menggunakan langkah-langkah berikut untuk membuat Pustaka Pengikatan dari . File AAR:
Buat proyek Pustaka Pengikatan Java baru.
Tambahkan satu . File AAR ke proyek. Proyek pengikatan hanya boleh berisi satu . AAR.
Atur tindakan build yang sesuai untuk . File AAR.
Pilih kerangka kerja target yang . AAR mendukung.
Buat Pustaka Pengikatan.
Setelah membuat Pustaka Pengikatan, kami akan mengembangkan aplikasi Android kecil yang meminta string teks kepada pengguna, memanggil . Metode AAR untuk menganalisis teks, mengambil gambar dari . AAR, dan menampilkan hasilnya bersama dengan gambar.
Aplikasi sampel akan mengakses TextCounter
kelas textanalyzer.aar:
package com.xamarin.textcounter;
public class TextCounter
{
...
public static int numVowels (String text) { ... };
...
public static int numConsonants (String text) { ... };
...
}
Selain itu, aplikasi sampel ini akan mengambil dan menampilkan sumber daya gambar yang dipaketkan dalam textanalyzer.aar:
Sumber daya gambar ini berada di res/drawable/monkey.png di textanalyzer.aar.
Membuat Pustaka Pengikatan
Sebelum memulai dengan langkah-langkah di bawah ini, silakan unduh contoh file arsip Android textanalyzer.aar :
Buat proyek Pustaka Pengikatan baru yang dimulai dengan templat Android Bindings Library. Anda dapat menggunakan Visual Studio untuk Mac atau Visual Studio (cuplikan layar di bawah ini menampilkan Visual Studio, tetapi Visual Studio untuk Mac sangat mirip). Beri nama solusi AarBinding:
Templat menyertakan folder Jars tempat Anda menambahkan . AAR ke proyek Pustaka Pengikatan. Klik kanan folder Jars dan pilih Tambahkan > Item yang Ada:
Navigasikan ke file textanalyzer.aar yang diunduh sebelumnya, pilih file tersebut, dan klik Tambahkan:
Verifikasi bahwa file textanalyzer.aar berhasil ditambahkan ke proyek:
Atur Tindakan Build untuk textanalyzer.aar ke
AndroidLibrary
. Di Visual Studio untuk Mac, klik kanan textanalyzer.aar untuk mengatur Tindakan Build. Di Visual Studio, Tindakan Build dapat diatur di panel Properti ):Buka Properti proyek untuk mengonfigurasi Kerangka Kerja Target. Jika . AAR menggunakan API Android apa pun, atur Kerangka Kerja Target ke tingkat API yang . AAR mengharapkan. (Untuk informasi selengkapnya tentang pengaturan Kerangka Kerja Target dan tingkat ANDROID API secara umum, lihat Memahami Android API Levels.)
Atur tingkat API target untuk Pustaka Pengikatan Anda. Dalam contoh ini, kami bebas menggunakan tingkat API platform terbaru (API level 23) karena textanalyzer kami tidak memiliki dependensi pada API Android:
Buat Pustaka Pengikatan. Proyek Pustaka Pengikatan harus berhasil dibangun dan menghasilkan .DLL output di lokasi berikut: AarBinding/bin/Debug/AarBinding.dll
Menggunakan Pustaka Pengikatan
Untuk menggunakan .DLL ini di aplikasi Xamarin.Android, Anda harus terlebih dahulu menambahkan referensi ke Pustaka Pengikatan. Gunakan langkah-langkah berikut:
Kami membuat aplikasi ini dalam Solusi yang sama dengan Pustaka Pengikatan untuk menyederhanakan panduan ini. (Aplikasi yang menggunakan Pustaka Pengikatan juga dapat berada di Solusi yang berbeda.) Buat aplikasi Xamarin.Android baru: klik kanan Solusi dan pilih Tambahkan Proyek Baru. Beri nama proyek baru BindingTest:
Klik kanan simpul Referensi proyek BindingTest dan pilih Tambahkan Referensi...:
Pilih proyek AarBinding yang dibuat sebelumnya dan klik OK:
Buka node Referensi proyek BindingTest untuk memverifikasi bahwa referensi AarBinding ada:
Jika Anda ingin melihat konten proyek Pustaka Pengikatan, Anda dapat mengklik dua kali referensi untuk membukanya di Browser Objek. Anda dapat melihat konten namespace yang dipetakan Com.Xamarin.Textcounter
(dipetakan dari paket Java com.xamarin.textanalyzezr
) dan Anda dapat melihat anggota TextCounter
kelas:
Cuplikan layar di atas menyoroti dua TextAnalyzer
metode yang akan dipanggil aplikasi contoh: NumConsonants
(yang membungkus metode Java numConsonants
yang mendasar), dan NumVowels
(yang membungkus metode Java numVowels
yang mendasar).
Mengakses. Jenis AAR
Setelah menambahkan referensi ke aplikasi yang menunjuk ke Pustaka Pengikatan, Anda dapat mengakses jenis Java di . AAR seperti yang Anda akan mengakses jenis C# (berkat pembungkus C#). Kode aplikasi C# dapat memanggil TextAnalyzer
metode seperti yang diilustrasikan dalam contoh ini:
using Com.Xamarin.Textcounter;
...
int numVowels = TextCounter.NumVowels (myText);
int numConsonants = TextCounter.NumConsonants (myText);
Dalam contoh di atas, kami memanggil metode statis di TextCounter
kelas . Namun, Anda juga dapat membuat instans kelas dan memanggil metode instans. Misalnya, jika . AAR membungkus kelas yang disebut Employee
yang memiliki metode buildFullName
instans , Anda dapat membuat MyClass
instans dan menggunakannya seperti yang terlihat di sini:
var employee = new Com.MyCompany.MyProject.Employee();
var name = employee.BuildFullName ();
Langkah-langkah berikut menambahkan kode ke aplikasi sehingga meminta teks kepada pengguna, menggunakan TextCounter
untuk menganalisis teks, lalu menampilkan hasilnya.
Ganti tata letak BindingTest (Main.axml) dengan XML berikut. Tata letak ini memiliki EditText
untuk input teks dan dua tombol untuk memulai jumlah vokal dan konsonan:
<?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>
Ganti konten MainActivity.cs dengan kode berikut. Seperti yang terlihat dalam contoh ini, penanganan aktivitas tombol memanggil metode yang TextCounter
dibungkus yang berada di . AAR dan gunakan roti panggang untuk menampilkan hasilnya. using
Perhatikan pernyataan untuk namespace pustaka terikat (dalam hal ini, 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 ();
};
}
}
}
Kompilasi dan jalankan proyek BindingTest . Aplikasi akan memulai dan menyajikan cuplikan layar di sebelah kiri ( EditText
diinisialisasi dengan beberapa teks, tetapi Anda dapat mengetuknya untuk mengubahnya). Saat Anda mengetuk COUNT VOWELS, toast menampilkan jumlah vokal seperti yang ditunjukkan di sebelah kanan:
Coba ketuk tombol COUNT CONSONANTS . Selain itu, Anda dapat memodifikasi baris teks dan mengetuk tombol ini lagi untuk menguji jumlah vokal dan konsonan yang berbeda.
Mengakses. Sumber Daya AAR
Alat Xamarin menggabungkan data R dari . AAR ke kelas Sumber Daya aplikasi Anda. Akibatnya, Anda dapat mengakses . Sumber daya AAR dari tata letak Anda (dan dari kode di belakang) dengan cara yang sama seperti Anda akan mengakses sumber daya yang berada di jalur Sumber Daya proyek Anda.
Untuk mengakses sumber daya gambar, Anda menggunakan nama Resource.Drawable untuk gambar yang dikemas di dalam . AAR. Misalnya, Anda dapat mereferensikan image.png di . File AAR dengan menggunakan @drawable/image
:
<ImageView android:src="@drawable/image" ... />
Anda juga dapat mengakses tata letak sumber daya yang berada di . AAR. Untuk melakukan ini, Anda menggunakan nama Resource.Layout untuk tata letak yang dibungkus di dalam . AAR. Contohnya:
var a = new ArrayAdapter<string>(this, Resource.Layout.row_layout, ...);
Contoh textanalyzer.aar berisi file gambar yang berada di res/drawable/monkey.png. Mari kita akses sumber daya gambar ini dan menggunakannya di aplikasi contoh kami:
Edit tata letak BindingTest (Main.axml) dan tambahkan ImageView
ke akhir LinearLayout
kontainer. Ini ImageView
menampilkan gambar yang ditemukan di @drawable/monyet; gambar ini akan dimuat dari bagian sumber daya textanalyzer.aar:
...
<ImageView
android:src ="@drawable/monkey"
android:layout_marginTop ="40dp"
android:layout_width ="200dp"
android:layout_height ="200dp"
android:layout_gravity ="center" />
</LinearLayout>
Kompilasi dan jalankan proyek BindingTest . Aplikasi akan memulai dan menyajikan cuplikan layar di sebelah kiri - saat Anda mengetuk COUNT CONSONANTS, hasilnya ditampilkan seperti yang ditunjukkan di sebelah kanan:
Selamat! Anda berhasil mengikat pustaka Java . AAR!
Ringkasan
Dalam panduan ini, kami membuat Pustaka Pengikatan untuk . File AAR, menambahkan Pustaka Pengikatan ke aplikasi pengujian minimal, dan menjalankan aplikasi untuk memverifikasi bahwa kode C# kami dapat memanggil kode Java yang berada di . File AAR. Selain itu, kami memperluas aplikasi untuk mengakses dan menampilkan sumber daya gambar yang berada di . File AAR.