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:
Vytvořte nový projekt knihovny Java Bindings Library.
Přidejte . Soubor JAR do projektu.
Nastavte pro příslušnou akci sestavení . Soubor JAR.
Zvolte cílovou architekturu, kterou má . Jar podporuje.
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í:
Š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:
Přejděte na soubor picasso-2.x.x.jar stažený dříve, vyberte ho a klikněte na Přidat:
Ověřte, že se soubor picasso-2.x.x.jar úspěšně přidal do projektu:
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:
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):
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:
Přidejte odkaz na knihovnu vazeb.
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í:
Klikněte pravým tlačítkem myši na uzel Odkazy projektu BindingTest a vyberte Přidat odkaz...:
Zkontrolujte dříve vytvořený projekt JarBinding a klikněte na OK:
Otevřete uzel Reference projektu BindingTest a ověřte, že je k dispozici odkaz JarBinding:
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:
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.