Zestaw SDK aplikacji usługi Intune dla systemu Android — wprowadzenie do zarządzania aplikacjami mobilnymi

Zestaw SDK aplikacji usługi Microsoft Intune dla systemu Android umożliwia dołączanie zasad ochrony aplikacji usługi Intune do natywnej aplikacji systemu Android Java/Kotlin. Te zasady są również nazywane zasadami MAM. Aplikacja zarządzana przez usługę Intune to aplikacja zintegrowana z zestawem SDK aplikacji usługi Intune. Gdy usługa Intune aktywnie zarządza aplikacją, administratorzy usługi Intune mogą łatwo wdrażać zasady ochrony aplikacji w aplikacji zarządzanej przez usługę Intune.

Uwaga

Ten przewodnik jest podzielony na kilka odrębnych etapów. Zacznij od zapoznania się z etapem 1: Planowanie integracji.

Etap 3: Wprowadzenie do zarządzania aplikacjami mobilnymi

Cele etapu

  • Pobierz zestaw SDK aplikacji usługi Intune.
  • Dowiedz się, jakie pliki są zawarte w zestawie SDK aplikacji usługi Intune.
  • Odwołaj się do zestawu SDK aplikacji usługi Intune w aplikacji.
  • Skonfiguruj wtyczkę kompilacji Gradle aplikacji usługi Intune lub skorzystaj z narzędzia do kompilacji wiersza polecenia.
  • Upewnij się, że zestaw SDK aplikacji usługi Intune jest prawidłowo uwzględniony w kompilacji.

Tło

Teraz, gdy Twoja aplikacja pomyślnie zintegrowała bibliotekę MSAL, nadszedł czas, aby pobrać zestaw SDK aplikacji usługi Intune i uwzględnić go w procesie kompilacji aplikacji.

Duża część integracji zestawu SDK aplikacji usługi Intune zastępuje standardowe klasy systemu Android i wywołania metod wersjami usługi Intune tych klas i wywołań metod. Zestaw SDK zawiera narzędzia do kompilacji, które automatycznie wykonują większość tych zamiany za Ciebie. Jeśli chcesz dowiedzieć się więcej o tej logice zamiany, zobacz sekcję dotyczącą zastępowań klas i metodw dodatku.

Pobierz zestaw SDK aplikacji usługi Intune

Aby pobrać zestaw SDK, zobacz Pobieranie plików zestawu SDK.

Co zawiera zestaw SDK?

Zestaw SDK aplikacji usługi Intune składa się z następujących plików:

  • Microsoft. Intune. MAM. SDK.aar: składniki zestawu SDK, z wyjątkiem plików JAR biblioteki pomocy technicznej.
  • com.microsoft.intune.mam.build.jar: Wtyczka Gradle, która pomaga w integracji SDK.
  • CHANGELOG.md: Zawiera rekord zmian wprowadzonych w każdej wersji zestawu SDK.
  • Microsoft. Intune. MAM. Zestaw SDK. DownlevelStubs.aar: to archiwum systemu Android (AAR) zawiera obiekty zastępcze dla klas systemu Android, które są obecne tylko na nowszych urządzeniach, ale są przywoływane przez metody w MAMActivity. Nowsze urządzenia ignorują te klasy zastępcze. To AAR jest konieczne tylko wtedy, gdy aplikacja wykonuje odbicie klas pochodzących z MAMActivity, a większość aplikacji nie musi go uwzględniać. AAR zawiera reguły narzędzia ProGuard umożliwiające wykluczenie wszystkich jego klas.

Odwoływanie się do bibliotek aplikacji usługi Intune

Zestaw SDK aplikacji usługi Intune to standardowa biblioteka systemu Android bez zależności zewnętrznych. Microsoft. Intune. MAM. Plik SDK.aar zawiera interfejsy niezbędne do włączenia zasad ochrony aplikacji. Zawiera również kod niezbędny do współdziałania z aplikacją Microsoft Intune Portal firmy.

Android Studio

Microsoft. Intune. MAM. Plik SDK.aar musi być określony jako odwołanie do biblioteki systemu Android. Aby dodać tę zależność do swojej kompilacji, postępuj zgodnie z instrukcjami Dodaj AAR lub JAR jako zależność z dokumentacji systemu Android.

Visual Studio

