Tworzenie powiązań plików JAR
Ważne
Obecnie badamy użycie powiązań niestandardowych na platformie Xamarin. Weź udział w tej ankiecie , aby poinformować o przyszłych wysiłkach programistycznych.
Ten przewodnik zawiera instrukcje krok po kroku dotyczące tworzenia biblioteki powiązań języka Java platformy Xamarin.Android z poziomu systemu Android. Plik JAR.
Omówienie
Społeczność systemu Android oferuje wiele bibliotek Java, których możesz użyć w aplikacji. Te biblioteki Języka Java są często pakowane w pliku . Format JAR (Archiwum Java), ale można spakować plik . JAR w bibliotece powiązań Języka Java, aby jej funkcjonalność była dostępna dla aplikacji platformy Xamarin.Android. Celem biblioteki powiązań Języka Java jest uczynienie interfejsów API w pliku . Plik JAR dostępny dla kodu C# za pośrednictwem automatycznie generowanych otoek kodu.
Narzędzia platformy Xamarin mogą generować bibliotekę powiązań na podstawie co najmniej jednego wejściowego elementu . Pliki JAR. Biblioteka powiązań (zestaw .DLL) zawiera następujące elementy:
Zawartość oryginalnego elementu . Pliki JAR.
Zarządzane otoki z możliwością wywołania (MCW), które są typami języka C#, które opakowują odpowiednie typy języka Java w obrębie . Pliki JAR.
Wygenerowany kod MCW używa interfejsu JNI (interfejsu natywnego Java) do przekazywania wywołań interfejsu API do bazowego elementu . Plik JAR. Możesz utworzyć biblioteki powiązań dla dowolnego elementu . Plik JAR, który pierwotnie był przeznaczony do użycia z systemem Android (należy pamiętać, że narzędzia Xamarin nie obsługują obecnie powiązania bibliotek Java innych niż Android). Możesz również zdecydować się na utworzenie biblioteki powiązań bez uwzględniania zawartości elementu . Plik JAR, dzięki czemu biblioteka DLL ma zależność od . Plik JAR w czasie wykonywania.
W tym przewodniku omówimy podstawy tworzenia biblioteki powiązań dla pojedynczego elementu . Plik JAR. Zilustrujemy przykład, w którym wszystko działa prawidłowo — oznacza to, że nie jest wymagane dostosowanie ani debugowanie powiązań. Tworzenie powiązań przy użyciu metadanych oferuje przykład bardziej zaawansowanego scenariusza, w którym proces wiązania nie jest całkowicie automatyczny i wymagana jest pewna ilość interwencji ręcznej. Aby zapoznać się z ogólnym omówieniem powiązania biblioteki Języka Java (z podstawowym przykładem kodu), zobacz Wiązanie biblioteki Języka Java.
Przewodnik
W poniższym przewodniku utworzymy bibliotekę powiązań dla Picassa — popularnego systemu Android. Plik JAR, który zapewnia funkcje ładowania i buforowania obrazów. Użyjemy następujących kroków, aby powiązać picasso-2.x.x.jar w celu utworzenia nowego zestawu platformy .NET, którego możemy użyć w projekcie platformy Xamarin.Android:
Utwórz nowy projekt Biblioteki powiązań Języka Java.
Dodaj element . Plik JAR do projektu.
Ustaw odpowiednią akcję kompilacji dla elementu . Plik JAR.
Wybierz platformę docelową, która ma wartość . Plik JAR obsługuje.
Skompiluj bibliotekę powiązań.
Po utworzeniu biblioteki powiązań utworzymy małą aplikację dla systemu Android, która demonstruje możliwość wywoływania interfejsów API w bibliotece powiązań. W tym przykładzie chcemy uzyskać dostęp do metod picasso-2.x.x.jar:
package com.squareup.picasso
public class Picasso
{
...
public static Picasso with (Context context) { ... };
...
public RequestCreator load (String path) { ... };
...
}
Po wygenerowaniu biblioteki powiązań dla picasso-2.x.x.jar możemy wywołać te metody z języka C#. Na przykład:
using Com.Squareup.Picasso;
...
Picasso.With (this)
.Load ("https://mydomain.myimage.jpg")
.Into (imageView);
Tworzenie biblioteki powiązań
Przed rozpoczęciem pracy z poniższymi krokami pobierz picasso-2.x.x.jar.
Najpierw utwórz nowy projekt Biblioteka powiązań. W programie Visual Studio dla komputerów Mac lub Visual Studio utwórz nowe rozwiązanie i wybierz szablon Biblioteka powiązań systemu Android. (Zrzuty ekranu w tym przewodniku używają programu Visual Studio, ale Visual Studio dla komputerów Mac jest bardzo podobny). Nadaj rozwiązaniu nazwę JarBinding:
Szablon zawiera folder Jars , w którym dodajesz plik . Pliki JAR w projekcie Biblioteka powiązań. Kliknij prawym przyciskiem myszy folder Jars i wybierz polecenie Dodaj > istniejący element:
Przejdź do pobranego wcześniej pliku picasso-2.x.x.jar , wybierz go i kliknij przycisk Dodaj:
Sprawdź, czy plik picasso-2.x.x.jar został pomyślnie dodany do projektu:
Podczas tworzenia projektu biblioteki powiązań Języka Java należy określić, czy element . Plik JAR ma być osadzony w bibliotece powiązań lub spakowany oddzielnie. W tym celu należy określić jedną z następujących akcji kompilacji:
EmbeddedJar — element . Plik JAR zostanie osadzony w bibliotece powiązań.
InputJar — . Plik JAR będzie oddzielony od biblioteki powiązań.
Zazwyczaj używasz akcji kompilacji EmbeddedJar , aby element . Plik JAR jest automatycznie pakowany do biblioteki powiązań. Jest to najprostsza opcja — kod bajtowy Języka Java w pliku . Plik JAR jest konwertowany na kod bajtowy Dex i jest osadzony (wraz z zarządzanymi otokami wywołującymi) do pakietu APK. Jeśli chcesz zachować wartość . Plik JAR oddzielony od biblioteki powiązań można użyć opcji InputJar . Należy jednak upewnić się, że element . Plik JAR jest dostępny na urządzeniu z uruchomioną aplikacją.
Ustaw akcję kompilacji na EmbeddedJar:
Następnie otwórz projekt Właściwości, aby skonfigurować platformę docelową. Jeśli element . Plik JAR używa dowolnych interfejsów API systemu Android, ustaw platformę docelową na poziom interfejsu API, który ma wartość . Oczekuje się pliku JAR. Zazwyczaj deweloper programu . Plik JAR będzie wskazywać poziom interfejsu API (lub poziomy), który ma wartość . Plik JAR jest zgodny z. (Aby uzyskać więcej informacji na temat ustawienia platformy docelowej i poziomów interfejsu API systemu Android, zobacz Opis poziomów interfejsu API systemu Android).
Ustaw docelowy poziom interfejsu API dla biblioteki powiązań (w tym przykładzie używamy interfejsu API poziomu 19):
Na koniec skompiluj bibliotekę powiązań. Mimo że niektóre komunikaty ostrzegawcze mogą być wyświetlane, projekt Biblioteka powiązań powinien zostać pomyślnie skompilowany i wygenerować dane wyjściowe .DLL w następującej lokalizacji: JarBinding/bin/Debug/JarBinding.dll
Korzystanie z biblioteki powiązań
Aby korzystać z tej .DLL w aplikacji platformy Xamarin.Android, wykonaj następujące czynności:
Dodaj odwołanie do biblioteki powiązań.
Wykonaj wywołania w obiekcie . JAR za pomocą zarządzanych otoek z możliwością wywołania.
W poniższych krokach utworzymy minimalną aplikację, która używa biblioteki powiązań do pobierania i wyświetlania obrazu w ImageView
obiekcie . Kod, który znajduje się w obiekcie . Plik JAR.
Najpierw utwórz nową aplikację platformy Xamarin.Android, która korzysta z biblioteki powiązań. Kliknij prawym przyciskiem myszy pozycję Rozwiązanie i wybierz polecenie Dodaj nowy projekt; nadaj nowej nazwie BindingTest projektu. Tworzymy tę aplikację w tym samym rozwiązaniu co biblioteka powiązań, aby uprościć ten przewodnik; jednak aplikacja, która korzysta z biblioteki powiązań, może zamiast tego znajdować się w innym rozwiązaniu:
Kliknij prawym przyciskiem myszy węzeł Odwołania w projekcie BindingTest i wybierz polecenie Dodaj odwołanie...:
Sprawdź utworzony wcześniej projekt JarBinding i kliknij przycisk OK:
Otwórz węzeł Odwołania projektu BindingTest i sprawdź, czy odwołanie JarBinding jest obecne:
Zmodyfikuj układ BindingTest (Main.axml), tak aby miał jeden element 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>
Dodaj następującą using
instrukcję do MainActivity.cs — umożliwia to łatwe uzyskiwanie dostępu do metod klasy opartej na Picasso
języku Java znajdującej się w bibliotece powiązań:
using Com.Squareup.Picasso;
Zmodyfikuj metodę OnCreate
tak, aby używała Picasso
klasy do ładowania obrazu z adresu URL i wyświetlania go w elemecie 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);
}
}
Skompiluj i uruchom projekt BindingTest . Aplikacja zostanie uruchamiana i po krótkim opóźnieniu (w zależności od warunków sieciowych) powinna pobrać i wyświetlić obraz podobny do poniższego zrzutu ekranu:
Gratulacje! Pomyślnie powiązaliśmy bibliotekę Języka Java. Plik JAR i użył go w aplikacji Xamarin.Android.
Podsumowanie
W tym przewodniku utworzyliśmy bibliotekę powiązań dla innej firmy . Plik JAR dodał bibliotekę powiązań do minimalnej aplikacji testowej, a następnie uruchomił aplikację, aby sprawdzić, czy nasz kod języka C# może wywołać kod Java znajdujący się w obiekcie . Plik JAR.