Vytvoření vazby balíčku .JAR

Důležité

V současné době prošetřujeme využití vlastních vazeb na platformě Xamarin. Pokud chcete informovat budoucí úsilí o rozvoj, využijte tento průzkum .

Tento návod obsahuje podrobné pokyny k vytvoření knihovny vazeb Java Xamarin.Android z Androidu . Soubor JAR.

Přehled

Komunita Androidu nabízí mnoho knihoven Java, které můžete chtít použít ve své aplikaci. Tyto knihovny Java jsou často zabaleny v . Formát JAR (Java Archive), ale můžete zabalit soubor . JAR je v knihovně Vazeb Java, aby její funkce byly k dispozici pro aplikace Xamarin.Android. Účelem knihovny Java Bindings je vytvořit rozhraní API v rozhraní . Soubor JAR dostupný pro kód jazyka C# prostřednictvím automaticky generovaných obálky kódu.

Nástroje Xamarin mohou generovat knihovnu vazeb z jednoho nebo více vstupů . Soubory JAR. Knihovna vazeb (.DLL sestavení) obsahuje následující:

  • Obsah původního souboru . Soubory JAR

  • Spravované obálky s možností volání (MCW), což jsou typy jazyka C#, které zabalují odpovídající typy Javy v rámci . Soubory JAR

Vygenerovaný kód MCW používá K přesměrování volání rozhraní API do podkladového rozhraní JNI (Java Native Interface). Soubor JAR. Můžete vytvářet knihovny vazeb pro libovolnou . Soubor JAR, který byl původně zaměřen na použití s Androidem (mějte na paměti, že nástroje Xamarin v současné době nepodporují vazbu knihoven Java bez Androidu). Můžete se také rozhodnout vytvořit knihovnu vazeb bez zahrnutí obsahu souboru . Soubor JAR tak, aby knihovna DLL byla závislá na souboru . JAR za běhu.

V této příručce si projdeme základy vytváření knihovny vazeb pro jeden . Soubor JAR. Ukážeme si příklad, kde všechno jde správně – to znamená, že se nevyžaduje žádné přizpůsobení ani ladění vazeb. Vytváření vazeb pomocí metadat nabízí příklad pokročilejšího scénáře, kdy proces vazby není zcela automatický a vyžaduje se určité množství ručního zásahu. Obecný přehled vazby knihoven Java (s příkladem základního kódu) najdete v tématu Vytvoření vazby knihovny Java.

Názorný postup

V následujícím návodu vytvoříme knihovnu Vazeb pro Picasso, oblíbenou androidovou knihovnu . SOUBOR JAR, který poskytuje funkce načítání a ukládání do mezipaměti. Pomocí následujících kroků vytvoříme vazbu picasso-2.x.x.jar k vytvoření nového sestavení .NET, které můžeme použít v projektu Xamarin.Android:

  1. Vytvořte nový projekt knihovny Java Bindings Library.

  2. Přidejte . Soubor JAR do projektu.

  3. Nastavte pro příslušnou akci sestavení . Soubor JAR.

  4. Zvolte cílovou architekturu, kterou má . Jar podporuje.

  5. Sestavte knihovnu vazeb.

Jakmile vytvoříme knihovnu Bindings, vytvoříme malou aplikaci pro Android, která předvádí naši schopnost volat rozhraní API v knihovně Vazeb. V tomto příkladu chceme přistupovat k metodám picasso-2.x.x.jar:

package com.squareup.picasso

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

Po vygenerování knihovny vazeb pro picasso-2.x.x.jar můžeme tyto metody volat z jazyka C#. Příklad:

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

Vytvoření knihovny vazeb

Než začnete s postupem níže, stáhněte si prosím picasso-2.x.x.jar.

Nejprve vytvořte nový projekt Knihovny vazeb. V Visual Studio pro Mac nebo sadě Visual Studio vytvořte nové řešení a vyberte šablonu knihovny vazeb pro Android. (Snímky obrazovky v tomto názorném postupu používají Visual Studio, ale Visual Studio pro Mac je velmi podobné.) Pojmenujte Soubor JarBinding řešení:

Create JarBinding library project

Šablona obsahuje složku Jars , do které přidáte svůj soubor . Jar (jar) do projektu Knihovny vazeb Klikněte pravým tlačítkem na složku Jars a vyberte Přidat > existující položku:

Add existing item

Přejděte na soubor picasso-2.x.x.jar stažený dříve, vyberte ho a klikněte na Přidat:

Select jar file and click Add

Ověřte, že se soubor picasso-2.x.x.jar úspěšně přidal do projektu:

Jar added to project