The Intune App SDK for .NET MAUI - Android NuGet package must be added as a dependency.

Postępuj zgodnie z procesem instalowania pakietów i zarządzania nimi w programie Visual Studio przy użyciu Menedżera pakietów NuGet.

Witryna Microsoft.Intune. MAM. Plik SDK.aar jest powiązany z tworzeniem odwołań do języka C#, które są ograniczone do Microsoft.Intune.Mam przestrzeni nazw.

ProGuard

Twoja aplikacja może już używać ProGuard (lub dowolnego innego mechanizmu zmniejszania/zaciemniania) jako kroku kompilacji. Zestaw SDK aplikacji usługi Intune zawiera reguły konfiguracji narzędzia ProGuard, które muszą zostać uwzględnione w tym kroku kompilacji. W tym . Usługa AAR w kompilacji, jak opisano wcześniej, automatycznie integruje konfigurację zestawu SDK z krokiem ProGuard, dzięki czemu są zachowywane niezbędne pliki klas. Jeśli dodano . AAR, nie jest potrzebna żadna inna zmiana.

Biblioteka uwierzytelniania firmy Microsoft (MSAL) jest dostarczana z własną konfiguracją narzędzia ProGuard. Jeśli Twoja aplikacja integruje bibliotekę MSAL, zapoznaj się z dokumentacją biblioteki MSAL , aby uzyskać więcej informacji.

Narzędzia do kompilacji

Zestaw SDK udostępnia narzędzia do kompilacji (wtyczkę do kompilacji Gradle, cele dla kompilacji .NET i narzędzie wiersza polecenia), które automatycznie wykonują zastąpienie zarządzania aplikacjami mobilnymi. Narzędzia te przekształcają pliki klas generowane przez kompilację języka Java; Nie modyfikują oryginalnego kodu źródłowego. Wymagane jest użycie wtyczki Gradle, pakietu NuGet platformy .NET lub narzędzia wiersza polecenia.

Same narzędzia kompilacji nie wystarczą, aby w pełni zintegrować aplikację. Narzędzia te wykonują tylko zamianę klas i metod . Nie wykonują one żadnych bardziej złożonych integracji zestawu SDK, takich jak Multi-Identity, Rejestrowanie w celu ochrony aplikacji, Zasady ograniczania transferu danych między aplikacjami i urządzeniami lub lokalizacjami magazynu w chmurze lub konfiguracja MSAL. Musisz ukończyć te integracje, zanim Twoja aplikacja będzie w pełni włączona w usłudze Intune. Uważnie przejrzyj pozostałą część tej dokumentacji, aby znaleźć punkty integracji istotne dla Twojej aplikacji.

Debugowanie

Narzędzie kompilacji wykonuje zamianę po kompilacji. Te zamiany powodują zmianę niektórych nazw metod. W związku z tym może to mieć wpływ na debugowanie punktów przerwania ustawionych dla nazw metod. Mogą nie zatrzymać się zgodnie z oczekiwaniami. Nie ma to wpływu na punkty przerwania numerów wierszy.

Zarządzanie aplikacjami mobilnymi w stosie

Integracja zestawu SDK aplikacji usługi Intune opiera się w dużym stopniu na zastępstwie klas i metod. Ze względu na tę zależność widać mam w całym stosie ślady. Jeśli Twoja aplikacja nie ma konta objętego zasadami ochrony aplikacji, cały ten kod zarządzania aplikacjami mobilnymi pozostaje w stanie uśpienia. Na przykład działa MAMActivity identycznie onMAMCreate i Activity działa identycznie z onCreate. Za każdym razem, gdy widzisz mam w stosie, najpierw sprawdź:

  • Czy konto jest objęte zasadami ochrony aplikacji?
  • Czy usługa Intune — Portal firmy jest zainstalowana?

Jeśli odpowiedź na oba pytania nie brzmi "tak", kod zarządzania aplikacjami mobilnymi działa jak proste przekazanie.

Jakiego narzędzia potrzebuję?

Jeśli kompilujesz aplikację za pomocą narzędzia Gradle, zobacz Integrowanie z wtyczką kompilacji narzędzia Gradle

Jeśli kompilujesz aplikację przy użyciu . NET MAUI, zobacz Integrowanie z obiektami docelowymi .NET MAUI.

