Vytvoření vazby balíčku .AAR
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 AAR.
Přehled
Archiv Androidu (. Soubor AAR) je formát souboru pro knihovny Androidu. A . Soubor AAR je .ZIP archiv, který obsahuje následující:
- Zkompilovaný kód Java
- ID prostředků
- Zdroje informací
- Metadata (například deklarace aktivit, oprávnění)
V této příručce si projdeme základy vytváření knihovny vazeb pro jeden . Soubor AAR. Obecný přehled vazby knihoven Java (s příkladem základního kódu) najdete v tématu Vytvoření vazby knihovny Java.
Důležité
Projekt vazby může obsahovat pouze jeden . Soubor AAR. Pokud je AAR závisí na jiných . AAR, pak by tyto závislosti měly být obsaženy ve svém vlastním projektu vazby a pak odkazovány.
Názorný postup
Vytvoříme knihovnu Bindings Library pro příklad souboru archivu androidu, který byl vytvořen v Android Studiu, textanalyzer.aar. Tento. AAR obsahuje TextCounter
třídu se statickými metodami, které spočítá počet samohlásek a souhlásek v řetězci. Kromě toho textanalyzer.aar obsahuje prostředek obrázku, který pomáhá zobrazit počty výsledků.
Pomocí následujícího postupu vytvoříme knihovnu vazeb z objektu . Soubor AAR:
Vytvořte nový projekt knihovny Java Bindings Library.
Přidejte jeden . Soubor AAR do projektu. Projekt vazby může obsahovat pouze jeden . AAR.
Nastavte pro příslušnou akci sestavení . Soubor AAR.
Zvolte cílovou architekturu, kterou má . AAR podporuje.
Sestavte knihovnu vazeb.
Jakmile vytvoříme knihovnu Bindings, vytvoříme malou aplikaci pro Android, která uživatele vyzve k zadání textového řetězce, volání . Metody AAR k analýze textu načte obrázek z objektu . AAR a zobrazí výsledky spolu s obrázkem.
Ukázková aplikace bude mít přístup ke TextCounter
třídě textanalyzer.aar:
package com.xamarin.textcounter;
public class TextCounter
{
...
public static int numVowels (String text) { ... };
...
public static int numConsonants (String text) { ... };
...
}
Tato ukázková aplikace navíc načte a zobrazí prostředek obrázku, který je zabalený v souboru textanalyzer.aar:
Tento prostředek obrázku se nachází ve formátu res/drawable/monkey.png v souboru textanalyzer.aar.
Vytvoření knihovny vazeb
Než začnete s níže postupem, stáhněte si ukázkový soubor archivu textanalyzer.aar Android:
Vytvořte nový projekt Knihovny vazeb, který začíná šablonou knihovny Vazeb pro Android. Můžete použít Visual Studio pro Mac nebo Visual Studio (snímky obrazovky níže ukazují Visual Studio, ale Visual Studio pro Mac je velmi podobné). Pojmenujte řešení AarBinding:
Šablona obsahuje složku Jars , do které přidáte svůj soubor . AAR(y) k projektu knihovny Bindings. Klikněte pravým tlačítkem na složku Jars a vyberte Přidat > existující položku:
Přejděte na soubor textanalyzer.aar , který jste stáhli dříve, vyberte ho a klikněte na Přidat:
Ověřte, že se do projektu úspěšně přidal soubor textanalyzer.aar :
Nastavte akci sestavení pro textanalyzer.aar na
AndroidLibrary
hodnotu . V Visual Studio pro Mac klikněte pravým tlačítkem myši na textanalyzer.aar a nastavte akci sestavení. V sadě Visual Studio lze v podokně Vlastnosti nastavit akci sestavení):Otevřete vlastnosti projektu a nakonfigurujte cílovou architekturu. Pokud je AAR používá všechna rozhraní API pro Android, nastavte cílovou architekturu na úroveň rozhraní API, kterou má . AAR očekává. (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 knihovnu vazeb. V tomto příkladu můžeme používat nejnovější úroveň rozhraní API platformy (úroveň 23 rozhraní API), protože náš textanalyzer nemá závislost na rozhraních API androidu:
Sestavte knihovnu vazeb. Projekt knihovny vazeb by se měl úspěšně sestavit a vytvořit výstupní .DLL v následujícím umístění: AarBinding/ bin/Debug/AarBinding.dll
Použití knihovny vazeb
Pokud chcete tuto .DLL používat v aplikaci Xamarin.Android, musíte nejprve přidat odkaz na knihovnu Vazeb. Použijte následující postup:
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 může také nacházet v jiném řešení.) Vytvořte novou aplikaci Xamarin.Android: Klikněte pravým tlačítkem na Řešení a vyberte Přidat nový projekt. Pojmenujte nový projekt BindingTest:
Klikněte pravým tlačítkem myši na uzel Odkazy projektu BindingTest a vyberte Přidat odkaz...:
Vyberte projekt AarBinding vytvořený dříve a klikněte na OK:
Otevřete uzel Reference projektu BindingTest a ověřte, že existuje odkaz AarBinding:
Pokud chcete zobrazit obsah projektu Knihovna vazeb, můžete na něj poklikáním otevřít v prohlížeči objektů. Můžete zobrazit mapovaný obsah Com.Xamarin.Textcounter
oboru názvů (namapovaný z balíčku Java com.xamarin.textanalyzezr
) a můžete zobrazit členy TextCounter
třídy:
Na výše uvedeném snímku obrazovky jsou zvýrazněné dvě TextAnalyzer
metody, které bude ukázková aplikace volat: NumConsonants
(která zabalí podkladovou metodu Java numConsonants
) a NumVowels
(která zabalí podkladovou metodu Java numVowels
).
Přístup. Typy AAR
Po přidání odkazu na aplikaci, která odkazuje na knihovnu vazeb, můžete přistupovat k typům Javy v souboru . AAR tak, jak byste přistupovali k typům jazyka C# (díky obálkům jazyka C#). Kód aplikace jazyka C# může volat TextAnalyzer
metody, jak je znázorněno v tomto příkladu:
using Com.Xamarin.Textcounter;
...
int numVowels = TextCounter.NumVowels (myText);
int numConsonants = TextCounter.NumConsonants (myText);
V předchozím příkladu voláme statické metody ve TextCounter
třídě. Můžete však také vytvořit instance tříd a volání metod instance. Například pokud vaše . AAR zabalí třídu, Employee
která má metodu buildFullName
instance , můžete vytvořit instanci MyClass
a použít ji, jak je vidět zde:
var employee = new Com.MyCompany.MyProject.Employee();
var name = employee.BuildFullName ();
Následující postup přidá do aplikace kód, aby uživatele vyzve k zadání textu, použije TextCounter
k analýze textu a pak zobrazí výsledky.
Nahraďte rozložení BindingTest (Main.axml) následujícím kódem XML. Toto rozložení obsahuje EditText
textové zadání a dvě tlačítka pro inicializování samohlásek a souhlásek:
<?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>
Obsah MainActivity.cs nahraďte následujícím kódem. Jak je vidět v tomto příkladu, obslužné rutiny událostí tlačítka volají zabalené TextCounter
metody, které se nacházejí v objektu . AAR a použití informačních toastů k zobrazení výsledků using
Všimněte si příkazu pro obor názvů vázané knihovny (v tomto případě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 ();
};
}
}
}
Zkompilujte a spusťte projekt BindingTest . Aplikace se spustí a zobrazí snímek obrazovky vlevo ( EditText
inicializuje se pomocí nějakého textu, ale můžete na něj klepnout a změnit ho). Když klepnete na COUNT VOWELS, zobrazí informační zpráva počet samohlásek, jak je znázorněno na pravé straně:
Zkuste klepnout na tlačítko POČET CONSONANTS . Můžete také upravit řádek textu a znovu klepnout na tato tlačítka a otestovat tak různé samohlásky a souhlásky.
Přístup. Prostředky AAR
Nástroje Xamarin sloučí data jazyka R z objektu . AAR do třídy prostředků vaší aplikace V důsledku toho můžete získat přístup . Zdroje AAR z vašeho rozložení (a z kódu za sebou) stejným způsobem jako k prostředkům, které jsou v cestě Zdroje projektu.
Pokud chcete získat přístup k prostředku obrázku, použijte název Resource.Drawable pro image zabalenou uvnitř souboru . AAR. Můžete například odkazovat na image.png v souboru . Soubor AAR pomocí:@drawable/image
<ImageView android:src="@drawable/image" ... />
Můžete také přistupovat k rozložením prostředků, která se nacházejí v objektu . AAR. K tomu použijete název Resource.Layout pro rozložení zabalené uvnitř souboru . AAR. Příklad:
var a = new ArrayAdapter<string>(this, Resource.Layout.row_layout, ...);
Příklad textanalyzer.aar obsahuje soubor obrázku, který se nachází v umístění res/drawable/monkey.png. Pojďme získat přístup k tomuto prostředku image a použít ho v naší ukázkové aplikaci:
Upravte rozložení BindingTest (Main.axml) a přidejte ImageView
na konec kontejneruLinearLayout
. Zobrazí ImageView
se obrázek nalezený v @drawable/opice; tento obrázek se načte z oddílu prostředků textanalyzer.aar:
...
<ImageView
android:src ="@drawable/monkey"
android:layout_marginTop ="40dp"
android:layout_width ="200dp"
android:layout_height ="200dp"
android:layout_gravity ="center" />
</LinearLayout>
Zkompilujte a spusťte projekt BindingTest . Aplikace se spustí a zobrazí snímek obrazovky vlevo – když klepnete na POČET CONSONANTS, zobrazí se výsledky, jak je znázorněno vpravo:
Gratulujeme! Úspěšně jste vázali knihovnu Java . AAR!
Shrnutí
V tomto názorném postupu jsme vytvořili knihovnu vazeb pro objekt . Soubor AAR, přidali knihovnu Bindings do minimální testovací aplikace a spustili aplikaci, abyste ověřili, že náš kód jazyka C# může volat kód Java umístěný v jazyce Java. Soubor AAR. Kromě toho jsme aplikaci rozšířili tak, aby měla přístup k prostředku obrázku, který se nachází v objektu . Soubor AAR.