Bagikan melalui


Mengikat . JAR

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

Gambaran Umum

Komunitas Android menawarkan banyak pustaka Java yang mungkin ingin Anda gunakan di aplikasi Anda. Pustaka Java ini sering di kemas dalam . Format JAR (Java Archive), tetapi Anda dapat mengemas . JAR di Pustaka Java Bindings sehingga fungsionalitasnya tersedia untuk aplikasi Xamarin.Android. Tujuan pustaka Java Bindings adalah untuk membuat API di . File JAR tersedia untuk kode C# melalui pembungkus kode yang dihasilkan secara otomatis.

Alat Xamarin dapat menghasilkan Pustaka Pengikatan dari satu atau beberapa input . File JAR. Pustaka Pengikatan (rakitan .DLL) berisi yang berikut ini:

  • Konten asli . File JAR.

  • Managed Callable Wrappers (MCW), yang merupakan jenis C# yang membungkus jenis Java yang sesuai dalam . File JAR.

Kode MCW yang dihasilkan menggunakan JNI (Java Native Interface) untuk meneruskan panggilan API Anda ke . File JAR. Anda dapat membuat pustaka pengikatan untuk setiap . File JAR yang awalnya ditargetkan untuk digunakan dengan Android (perhatikan bahwa alat Xamarin saat ini tidak mendukung pengikatan pustaka Java non-Android). Anda juga dapat memilih untuk membangun Pustaka Pengikatan tanpa menyertakan konten . File JAR sehingga DLL memiliki dependensi pada . JAR saat runtime.

Dalam panduan ini, kita akan menelusuri dasar-dasar pembuatan Pustaka Pengikatan untuk satu . File JAR. Kami akan mengilustrasikan dengan contoh di mana semuanya berjalan dengan benar - yaitu, di mana tidak diperlukan penyesuaian atau penelusuran kesalahan pengikatan. Membuat Pengikatan Menggunakan Metadata menawarkan contoh skenario yang lebih canggih di mana proses pengikatan tidak sepenuhnya otomatis dan beberapa jumlah intervensi manual diperlukan. Untuk gambaran umum pengikatan pustaka Java secara umum (dengan contoh kode dasar), lihat Mengikat Pustaka Java.

Panduan

Dalam panduan berikut, kita akan membuat Bindings Library untuk Picasso, Android populer. JAR yang menyediakan fungsionalitas pemuatan dan penembolokan gambar. Kami akan menggunakan langkah-langkah berikut untuk mengikat picasso-2.x.x.jar untuk membuat rakitan .NET baru yang dapat kita gunakan dalam proyek Xamarin.Android:

  1. Buat proyek Pustaka Pengikatan Java baru.

  2. Tambahkan . File JAR ke proyek.

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

  4. Pilih kerangka kerja target yang . JAR mendukung.

  5. Buat Pustaka Pengikatan.

Setelah membuat Pustaka Pengikatan, kami akan mengembangkan aplikasi Android kecil yang menunjukkan kemampuan kami untuk memanggil API di Pustaka Pengikatan. Dalam contoh ini, kita ingin mengakses metode picasso-2.x.x.jar:

package com.squareup.picasso

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

Setelah membuat Pustaka Pengikatan untuk picasso-2.x.x.jar, kita dapat memanggil metode ini dari C#. Contohnya:

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

Membuat Pustaka Pengikatan

Sebelum memulai dengan langkah-langkah di bawah ini, silakan unduh picasso-2.x.x.jar.

Pertama, buat proyek Pustaka Pengikatan baru. Di Visual Studio untuk Mac atau Visual Studio, buat Solusi baru dan pilih templat Android Bindings Library . (Cuplikan layar dalam panduan ini menggunakan Visual Studio, tetapi Visual Studio untuk Mac sangat mirip.) Beri nama Solusi JarBinding:

Create JarBinding library project

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

Add existing item

Navigasi ke file picasso-2.x.x.jar yang diunduh sebelumnya, pilih file tersebut dan klik Tambahkan:

Select jar file and click Add

Verifikasi bahwa file picasso-2.x.x.jar berhasil ditambahkan ke proyek:

Jar added to project

