Architektury procesorów
Platforma Xamarin.Android obsługuje kilka architektur procesora CPU, w tym 32-bitowe i 64-bitowe urządzenia. W tym artykule wyjaśniono, jak kierować aplikację do co najmniej jednej architektury procesora CPU obsługiwanej przez system Android.
Omówienie architektur procesora CPU
Podczas przygotowywania aplikacji do wydania należy określić, które architektury procesora CPU platformy obsługuje aplikacja. Pojedynczy plik APK może zawierać kod maszyny do obsługi wielu, różnych architektur. Każda kolekcja kodu specyficznego dla architektury jest skojarzona z interfejsem binarnym aplikacji (ABI). Każda usługa ABI definiuje sposób interakcji tego kodu maszyny z systemem Android w czasie wykonywania. Aby uzyskać więcej informacji o tym, jak to działa, zobacz Urządzenia wielordzeniowe i Xamarin.Android.
Jak określić obsługiwane architektury
Zazwyczaj jawnie wybierasz architekturę (lub architektury), gdy aplikacja jest skonfigurowana na potrzeby wydania. Po skonfigurowaniu aplikacji na potrzeby debugowania są włączone opcje Użyj środowiska uruchomieniowego udostępnionego i Użyj szybkiego wdrażania, które wyłączają jawne wybieranie architektury.
W programie Visual Studio kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań i wybierz polecenie Właściwości. Na stronie Opcje systemu Android sprawdź sekcję Właściwości pakowania i sprawdź, czy opcja Użyj udostępnionego środowiska uruchomieniowego jest wyłączona (wyłączenie to umożliwia jawne wybranie interfejsów API do obsługi). Kliknij przycisk Zaawansowane i w obszarze Obsługiwane architektury sprawdź architektury, które chcesz obsługiwać:
Platforma Xamarin.Android obsługuje następujące architektury:
- armeabi — procesory oparte na architekturze ARM, które obsługują co najmniej zestaw instrukcji ARMv5TE. Należy pamiętać, że
armeabi
nie jest bezpieczny wątkowo i nie powinien być używany na urządzeniach z wieloma procesorami CPU.
Uwaga
Od wersji Xamarin.Android 9.2armeabi
nie jest już obsługiwana.
armeabi-v7a — procesory oparte na architekturze ARM ze sprzętowymi operacjami zmiennoprzecinkowych i wieloma urządzeniami procesora CPU (SMP). Należy pamiętać, że
armeabi-v7a
kod maszyny nie zostanie uruchomiony na urządzeniach ARMv5.arm64-v8a — procesory oparte na 64-bitowej architekturze ARMv8.
x86 — procesory, które obsługują zestaw instrukcji x86 (lub IA-32). Ten zestaw instrukcji jest odpowiednikiem instrukcji Pentium Pro, w tym MMX, SSE, SSE2 i SSE3.
x86_64 procesory CPU obsługujące 64-bitowe procesory x86 (nazywane również zestawem instrukcji x64 i AMD64).
Ustawienie domyślne platformy armeabi-v7a
Xamarin.Android dla kompilacji wydania . To ustawienie zapewnia znacznie lepszą wydajność niż armeabi
. Jeśli używasz 64-bitowej platformy ARM (takiej jak Nexus 9), wybierz pozycję arm64-v8a
. Jeśli wdrażasz aplikację na urządzeniu x86, wybierz pozycję x86
. Jeśli docelowe urządzenie x86 używa architektury 64-bitowego procesora CPU, wybierz pozycję x86_64
.
Określanie wartości docelowej dla wielu platform
Aby zakierować wiele architektur procesora CPU, możesz wybrać więcej niż jedną usługę ABI (kosztem większego rozmiaru pliku APK). W celu utworzenia oddzielnego pakietu APK dla każdej obsługiwanej architektury można użyć opcji Generuj jeden pakiet (.apk) dla wybranej opcji ABI (opisanej w temacie Ustaw właściwości tworzenia pakietów).
Nie musisz wybierać arm64-v8a lub x86_64 do docelowych urządzeń 64-bitowych. Obsługa 64-bitowa nie jest wymagana do uruchamiania aplikacji na sprzęcie 64-bitowym. Na przykład 64-bitowe urządzenia ARM (takie jak Nexus 9) mogą uruchamiać aplikacje skonfigurowane dla programu armeabi-v7a
. Główną zaletą włączenia obsługi 64-bitowej jest umożliwienie aplikacji obsługi większej ilości pamięci.
Uwaga
Od sierpnia 2018 r. nowe aplikacje będą wymagane do określania docelowego poziomu interfejsu API na poziomie 26, a od sierpnia 2019 r. aplikacje będą musiały zapewnić 64-bitowe wersje oprócz wersji 32-bitowej.
Dodatkowe informacje
W niektórych sytuacjach może być konieczne utworzenie oddzielnego pakietu APK dla każdej architektury (aby zmniejszyć rozmiar pliku APK lub ponieważ aplikacja ma biblioteki udostępnione specyficzne dla konkretnej architektury procesora CPU). Aby uzyskać więcej informacji na temat tego podejścia, zobacz Tworzenie interfejsów API specyficznych dla usługi ABI.