Jeśli kompilujesz aplikację przy użyciu żadnego z poprzednich narzędzi, zobacz Integrowanie z narzędziem wiersza polecenia.

Integracja z wtyczką Gradle Build

Wtyczka Intune App SDK jest dystrybuowana jako część zestawu SDK jako GradlePlugin/com.microsoft.intune.mam.build.jar.

Aby wtyczka została rozpoznana przez Gradle, musi zostać dodana do buildscript ścieżki klasy. Wtyczka zależy od Javassista, którego również należy dodać. Aby uzyskać więcej informacji na temat zależności Javassist, zobacz Dependencies.

Aby dodać je do ścieżki klasy, dodaj następujący element w katalogu głównym build.gradle:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath "org.javassist:javassist:3.29.2-GA"
        classpath files("$PATH_TO_MAM_SDK/GradlePlugin/com.microsoft.intune.mam.build.jar")
    }
}

Następnie, aby zastosować wtyczkę, dodaj następujące elementy do build.gradle pliku dla modułów aplikacji i funkcji dynamicznych:

apply plugin: 'com.microsoft.intune.mam'

Domyślnie wtyczka działa na project zależnościach i bibliotekach zewnętrznych. Nie ma to wpływu na kompilację testową.

Uwaga

Począwszy od zestawu SDK aplikacji usługi Intune 8.0, nie można już selektywnie przetwarzać bibliotek. Przetwarzane są wszystkie biblioteki.

Zależności

Wtyczka Gradle ma zależność od Javassist, która musi być udostępniona do rozwiązywania zależności Gradle. Javassist jest używany wyłącznie w czasie kompilacji podczas uruchamiania wtyczki i do aplikacji nie jest dodawany żaden kod Javassist.

Zestaw SDK zarządzania aplikacjami mobilnymi Wersja Javassist
≥ 10.0.0 3.29.2-GA
≥ 7.0.0 3.27.0 — GA
< 7.0.0 3.22.0-GA

Uwaga

Wersje Javassist mogą nie być zgodne z poprzednimi wersjami. Ogólnie rzecz biorąc, należy użyć dokładnej wersji oczekiwanej przez zestaw SDK aplikacji usługi Intune.

Macierz zgodności

Wtyczka kompilacji zestawu SDK zarządzania aplikacjami mobilnymi jest zgodna z wymaganiami dotyczącymi kompilacji systemu Android i tabelami zgodności. Wersje, których tu nie wymieniono, mogą, ale nie muszą działać.

Zestaw SDK zarządzania aplikacjami mobilnymi Wersja systemu Android Narzędzie Gradle Wtyczka Android Gradle Wersja Kotlina Wersja Java
10.0.0 14 8.2 8.2.2 1.9.25 17
11.0.0 15 8.7 8.6.1 2.0.21 17
12.0.0 16 8.11.1 8.9.1 2.1.21 17

Wykluczenia

Można podać więcej konfiguracji, aby wykluczyć określone składniki w aplikacji z modyfikacji. Wykluczenia są przydatne głównie w przypadku składników, które nie są istotne dla zarządzania aplikacjami mobilnymi (czyli nie obsługują ani nie wyświetlają danych firmowych).

Wykluczenia można skonfigurować dla różnych zakresów:

  • excludeProjects umożliwia wykluczenie listy projektów Gradle. Te wykluczenia są przydatne w przypadku projektów, które nie współpracują z bibliotekami systemu Android lub systemowymi interfejsami API. Są one również przydatne w projektach, które nie obsługują danych firmowych. Dobrym kandydatem może być na przykład projekt zawierający wyłącznie kod natywny do wykonywania niskopoziomowych operacji sieciowych. Jeśli projekt ogólnie łączy się z bibliotekami systemu Android lub systemowymi interfejsami API, unikaj tych wykluczeń.
  • excludeClasses Umożliwia wykluczenie listy zajęć. Te wykluczenia są przydatne w przypadku klas, które nie obsługują ani nie prezentują danych firmowych. Dobrymi kandydatami są na przykład ekrany powitalne i elementy wdrażające Activity. Nie można wykluczyć klasy, jeśli przetwarzana jest którakolwiek z jej nadklas.
  • excludeVariants Umożliwia wykluczenie wariantów projektu. Te wykluczenia mogą odnosić się do pełnej nazwy wariantu lub pojedynczego smaku. Są one szczególnie przydatne, jeśli chcesz utworzyć wersję aplikacji inną niż MAM. Jeśli na przykład aplikacja ma typy debug kompilacji i release smaki {noMAM, MAM} i {mock, production}, możesz określić:
    • noMAM aby wykluczyć wszystkie warianty o smaku noMAM lub
    • noMAMMockDebug aby wykluczyć tylko ten dokładny wariant.