Při vytváření projektu knihovny Java Bindings je nutné určit, zda . Soubor JAR se má vložit do knihovny vazeb nebo je zabalit samostatně. Uděláte to tak, že zadáte jednu z následujících akcí sestavení:

  • EmbeddedJar - the . Soubor JAR se vloží do knihovny vazeb.

  • InputJar - the . SOUBOR JAR se bude uchovávat odděleně od knihovny vazeb.

Obvykle použijete akci sestavení EmbeddedJar tak, aby . Soubor JAR se automaticky zabalí do knihovny vazeb. Toto je nejjednodušší možnost – bajtové kódy Jazyka Java v jazyce . JAR se převede na bajtový kód Dex a je vložen (spolu se spravovanými obálkami s možností volání) do vašeho APK. Pokud chcete zachovat . SOUBOR JAR oddělený od knihovny vazeb, můžete použít možnost InputJar , ale musíte zajistit, aby . Soubor JAR je k dispozici na zařízení, na kterém běží vaše aplikace.

Nastavte akci sestavení na EmbeddedJar:

Select EmbeddedJar build action

Dále otevřete vlastnosti projektu a nakonfigurujte cílovou architekturu. Pokud je Jar používá všechna rozhraní API pro Android, nastavte cílovou architekturu na úroveň rozhraní API, kterou má . Jar očekává. Obvykle vývojář . Soubor JAR bude indikovat, která úroveň rozhraní API (nebo úrovně) označuje, že . SOUBOR JAR je kompatibilní s. (Další informace o nastavení cílové architektury a úrovních rozhraní ANDROID API obecně najdete v tématu Principy úrovní rozhraní ANDROID API.)

Nastavte cílovou úroveň rozhraní API pro vaši knihovnu vazeb (v tomto příkladu používáme úroveň rozhraní API 19):

Target API level set to API 19

Nakonec sestavte knihovnu vazeb. I když se můžou zobrazit některé zprávy upozornění, měl by se projekt Knihovny vazeb úspěšně sestavit a vytvořit výstupní .DLL v následujícím umístění: JarBinding, bin/ Debug/JarBinding.dll

Použití knihovny vazeb

Pokud chcete tuto .DLL využívat v aplikaci Xamarin.Android, postupujte takto:

  1. Přidejte odkaz na knihovnu vazeb.

  2. Volání do . JAR prostřednictvím spravovaných obálkových volání.

V následujícíchkrocích kódech vytvoříme minimální aplikaci, která pomocí knihovny Bindings Library stáhne a zobrazí obrázek . ImageView Soubor JAR.

Nejprve vytvořte novou aplikaci Xamarin.Android, která využívá knihovnu Bindings Library. Klikněte pravým tlačítkem na řešení a vyberte Přidat nový projekt. Pojmenujte nový projekt BindingTest. Tuto aplikaci vytváříme ve stejném řešení jako knihovna vazeb, aby se tento názorný postup zjednodušil. Aplikace, která využívá knihovnu Vazeb, se ale může nacházet v jiném řešení:

Add new BindingTest project

Klikněte pravým tlačítkem myši na uzel Odkazy projektu BindingTest a vyberte Přidat odkaz...:

Right Add Reference

Zkontrolujte dříve vytvořený projekt JarBinding a klikněte na OK:

Select JarBinding project

Otevřete uzel Reference projektu BindingTest a ověřte, že je k dispozici odkaz JarBinding:

JarBinding appears under References

Upravte rozložení BindingTest (Main.axml), aby mělo jedenImageView:

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

Do MainActivity.cs přidejte následující using příkaz – to umožňuje snadný přístup k metodám třídy založené na Picasso Javě, která se nachází v knihovně Bindings:

using Com.Squareup.Picasso;

Upravte metodu OnCreate tak, aby používala Picasso třídu k načtení obrázku z adresy URL a jeho zobrazení v 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);
    }
}

Zkompilujte a spusťte projekt BindingTest . Aplikace se spustí a po krátké prodlevě (v závislosti na podmínkách sítě) by se měla stáhnout a zobrazit obrázek podobný následujícímu snímku obrazovky:

Screenshot of BindingTest running

Gratulujeme! Úspěšně jste vázali knihovnu Java . JAR a použil ho v aplikaci Xamarin.Android.

Shrnutí

V tomto názorném postupu jsme vytvořili knihovnu Vazeb pro třetí stranu . Soubor JAR, přidal knihovnu Bindings do minimální testovací aplikace a pak aplikaci spustil, aby ověřil, že náš kód jazyka C# může volat kód Java umístěný v souboru . Soubor JAR.