Udostępnij za pośrednictwem


zestaw SDK aplikacji Intune dla systemu Android — wprowadzenie do zarządzania aplikacjami mobilnymi

Zestaw SDK aplikacji Microsoft Intune dla systemu Android umożliwia włączenie Intune zasad ochrony aplikacji (znanych również jako zasady aplikacji lub zarządzania aplikacjami mobilnymi) do natywnej aplikacji Java/Kotlin dla systemu Android. Aplikacja zarządzana Intune jest zintegrowana z zestawem Intune App SDK. Intune administratorzy mogą łatwo wdrażać zasady ochrony aplikacji w aplikacji zarządzanej Intune, gdy Intune aktywnie zarządza aplikacją.

Uwaga

Ten przewodnik jest podzielony na kilka odrębnych etapów. Zacznij od przejrzenia etapu 1. Planowanie integracji.

Etap 3. Wprowadzenie z aplikacjami mobilnymi

Goals etapów

  • Pobierz zestaw SDK aplikacji Intune.
  • Dowiedz się, jakie pliki znajdują się w zestawie Intune App SDK.
  • Odwołaj się do zestawu SDK aplikacji Intune w aplikacji.
  • Skonfiguruj wtyczkę kompilacji Intune App Gradle LUB użyj narzędzia kompilacji wiersza polecenia.
  • Upewnij się, że zestaw SDK aplikacji Intune jest prawidłowo uwzględniony w kompilacji.

Tło

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

Duża część integracji zestawu Intune App SDK zastępuje standardowe klasy i wywołania metod systemu Android Intune wersji tych klas i wywołań metod. Zestaw SDK zawiera narzędzia kompilacji, które automatycznie tworzą większość tych zamienników. Jeśli chcesz dowiedzieć się więcej na temat tej logiki zastępczej, zobacz sekcję zamiany klas i metod w dodatku.

Pobieranie zestawu SDK aplikacji Intune

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

Co jest w zestawie SDK?

Zestaw Intune App SDK 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 ułatwia integrację zestawu SDK.
  • CHANGELOG.md: zawiera rekord zmian wprowadzonych w każdej wersji zestawu SDK.
  • THIRDPARTYNOTICES.TXT: powiadomienie o przypisania, które potwierdza kod innych firm i/lub systemu operacyjnego, który zostanie skompilowany do aplikacji.
  • Microsoft. Intune. MAM. Zestaw SDK. DownlevelStubs.aar: ta metoda AAR zawiera wycinki dla klas systemowych systemu Android, które są obecne tylko na nowszych urządzeniach, ale które są przywoływane przez metody w funkcji MAMActivity. Nowsze urządzenia ignorują te klasy wycinka. Ta funkcja AAR jest niezbędna tylko wtedy, gdy aplikacja wykonuje refleksję nad klasami pochodzącymi z MAMActivityprogramu , a większość aplikacji nie musi jej uwzględniać. AAR zawiera reguły ProGuard, aby wykluczyć wszystkie jego klasy.

Odwoływanie się do bibliotek aplikacji Intune

Zestaw Intune App SDK to standardowa biblioteka systemu Android bez zależności zewnętrznych. Microsoft. Intune. MAM. Plik SDK.aar zawiera zarówno interfejsy niezbędne do włączenia zasad ochrony aplikacji, jak i 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 kompilacji, postępuj zgodnie z instrukcjami Dodawanie biblioteki AAR lub JAR jako zależności z dokumentacji systemu Android.

Visual Studio

Zestaw SDK aplikacji Intune dla pakietu NuGet dla platformy .NET MAUI — Android musi zostać dodany jako zależność.

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

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

ProGuard

Aplikacja może już używać narzędzia ProGuard (lub innego mechanizmu zmniejszania/zaciemniania) jako kroku kompilacji. Zestaw SDK aplikacji Intune ma reguły konfiguracji ProGuard, które muszą zostać uwzględnione w tym kroku kompilacji. Łącznie z elementem . Biblioteka AAR w kompilacji, zgodnie z powyższym opisem, automatycznie integruje konfigurację zestawu SDK z krokiem ProGuard, dzięki czemu niezbędne pliki klas są przechowywane. Jeśli prawidłowo dołączono element . AAR, nie jest wymagana żadna inna zmiana.