Uwaga

Wyłączeń nie należy lekceważyć. Nieprawidłowe zastosowanie wykluczeń może spowodować poważne wycieki danych w aplikacji. Zawsze sprawdzaj wpływ każdego zastosowanego wykluczenia.

Przykład: fragment build.gradle z wykluczeniami

apply plugin: 'com.microsoft.intune.mam'

dependencies {
    implementation project(':product:FooLib')
    implementation project(':product:foo-project')
    implementation "com.microsoft.bar:baz:1.0.0"

    // Include the MAM SDK
    implementation files("$PATH_TO_MAM_SDK/Microsoft.Intune.MAM.SDK.aar")
}
intunemam {
    excludeProjects = [':product:FooLib']
    excludeClasses = ['com.contoso.SplashActivity']
    excludeVariants = ['noMAM']
}

Miałoby to następujące skutki:

  • :product:FooLib nie jest przepisywany, ponieważ jest zawarty w excludeProjects
  • :product:foo-project jest przepisywany, z wyjątkiem com.contoso.SplashActivity, który jest pomijany, ponieważ jest w excludeClasses
  • com.microsoft.bar:baz.1.0.0 jest przepisywany, ponieważ wszystkie biblioteki zewnętrzne są dołączane do przetwarzania.
  • Warianty ze smakiem noMAM nie są przepisywane.

Raportowanie

Wtyczka kompilacji może wygenerować raport html o wprowadzonych zmianach. Aby zażądać wygenerowania tego raportu, określ report = true w intunemam bloku konfiguracyjnym. W przypadku wygenerowania raport jest zapisywany outputs/logs w katalogu kompilacji.

intunemam {
    report = true
}

Weryfikacja

Wtyczka kompilacji może uruchomić więcej weryfikacji w poszukiwaniu możliwych błędów w klasach przetwarzania. Te testy pomagają zabezpieczyć się przed potencjalnymi awariami środowiska uruchomieniowego wywołanymi przez wtyczkę.

Aby zażądać, aby weryfikacja została przeprowadzona w Twojej kompilacji, określ verify = true w intunemam bloku konfiguracji. Może to wydłużyć czas wykonywania zadania wtyczki o kilka sekund.

intunemam {
    verify = true
}

Ogólnie rzecz biorąc, błąd weryfikacji oznacza błąd we wtyczce kompilacji. Aby uzyskać pomoc w przypadku awarii, eskaluj problem do pomocy technicznej firmy Microsoft. Jeśli nie masz umowy o świadczenie pomocy technicznej z firmą Microsoft, otwórz zgłoszenie w usłudze GitHub.

Kompilacje przyrostowe

Aby włączyć obsługę przyrostowego kompilowania, określ incremental = true w intunemam bloku konfiguracji. Ta funkcja zwiększa wydajność kompilacji, przetwarzając tylko zmieniające się pliki wejściowe. Domyślna konfiguracja to incrementalfalse.

intunemam {
    incremental = true
}

Konfiguracja modułu funkcji dynamicznych

Dynamiczne moduły funkcyjne są konstruowane niezależnie od projektu aplikacji. W związku z tym moduły funkcji dynamicznych muszą również stosować wtyczkę kompilacji Gradle.

Wtyczka Gradle ma ograniczenia techniczne w interfejsach API, z których korzysta. Ze względu na te ograniczenia klasy aplikacji muszą być ponownie przetwarzane podczas przekształcania klas modułów funkcji dynamicznych. Aby upewnić się, że ponowne przetwarzanie danych będzie możliwe, skonfiguruj wszystkie moduły funkcji z takimi samymi ustawieniami jak aplikacja.

Jeśli na przykład aplikacja wyklucza klasę, moduł funkcji dynamicznych powinien również wykluczyć tę klasę.

Integracja z obiektami docelowymi programu .NET MAUI

Obiekty docelowe zestawu SDK aplikacji usługi Intune są dystrybuowane w ramach zestawu SDK jako Microsoft.Intune. Maui.Essentials.android.targets.