Saat membuat proyek pustaka Java Bindings, Anda harus menentukan apakah . JAR akan disematkan di Pustaka Pengikatan atau dipaketkan secara terpisah. Untuk melakukannya, Anda menentukan salah satu tindakan build berikut:

  • EmbeddedJar – . JAR akan disematkan di Pustaka Pengikatan.

  • InputJar – . JAR akan dipisahkan dari Pustaka Pengikatan.

Biasanya, Anda menggunakan tindakan build EmbeddedJar sehingga . JAR secara otomatis dimasukan ke dalam pustaka pengikatan. Ini adalah opsi paling sederhana - Bytecode Java di . JAR dikonversi menjadi bytecode Dex dan disematkan (bersama dengan Managed Callable Wrappers) ke dalam APK Anda. Jika Anda ingin menyimpan . JAR terpisah dari pustaka pengikatan, Anda dapat menggunakan opsi InputJar ; namun, Anda harus memastikan bahwa . File JAR tersedia di perangkat yang menjalankan aplikasi Anda.

Atur tindakan build ke EmbeddedJar:

Select EmbeddedJar build action

Selanjutnya, buka Properti proyek untuk mengonfigurasi Kerangka Kerja Target. Jika . JAR menggunakan API Android apa pun, atur Kerangka Kerja Target ke tingkat API yang . JAR mengharapkan. Biasanya, pengembang . File JAR akan menunjukkan tingkat API (atau tingkat) mana yang . JAR kompatibel dengan. (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 menggunakan API level 19):

Target API level set to API 19

Terakhir, bangun Pustaka Pengikatan. Meskipun beberapa pesan peringatan dapat ditampilkan, proyek Pustaka Pengikatan harus berhasil dibangun dan menghasilkan output .DLL di lokasi berikut: JarBinding/bin/Debug/JarBinding.dll

Menggunakan Pustaka Pengikatan

Untuk menggunakan .DLL ini di aplikasi Xamarin.Android Anda, lakukan hal berikut:

  1. Tambahkan referensi ke Pustaka Pengikatan.

  2. Lakukan panggilan ke dalam . JAR melalui Pembungkus yang Dapat Dipanggil Terkelola.

Dalam langkah-langkah berikut, kita akan membuat aplikasi minimal yang menggunakan Pustaka Pengikatan untuk mengunduh dan menampilkan gambar dalam ImageView; "pengangkatan berat" dilakukan oleh kode yang berada di . File JAR.

Pertama, buat aplikasi Xamarin.Android baru yang menggunakan Pustaka Pengikatan. Klik kanan Solusi dan pilih Tambahkan Proyek Baru; beri nama proyek baru BindingTest. Kami membuat aplikasi ini di Solusi yang sama dengan Pustaka Pengikatan untuk menyederhanakan panduan ini; namun, aplikasi yang menggunakan Pustaka Pengikatan dapat, sebaliknya, berada di Solusi yang berbeda:

Add new BindingTest project

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

Right Add Reference

Periksa proyek JarBinding yang dibuat sebelumnya dan klik OK:

Select JarBinding project

Buka node Referensi proyek BindingTest dan verifikasi bahwa referensi JarBinding ada:

JarBinding appears under References

Ubah tata letak BindingTest (Main.axml) sehingga memiliki satu ImageView:

<?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>

Tambahkan pernyataan berikut using ke MainActivity.cs - ini memungkinkan untuk dengan mudah mengakses metode kelas berbasis Picasso Java yang berada di Pustaka Pengikatan:

using Com.Squareup.Picasso;

OnCreate Ubah metode sehingga menggunakan Picasso kelas untuk memuat gambar dari URL dan menampilkannya di ImageView:

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);
    }
}

Kompilasi dan jalankan proyek BindingTest . Aplikasi akan dimulai, dan setelah penundaan singkat (tergantung pada kondisi jaringan), aplikasi harus mengunduh dan menampilkan gambar yang mirip dengan cuplikan layar berikut:

Screenshot of BindingTest running

Selamat! Anda berhasil mengikat pustaka Java . JAR dan gunakan di aplikasi Xamarin.Android Anda.

Ringkasan

Dalam panduan ini, kami membuat Pustaka Pengikatan untuk pihak ketiga . File JAR, menambahkan Pustaka Pengikatan ke aplikasi pengujian minimal, lalu menjalankan aplikasi untuk memverifikasi bahwa kode C# kami dapat memanggil kode Java yang berada di . File JAR.