Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.