Obiekty docelowe są automatycznie importowane do aplikacji w czasie kompilacji po dodaniu pakietu NuGet usługi Intune App SDK dla platformy .NET MAUI — Android.

Integracja z narzędziem do kompilacji wiersza polecenia

Narzędzie kompilacji wiersza polecenia jest dostępne w folderze BuildTool dropu zestawu SDK. Pełni tę samą funkcję, co wtyczka Gradle i obiekty docelowe platformy .NET opisane powyżej. Jednak narzędzie wiersza polecenia można zintegrować z niestandardowymi systemami kompilacji. Ponieważ narzędzie jest bardziej ogólne, jego wywołanie jest bardziej złożone. Użyj wtyczki Gradle lub obiektów docelowych platformy .NET, gdy tylko jest to możliwe.

Korzystanie z narzędzia Command-Line

Narzędzie wiersza polecenia można wywołać za pomocą dostarczonych skryptów pomocniczych znajdujących się BuildTool\bin w katalogu.

Narzędzie oczekuje następujących parametrów.

Parametr Wymagany Opis
--input Tak Rozdzielana średnikami lista plików JAR i katalogów plików klas do modyfikacji. Dołącz wszystkie pliki JAR i katalogi, które zamierzasz zapisać ponownie.
--output Tak Rozdzielana średnikami lista plików JAR i katalogów do przechowywania zmodyfikowanych klas. Podaj jeden wpis wyjściowy na każdy wpis wejściowy, wymieniony w tej samej kolejności.
--classpath Tak Ścieżka klasy kompilacji. Może to zawierać zarówno pliki JAR, jak i katalogi klas.
--processed Nie Rozdzielana średnikami lista plików JAR i katalogów zawierających klasy, które zostały już przetworzone przez poprzednie wywołanie narzędzia kompilacji.
--excludeClasses Nie Lista rozdzielana średnikami zawierająca nazwy klas, które powinny zostać wykluczone z przepisywania.
--report Nie Katalog do zapisu raportu HTML o zmodyfikowanych klasach. Jeśli nie zostanie określony, żaden raport nie zostanie napisany.

Opcjonalna --processed opcja służy do włączania kompilacji przyrostowych. Wymieniony tutaj zestaw plików/katalogów powinien być rozłączny z listami wejściowymi i classpath.

Porada

W systemach uniksopodobnych średnik jest separatorem poleceń. Aby uniknąć dzielenia poleceń przez powłokę, upewnij się, że każdy średnik jest poprzedzony znakiem '' lub ujęty w cudzysłów.

Przykład wywołania narzędzia Command-Line

> BuildTool\bin\BuildTool.bat --input build\product-foo-project;libs\bar.jar --output mam-build\product-foo-project;mam-build\libs\bar.jar --classpath build\zap.jar;libs\Microsoft.Intune.MAM.SDK\classes.jar;%ANDROID_SDK_ROOT%\platforms\android-27\android.jar --excludeClasses com.contoso.SplashActivity

Miałoby to następujące skutki:

  • Katalog product-foo-project jest przepisywany w mam-build\product-foo-project
  • bar.jar jest przepisany na mam-build\libs\bar.jar
  • zap.jar nie jest przepisywany, ponieważ jest wymieniony tylko w--classpath
  • Zajęcia com.contoso.SplashActivitynie są przepisywane, nawet jeśli są w --input

Ostrzeżenie

Narzędzie do kompilacji obecnie nie obsługuje plików AAR. Jeśli twój system kompilacji nie wyodrębnia już classes.jar podczas pracy z plikami aar, wyodrębnij go przed wywołaniem narzędzia kompilacji.

Ustawianie aplikacji MAMApplication

Jeśli aplikacja tworzy podklasę android.app.Application, to wtyczka kompilacji lub narzędzie wiersza polecenia przekształca klasę aplikacji.

Jeśli Twoja aplikacja nie ma podklasy android.app.Application, musisz ustawić "com.microsoft.intune.mam.client.app.MAMApplication" jako "android:name" atrybut w tagu <application> AndroidManifest.xml.

  • Używaj najnowszych narzędzi do tworzenia Android SDK.
  • Usuń wszystkie niepotrzebne i nieużywane biblioteki (na przykład android.support.v4).