Biblioteka Microsoft Authentication Library (MSAL) jest dostarczana z własną konfiguracją ProGuard. Jeśli aplikacja integruje bibliotekę MSAL, zapoznaj się z dokumentacją msal , aby uzyskać więcej szczegółów.

Tworzenie narzędzi

Zestaw SDK udostępnia narzędzia kompilacji (wtyczkę dla kompilacji Gradle, obiekty docelowe dla kompilacji platformy .NET i narzędzie wiersza polecenia), które automatycznie wykonują zamiany funkcji MAM. Te narzędzia przekształcają pliki klas wygenerowane przez kompilację Języka Java; nie modyfikują oryginalnego kodu źródłowego. Musisz użyć wtyczki Gradle, pakietu NuGet platformy .NET lub narzędzia wiersza polecenia.

Samo narzędzie kompilacji nie wystarcza do pełnej integracji aplikacji. Narzędzia wykonują tylko zamiany klas i metod . Nie wykonują one żadnych bardziej złożonych integracji zestawu SDK, takich jak obsługa wielu tożsamości, rejestrowanie w zasadach ochrony aplikacji, zasady ograniczania transferu danych między aplikacjami i lokalizacjami magazynu urządzenia lub chmury albo konfiguracja biblioteki MSAL, które muszą zostać ukończone, zanim aplikacja zostanie w pełni Intune włączona. Dokładnie przejrzyj pozostałą część tej dokumentacji, aby zapoznać się z punktami integracji dotyczącymi aplikacji.

Wpływ na debugowanie

Narzędzie kompilacji wykonuje zamiany po kompilacji, co spowoduje zmianę niektórych nazw metod. W związku z tym debugowanie punktów przerwania ustawionych dla nazw metod może mieć wpływ i nie zostać zatrzymane zgodnie z oczekiwaniami. Nie ma to wpływu na punkty przerwania numerów wierszy.

Zarządzanie aplikacjami mobilnymi w stosie

Ponieważ integracja zestawu Intune App SDK w dużym stopniu opiera się na zamianach klas i metod, zaczniesz widzieć mam ślady stosu. Jeśli aplikacja nie ma konta objętego zasadami ochrony aplikacji, cały ten kod mam jest uśpiony: MAMActivity będzie działać identycznie Activityjak , onMAMCreate będzie działać identycznie onCreatejak , itp. Zawsze, gdy zobaczysz mam w stosie, najpierw sprawdź:

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

O ile odpowiedź na oba elementy nie brzmi "tak", kod MAM działa jako proste przekazywanie.

Jakiego narzędzia potrzebuję?

Jeśli tworzysz aplikację za pomocą narzędzia Gradle, zobacz Integrating with the Gradle Build Plugin (Integracja z wtyczką kompilacji Gradle)

Jeśli skompilujesz aplikację przy użyciu interfejsu MAUI platformy .NET, zobacz Integrowanie z obiektami docelowymi maui platformy .NET.

Jeśli skompilujesz aplikację przy użyciu żadnej z powyższych czynności, zobacz Integrating with the Command Line Tool (Integrowanie z narzędziem wiersza polecenia).

Integracja z wtyczką kompilacji Gradle

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

Aby wtyczka została rozpoznana przez narzędzie Gradle, należy ją dodać do ścieżki buildscript klasy. Wtyczka zależy od języka Javassist, który również musi zostać dodany. Aby uzyskać więcej informacji na temat zależności javassist, zobacz Zależności.

Aby dodać je do ścieżki klasy, dodaj następujące elementy do katalogu głównego 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 aplikacji i modułów 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ę testów.

Uwaga

Począwszy od zestawu SDK aplikacji Intune 8.0, nie można już selektywnie przetwarzać bibliotek. Wszystkie biblioteki są przetwarzane.

Zależności

Uwaga

Musisz używać wersji 3.6.1 lub nowszej wtyczki Android Gradle i wersji 5.6.4 lub nowszej narzędzia Gradle.

