Bagikan melalui


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:

  1. Buat proyek Pustaka Pengikatan Java baru.

  2. Tambahkan satu . File AAR ke proyek. Proyek pengikatan hanya boleh berisi satu . AAR.

  3. Atur tindakan build yang sesuai untuk . File AAR.

  4. Pilih kerangka kerja target yang . AAR mendukung.

  5. 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:

Gambar monyet Xamarin

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 :

  1. 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:

    Membuat proyek AarBindings

  2. Templat menyertakan folder Jars tempat Anda menambahkan . AAR ke proyek Pustaka Pengikatan. Klik kanan folder Jars dan pilih Tambahkan > Item yang Ada:

    Tambahkan item yang sudah ada

  3. Navigasikan ke file textanalyzer.aar yang diunduh sebelumnya, pilih file tersebut, dan klik Tambahkan:

    Menambahkan textanalayzer.aar

  4. Verifikasi bahwa file textanalyzer.aar berhasil ditambahkan ke proyek:

    File textanalyzer.aar ditambahkan

  5. 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 ):

    Mengatur tindakan build textanalyzer.aar ke AndroidLibrary

  6. 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:

    Mengatur tingkat target ke API 23

  7. 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:

  1. 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:

    Membuat proyek BindingTest baru

  2. Klik kanan simpul Referensi proyek BindingTest dan pilih Tambahkan Referensi...:

    Klik Tambahkan Referensi

  3. Pilih proyek AarBinding yang dibuat sebelumnya dan klik OK:

    Periksa proyek pengikatan AAR

  4. Buka node Referensi proyek BindingTest untuk memverifikasi bahwa referensi AarBinding ada:

    AarBinding tercantum di bawah Referensi

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:

Menampilkan Browser Objek

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 buildFullNameinstans , 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:

Cuplikan layar dari menjalankan BindingTest

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:

BindingTest menampilkan jumlah konsonan

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.