Po wykonaniu automatycznych zamiany zestaw Intune App SDK nadal zachowuje umowę dostarczoną przez interfejs API systemu Android. Jednak warunki awarii mogą być wyzwalane częściej w wyniku wymuszania zasad. Te najlepsze rozwiązania dotyczące systemu Android zmniejszają prawdopodobieństwo niepowodzenia:

  • Funkcje zestawu SDK systemu Android, które mogą zostać zwrócone null , mają teraz większe prawdopodobieństwo zwrócenia nullplików . Upewnij się, że null testy chronią te wywołania funkcji.
  • Funkcje, które można sprawdzić, takie jak clipboardManager.getPrimaryClipDescription(), muszą być sprawdzane za pośrednictwem interfejsów API zastępowania zarządzania aplikacjami mobilnymi, takich jak MAMClipboard.getPrimaryClipDescription(clipboardManager).
  • Wszystkie funkcje pochodne muszą wywoływać ich wersje nadklasy.
  • Unikaj używania interfejsu API w sposób niejednoznaczny. Na przykład używanie Activity.startActivityForResult bez sprawdzenia requestCode powoduje dziwne zachowanie.

Usługi

Wymuszanie zasad może mieć wpływ na interakcje z usługą systemu Android. Metody, które ustanawiają powiązane połączenie usługi, takie jak Context.bindService mogą zakończyć się niepowodzeniem z powodu podstawowego wymuszania zasad w Service.onBind i mogą skutkować lub ServiceConnection.onNullBindingServiceConnection.onServiceDisconnected. Interakcja z ustanowioną usługą powiązaną może spowodować SecurityException wymuszenie zasad w Binder.onTransact.

Zachęcamy klientów usług powiązanych do sprawdzania, czy nie występują wyjątki zgłaszane przez usługę. Nie pozwól, aby wyjątki były propagowane w pozostałej części aplikacji klienckiej.

Kryteria zakończenia

Po skonfigurowaniu wtyczki kompilacji lub zintegrowaniu narzędzia wiersza polecenia z procesem kompilacji sprawdź, czy działa pomyślnie:

  • Upewnij się, że kompilacja została pomyślnie skompilowana i skompilowana.
  • Skonfiguruj report flagę, a następnie otwórz dokument raportu i potwierdź, że następuje zamiana klas i metod:
    • Jeśli używasz wtyczki, wykonaj kroki opisane w sekcji Raportowanie.
    • Jeśli używasz narzędzia wiersza polecenia, dołącz flagę --report .
  • Jeśli używasz wtyczki, skonfiguruj flagę verify i upewnij się, że nie generuje błędów. Zobacz Weryfikacja.
  • Sprawdź dokładnie wszystkie wykluczenia (excludeProjects, excludeClasses, oraz excludeVariants) w pliku build.gradle. Upewnij się, że każde wykluczenie jest konieczne i nie dotyczy danych chronionych. W przeszłości wiele błędów związanych z wyciekiem danych występowało z powodu zbyt agresywnych wykluczeń.
  • Bez zainstalowanej aplikacji Intune — Portal firmy uruchom skompilowaną aplikację. Zaloguj się jako użytkownik usługi Microsoft Entra, który nie jest objęty zasadami ochrony aplikacji. Potwierdź, że aplikacja działa zgodnie z oczekiwaniami.
    • Wyloguj się i powtórz ten test z zainstalowaną usługą Intune — Portal firmy.

Często zadawane pytania

Moja aplikacja wcześniej integrowała zestaw SDK bez wtyczki kompilacji; jak mogę używać wtyczki build?

Starsze wersje zestawu SDK aplikacji usługi Intune nie zawierały żadnego automatycznego sposobu zastępowania klas i metod. Programiści musieli wykonać te zamiany ręcznie w kodzie źródłowym. Jeśli Twoja aplikacja jest zintegrowana w ten sposób, można bezpiecznie zastosować wtyczkę do kompilacji lub narzędzie do kompilacji wiersza polecenia. Nie potrzebujesz żadnych modyfikacji kodu źródłowego. Projekt musi nadal zawierać zestaw SDK zarządzania aplikacjami mobilnymi jako zależność.

Następne kroki

Po spełnieniu wszystkich kryteriów wyjścia przejdź do etapu 4: MAM Integration Essentials.