Wtyczka Gradle ma zależność od języka Javassist, która musi zostać udostępniona do rozwiązania zależności narzędzia Gradle. Środowisko Javassist jest używane wyłącznie w czasie kompilacji podczas uruchamiania wtyczki i żaden kod Javassist nie zostanie dodany do aplikacji.

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 Intune App SDK:

  • zestaw SDK aplikacji Intune ≥ 10.0.0 wymaga języka Javassist 3.29.2-GA
  • zestaw SDK aplikacji Intune ≥ 7.0.0 wymaga języka Javassist 3.27.0-GA
  • Intune Zestaw SDK < aplikacji 7.0.0 wymaga języka Javassist 3.22.0-GA

Ponadto podczas korzystania z zestawu MAM SDK 8.0.0 lub nowszego należy upewnić się, że w konfiguracji narzędzia Gradle ustawiono następujące ustawienia:

compileOptions {
  sourceCompatibility JavaVersion.VERSION_1_8
  targetCompatibility JavaVersion.VERSION_1_8
}

Wykluczenia

Można podać dodatkowe konfiguracje, aby wykluczyć określone składniki w aplikacji z ponownych zapisów. Wykluczenia są głównie przydatne w przypadku składników, które nie są istotne dla zarządzania aplikacjami mobilnymi (tj. 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 obsługują interfejsów z bibliotekami systemu Android ani systemowymi interfejsami API i/lub nie obsługują danych firmowych. Na przykład projekt, który zawiera wyłącznie natywny kod do wykonywania operacji sieciowych niskiego poziomu, może być dobrym kandydatem. Jeśli projekt ma szerokie interfejsy z bibliotekami systemu Android lub interfejsami API systemu, należy unikać tych wykluczeń.
  • excludeClasses umożliwia wykluczenie listy klas. Te wykluczenia są przydatne w przypadku klas, które nie obsługują ani nie prezentują danych firmowych. Na przykład ekrany powitalne i dołączanie Activitysą dobrymi kandydatami. Należy pamiętać, że nie można wykluczyć klasy, jeśli którakolwiek z jej superklas jest przetwarzana.
  • 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ć smak aplikacji bez zarządzania aplikacjami mobilnymi. Jeśli na przykład aplikacja ma typy debug kompilacji i release o smakach {noMAM, MAM} i {mock, production} możesz określić następujące elementy:
    • noMAM aby wykluczyć wszystkie warianty o smaku noMAM lub
    • noMAMMockDebug aby wykluczyć tylko ten dokładny wariant.

Uwaga

Nie należy lekceważyć wykluczeń. Nieprawidłowe zastosowanie wykluczeń może spowodować poważne wycieki danych w aplikacji. Zawsze weryfikuj wpływ wszelkich zastosowanych wykluczeń.

Przykład częściowego pliku 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 ponownie zapisywany, ponieważ jest uwzględniony w excludeProjects
  • :product:foo-project jest ponownie zapisywany, z wyjątkiem com.contoso.SplashActivityelementu , który jest pomijany, ponieważ znajduje się w excludeClasses
  • com.microsoft.bar:baz.1.0.0 jest ponownie zapisywany, ponieważ wszystkie biblioteki zewnętrzne są dołączone do przetwarzania.
  • Warianty o noMAM smaku nie są zapisywane ponownie.

Raportowanie

Wtyczka kompilacji może wygenerować raport HTML dotyczący wprowadzonych zmian. Aby zażądać wygenerowania tego raportu, określ report = true w intunemam bloku konfiguracji. Jeśli zostanie wygenerowany, raport zostanie zapisany outputs/logs w katalogu kompilacji.

intunemam {
    report = true
}

Weryfikacji

Wtyczka kompilacji może uruchomić dodatkową weryfikację w celu wyszukania możliwych błędów w klasach przetwarzania. Te kontrole ułatwiają ochronę przed potencjalnymi błędami środowiska uruchomieniowego wywołanymi przez wtyczkę.

Aby zażądać weryfikacji w kompilacji, określ verify = true w intunemam bloku konfiguracji. Może to dodać kilka sekund do czasu potrzebnego przez zadanie wtyczki.

intunemam {
    verify = true
}

Ogólnie rzecz biorąc, błąd weryfikacji reprezentuje usterkę w wtyczce kompilacji. Aby uzyskać pomoc dotyczącą awarii, eskaluj problem z pomocą techniczną firmy Microsoft. Jeśli nie masz umowy pomocy technicznej firmy Microsoft, otwórz problem z usługą GitHub.

Kompilacje przyrostowe

Aby włączyć obsługę tworzenia przyrostowego, określ incremental = true w intunemam bloku konfiguracji. Ta funkcja zwiększa wydajność kompilacji, przetwarzając tylko pliki wejściowe, które uległy zmianie. Domyślna konfiguracja elementu incremental to false.

intunemam {
    incremental = true
}

Konfiguracja modułu funkcji dynamicznych

Moduły funkcji dynamicznych są kompilowane oddzielnie od projektu aplikacji. W związku z tym moduły funkcji dynamicznych muszą również zastosować wtyczkę kompilacji Gradle.

Ze względu na ograniczenia techniczne interfejsów API używanych przez wtyczkę Gradle klasy aplikacji muszą być ponownie przetwarzane podczas przekształcania klas modułów funkcji dynamicznych. Aby upewnić się, że można to zrobić, wszystkie moduły funkcji powinny być skonfigurowane z tymi samymi ustawieniami co aplikacja, dla której jest przeznaczona.

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

Integracja z elementami docelowymi maui platformy .NET

Obiekty docelowe zestawu SDK aplikacji Intune są dystrybuowane w ramach zestawu SDK jako microsoft.Intune. Maui. Essentials.android.targets.

Obiekty docelowe zostaną automatycznie zaimportowane do aplikacji w czasie kompilacji po dodaniu pakietu NuGet Intune App SDK for .NET MAUI — Android NuGet.

Integracja z narzędziem kompilacji wiersza polecenia

Narzędzie kompilacji wiersza polecenia jest dostępne w folderze BuildTool listy rozwijanej zestawu SDK. Wykonuje ona tę samą funkcję co wtyczka Gradle/.NET obiektów docelowych szczegółowo powyżej, ale może być zintegrowana z niestandardowych systemów kompilacji. Ponieważ jest to bardziej ogólne, wywoływanie jest bardziej złożone, więc wtyczka Gradle / obiekty docelowe platformy .NET powinny być używane zawsze, gdy jest to możliwe.

Korzystanie z narzędzia Command-Line

Narzędzie wiersza polecenia można wywołać przy użyciu udostępnionych skryptów pomocnika znajdujących się w BuildTool\bin 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 klasy do zmodyfikowania. Powinno to obejmować wszystkie pliki jar/katalogi, które zamierzasz ponownie zapisać.
--output Tak Rozdzielana średnikami lista plików jar i katalogów do przechowywania zmodyfikowanych klas. Powinien istnieć jeden wpis wyjściowy na wpis wejściowy i powinien być wymieniony w 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 ponownego pisania.
--report Nie Katalog do napisania raportu HTML o zmodyfikowanych klasach. Jeśli nie zostanie określony, żaden raport nie zostanie zapisany.

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

Porada

W systemach podobnych do systemu Unix średnik jest separatorem poleceń. Aby uniknąć dzielenia poleceń przez powłokę, pamiętaj o ucieczce każdego średnika za pomocą znaku "" lub zawijaniu pełnego parametru w cudzysłowie.

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:

  • product-foo-project katalog jest ponownie zapisywany wmam-build\product-foo-project
  • bar.jar jest ponownie zapisywany w mam-build\libs\bar.jar
  • zap.jar nie jest przepisywany, ponieważ znajduje się tylko na liście--classpath
  • Klasa com.contoso.SplashActivitynie jest zapisywana ponownie, nawet jeśli jest w --input

Ostrzeżenie

Narzędzie kompilacji nie obsługuje obecnie plików aar. Jeśli system kompilacji nie został jeszcze wyodrębniony classes.jar podczas obsługi plików aar, należy to zrobić przed wywołaniem narzędzia kompilacji.

Ustawianie aplikacji MAM

Jeśli aplikacja utworzy podklasę , android.app.Applicationnarzędzie wtyczki kompilacji/wiersza polecenia przekształci klasę aplikacji.

Jeśli 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żyj najnowszych narzędzi kompilacji zestawu Android SDK.
  • Usuń wszystkie niepotrzebne i nieużywane biblioteki (na przykład android.support.v4).

Po automatycznym zastąpieniu zestaw SDK aplikacji Intune nadal utrzymuje kontrakt dostarczony przez interfejs API systemu Android. Jednak warunki niepowodzenia mogą być wyzwalane częściej w wyniku wymuszania zasad. Te najlepsze rozwiązania dotyczące systemu Android zmniejszą prawdopodobieństwo awarii:

  • Funkcje zestawu Android SDK, które mogą teraz zostać zwrócone null , mają większe prawdopodobieństwo zwrócenia null. Upewnij się, że null kontrole 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ępczych funkcji ZARZĄDZANIA aplikacjami mobilnymi, takich jak MAMClipboard.getPrimaryClipDescription(clipboardManager).
  • Wszystkie funkcje pochodne muszą wywoływać ich wersje superklasy.
  • Unikaj używania dowolnego interfejsu API w niejednoznaczny sposób. Na przykład użycie polecenia Activity.startActivityForResult bez sprawdzania obiektu requestCode spowoduje dziwne zachowanie.

Usługi

Wymuszanie zasad może mieć wpływ na interakcje z usługą systemu Android. Metody, które ustanawiają powiązanego połączenia usługi, takie jak Context.bindService może zakończyć się niepowodzeniem z powodu wymuszania zasad bazowych i Service.onBind mogą spowodować ServiceConnection.onNullBinding lub ServiceConnection.onServiceDisconnected. Interakcja z ustaloną usługą powiązaną SecurityException może spowodować wystąpienie problemu z powodu wymuszania zasad w programie Binder.onTransact.

Klienci powiązanych usług są zdecydowanie zachęcani do sprawdzania wyjątków zgłaszanych przez usługę, zamiast zezwalać na propagację wyjątków do pozostałej części aplikacji klienckiej.

Kryteria zakończenia

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

  • Upewnij się, że kompilacja została pomyślnie skompilowana i skompilowana.
  • Skonfiguruj flagę report , a następnie otwórz dokument raportu i potwierdź, że występują zamiany klas i metod:
    • Jeśli używasz wtyczki, wykonaj kroki opisane w temacie 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 powoduje ona błędów. Zobacz Weryfikacja.
  • Sprawdź dokładnie wszystkie wykluczenia (excludeProjects, excludeClassesi excludeVariants) w pliku build.gradle. Upewnij się, że każde wykluczenie jest konieczne i nie dotyczy chronionych danych. W przeszłości wystąpiło wiele błędów wycieku danych z powodu nadmiernie agresywnych wykluczeń.
  • Bez zainstalowania Intune — Portal firmy uruchom skompilowaną aplikację, zaloguj się przy użyciu Microsoft Entra użytkownika, który nie jest objęty zasadami ochrony aplikacji, i potwierdź, że aplikacja działa zgodnie z oczekiwaniami.
    • Wyloguj się i powtórz ten test z zainstalowanym Intune — Portal firmy.

Często zadawane pytania

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

Starsze wersje zestawu Intune App SDK nie zawierały żadnego zautomatyzowanego sposobu wykonywania zamian klas i metod, a deweloperzy musieli wykonać te zamiany ręcznie w kodzie źródłowym. Jeśli aplikacja została wcześniej zintegrowana w ten sposób, można bezpiecznie zastosować wtyczkę kompilacji (lub narzędzie do kompilacji wiersza polecenia) bez żadnych modyfikacji kodu źródłowego. Projekt musi nadal wyświetlać listę zestawu SDK zarządzania aplikacjami mobilnymi jako zależność.

Następne kroki

Po ukończeniu wszystkich kryteriów zakończenia przejdź do etapu 4: integracja zarządzania aplikacjami mobilnymi Essentials.