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
MAMActivity
programu , 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 Activity
jak , onMAMCreate
będzie działać identycznie onCreate
jak , 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łączanieActivity
są 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 typydebug
kompilacji irelease
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 wexcludeProjects
-
:product:foo-project
jest ponownie zapisywany, z wyjątkiemcom.contoso.SplashActivity
elementu , który jest pomijany, ponieważ znajduje się wexcludeClasses
-
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 wmam-build\libs\bar.jar
-
zap.jar
nie jest przepisywany, ponieważ znajduje się tylko na liście--classpath
- Klasa
com.contoso.SplashActivity
nie 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.Application
narzę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.
Zalecane najlepsze rozwiązania dotyczące systemu Android
- 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ócenianull
. Upewnij się, żenull
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 jakMAMClipboard.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 obiekturequestCode
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
,excludeClasses
iexcludeVariants
) 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.