Notatka
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.
Zestaw SDK aplikacji usługi Microsoft Intune dla systemu Android umożliwia dołączanie zasad ochrony aplikacji usługi Intune (znanych również jako zasady zarządzania aplikacjami mobilnymi) do natywnej aplikacji systemu Android Java/Kotlin. Aplikacja zarządzana przez usługę Intune to aplikacja zintegrowana z zestawem SDK aplikacji usługi Intune. Administratorzy usługi Intune mogą łatwo wdrażać zasady ochrony aplikacji w aplikacji zarządzanej przez usługę Intune, gdy usługa Intune aktywnie zarządza tą aplikacją.
Ważna
Usługa Intune regularnie wydaje aktualizacje zestawu SDK aplikacji usługi Intune. Zalecamy zasubskrybowanie repozytoriów zestawu SDK aplikacji usługi Intune w celu uzyskania aktualizacji, co pozwoli uwzględnić aktualizacje w cyklu tworzenia oprogramowania i upewnić się, że aplikacje obsługują najnowsze ustawienia zasad ochrony aplikacji.
Zaplanuj wykonanie obowiązkowych aktualizacji zestawu SDK aplikacji usługi Intune przed każdą główną wersją systemu operacyjnego, aby zapewnić ciągłość bezproblemowego działania aplikacji, ponieważ aktualizacje systemu operacyjnego mogą powodować przełomowe zmiany. Jeśli nie zaktualizujesz do najnowszej wersji przed głównym wydaniem systemu operacyjnego, możesz napotkać zmianę powodującą niezgodność i/lub nie będzie można zastosować zasad ochrony aplikacji do aplikacji.
Przebieg procesu
Poniższy diagram przedstawia przepływ procesu zestawu SDK aplikacji usługi Intune dla systemu Android:
Cele etapu
Przewodnik zawiera więcej szczegółów na temat architektury zestawu SDK aplikacji usługi Intune, informacje o nietypowych krokach integracji i inną przydatną zawartość.
Zestaw SDK w szczegółach
Zamienniki klas i metod
Za pomocą narzędzi do kompilacji zestaw SDK aplikacji usługi Intune próbuje zminimalizować obciążenie związane z integracją deweloperów systemu Android. Przed wprowadzeniem narzędzi do tworzenia kompilacji deweloperzy musieli wykonywać wszystkie zmiany ręcznie.
Uwaga
Aplikacje muszą teraz integrować się z narzędziami kompilacji zestawu SDK, które wykonają wszystkie te zmiany automatycznie.
Klasy bazowe systemu Android są zastępowane odpowiednimi odpowiednikami MAM, aby umożliwić zarządzanie usługą Intune.
Klasy zestawu SDK znajdują się między klasą bazową systemu Android a własną wersją pochodną tej klasy aplikacji.
Na przykład działanie w aplikacji może zakończyć się hierarchią dziedziczenia, która wygląda następująco: AppSpecificActivity extends MAMActivity extends Activity.
Warstwa MAM filtruje wywołania operacji systemowych, aby bezproblemowo zapewnić aplikacji zarządzany widok świata.
Oprócz klas bazowych niektóre klasy, których aplikacja może używać bez wyprowadzania z (np. MediaPlayer) mają również wymagane odpowiedniki w aplikacjach mobilnych, a niektóre wywołania metod również muszą zostać zastąpione.
W poniższej tabeli wymieniono wiele zamienników MAM.
| Klasa bazowa systemu Android | Zastępowanie zestawu SDK aplikacji usługi Intune |
|---|---|
| android.app.Aktywność | MAMActivity |
| android.app.ActivityGroup | MAMActivityGroup |
| android.app.AliasActivity | MAMAliasActivity (Aktywność MAMAlias) |
| android.app. Aplikacja | Aplikacja MAMApplication |
| android.app.Okno dialogowe | MAMDialog |
| android.app.AlertDialog.Builder | MAMAlertDialogBuilder |
| android.app.Fragment okna dialogowego | MAMDialogFragment |
| android.app.ExpandableListActivity | MAMExpandableListActivity |
| android.app.Fragment | MAMFragment |
| android.app.IntentService | MAMIntentService |
| android.app.LauncherActivity | MAMLauncherActivity (Aktywność MAMLauncher) |
| android.app.ListActivity | MAMListActivity |
| android.app.ListFragment | MAMListFragment |
| android.app.NativeActivity | MAMNativeActivity (Aktywność MAMNative) |
| android.app.PendingIntent | MAMPendingIntent |
| android.app. Usługa | MAMService |
| android.app.TabActivity | MAMTabActivity (Aktywność MAMTab) |
| android.app.TaskStackBuilder | MAMTaskStackBuilder |
| android.app.backup.BackupAgent | MAMBackupAgent |
| android.app.backup.BackupAgentHelper | MAMBackupAgentHelper |
| android.app.backup.FileBackupHelper | MAMFileBackupHelper |
| android.app.backup.SharePreferencesBackupHelper | MAMSharedPreferencesBackupHelper |
| android.app.job.JobService | MAMJobService |
| android.content.BroadcastReceiver | Odbiornik MAMBroadcastReceiver |
| android.content.ContentProvider | MAMContentProvider |
| android.os.binder | MAMBinder (wymagane tylko wtedy, gdy plik wiążący nie jest generowany z interfejsu Android Interface Definition Language (AIDL)) |
| android.media.MediaPlayer | MAMMediaPlayer |
| android.media.MediaMetadataRetriever | MAMMediaMetadataRetriever |
| android.media.MediaRecorder | MAMMediaRecorder |
| android.provider.DocumentsProvider | MAMDocumentsProvider |
| android.preference.PreferenceActivity | MAMPreferenceActivity (Aktywność źródłowa) |
| android.widget.PopupWindow | MAMPopupMenu |
| android.widget.PopupWindow | MAMPopupWindow |
| android.widget.ListPopupWindow | MAMListPopupWindow |
| android.widget.TextView | MAMTextView |
| android.widget.AutoCompleteTextView | MAMAutoCompleteTextView |
| android.widget.CheckedTextView | MAMCheckedTextView |
| android.widget.EditText | MAMEditText (tekst MAPY) |
| android.inputmethodservice.ExtractEditText | MAMExtractEditText |
| android.widget.MultiAutoCompleteTextView | MAMMultiAutoCompleteTextView |
| android.view.LayoutInflater | MAMLayoutInflater |
| android.view.ViewGroup | MAMViewGroup |
| android.view.SurfaceView | MAMSurfaceView |
| android.opengl.GLSurfaceView | MAMGLSurfaceView |
| android.widget.VideoView | MAMVideoView |
Metody o zmienionej nazwie
W wielu przypadkach metoda dostępna w klasie systemu Android została oznaczona jako wersja ostateczna w klasie zastępczej zarządzania aplikacjami mobilnymi.
W takim przypadku klasa zastępcza zarządzania aplikacjami mobilnymi udostępnia metodę o podobnej nazwie (zwykle z sufiksem MAM), którą należy zastąpić.
Na przykład podczas wyprowadzania z MAMActivity, zamiast przesłaniać onCreate() i wywoływać super.onCreate(), Activity musi zastąpić onMAMCreate() i wywołać super.onMAMCreate().
Kompilator Java powinien wymusić ostateczne ograniczenia, aby zapobiec przypadkowemu zastąpieniu oryginalnej metody zamiast odpowiednika w środowisku MAM.
Opakowane usługi systemowe
W przypadku niektórych klas usługi systemowej konieczne jest wywołanie metody statycznej w klasie otoki zarządzania aplikacjami mobilnymi zamiast bezpośredniego wywoływania żądanej metody w wystąpieniu usługi.
Na przykład wywołanie getSystemService(ClipboardManager.class).getPrimaryClip() musi stać się wywołaniem MAMClipboardManager.getPrimaryClip(getSystemService(ClipboardManager.class).
Ponownie, wymagana wtyczka kompilacji automatycznie wprowadza te zamiany.
| Zajęcia dla systemu Android | Zastępowanie zestawu SDK aplikacji usługi Intune |
|---|---|
| android.content.ClipboardManager | MAMClipboard |
| android.content.ContentProviderClient | MAMContentProviderClientManagement |
| android.content.ContentResolver | MAMContentResolverManagement |
| android.content.pm.PackageManager | MAMPackageManagement |
| android.app.DownloadManager | MAMDownloadManagement |
| android.print.PrintManager | MAMPrintManagement |
| android.view.View | MAMViewManagement |
| android.view.DragEvent | MAMDragEventManagement |
| android.view.LayoutInflater | MAMLayoutInflaterManagement |
| android.app.Menedżer powiadomień | MAMNotificationManagement |
| android.app.blob.BlobStoreManager | MAMBlobStoreManager |
| android.app.blob.BlobStoreManager.Session | MAMBlobStoreManager.Session |
Niektóre klasy mają zawiniętą większość metod, na przykład ClipboardManager, , ContentResolverContentProviderClient, a PackageManager podczas gdy inne klasy mają tylko jedną lub dwie metody owinięte, na przykład DownloadManager, PrintManager, PrintHelper, DragEventViewNotificationManager , i .NotificationManagerCompat
Rejestracja w środowiskach MDM i MAM
Jak opisano w etapie 4 Rejestracja a rejestracja, zestaw SDK aplikacji usługi Intune "rejestruje" konta rejestrowane przez aplikację, aby konto było chronione za pomocą zasad. Konto zostanie przejęte po pomyślnym zarejestrowaniu się i zasady zarządzania aplikacjami mobilnymi powinny być teraz stosowane do tego konta.
Termin "rejestracja" może też odnosić się do zainicjowanego przez użytkownika końcowego procesu włączania funkcji Zarządzanie urządzeniami (MDM). Rejestracja w usłudze MDM jest całkowicie niezależna od rejestracji zasad ochrony aplikacji.
Aplikacja zintegrowana z zestawem SDK może mieć konto zarejestrowane w zasadach ochrony aplikacji bez rejestrowania tego konta w funkcji Zarządzanie urządzeniami. Podobnie, użytkownik może zarejestrować urządzenie do zarządzania urządzeniami bez żadnych aplikacji zintegrowanych z zestawem SDK z kontami zarejestrowanymi dla zasad ochrony aplikacji.
Zazwyczaj, gdy deweloperzy i administratorzy odwołują się do rejestracji, odnoszą się do rejestracji w usłudze MDM, ponieważ rejestracja zasad ochrony aplikacji jest w dużej mierze niewidoczna zarówno dla deweloperów, jak i użytkowników końcowych. Zobacz Rejestrowanie urządzeń z systemem Android , aby uzyskać więcej informacji na temat rejestracji w usłudze MDM.
Porady dotyczące integracji
Opis dzienników Portal firmy
Dzienniki Portal firmy zawierają informacje używane przez inżynierów firmy Microsoft podczas badania problemów. Niektóre dzienniki mogą być również przydatne dla programistów integrujących zestaw SDK.
W szczególności plik DiagnosticsInfo-scrubbed.log zawiera informacje o tym, jakie aplikacje są zarządzane przez MAM, oraz szczegóły zasad MAM w PolicyDB Information sekcji.
Każda aplikacja zarządzana ma wpis w tej PolicyDB Information sekcji.
W tym miejscu poszukaj nazwy pakietu aplikacji, aby potwierdzić, że zasady zarządzania aplikacjami mobilnymi są prawidłowo kierowane do aplikacji.
Jeśli nie widzisz tutaj nazwy pakietu aplikacji, oznacza to, że do konta, do którego się zalogowano, nie zastosowano zasad zarządzania aplikacjami mobilnymi.
Aby zapoznać się z opisem każdego ustawienia zasad zarządzania aplikacjami mobilnymi, zobacz Ustawienia zasad ochrony aplikacji dla systemu Android w usłudze Microsoft Intune. Aby uzyskać opis sposobu wyświetlania tych ustawień w dziennikach Portal firmy, zobacz Przeglądanie dzienników ochrony aplikacji klienckich. Jeśli zasady zarządzania aplikacjami mobilnymi nie są wymuszane zgodnie z oczekiwaniami, zalecamy sprawdzenie dzienników Portal firmy lub interfejsu diagnostyki, sprawdzenie, czy aplikacja jest zarządzana przez zasady zarządzania aplikacjami mobilnymi i potwierdzenie, że ustawienia zasad mają oczekiwane wartości.
Dzienniki Portal firmy możesz zbierać na jeden z następujących sposobów:
- Za pośrednictwem Portal firmy
- Otwórz aplikację Portal firmy
- Wybierz menu z trzema kropkami w prawym górnym rogu
- Wybierz Ustawienia
- W obszarze Dzienniki diagnostyczne wybierz pozycję Zapisz dzienniki
- Postępuj zgodnie z monitem, aby wybrać katalog wyjściowy do zapisywania dzienników Portal firmy.
- Użyj
adb shell pullpolecenia, aby ściągnąć dzienniki z urządzenia z systemem Android na komputer lokalny.
- [Użyj przeglądarki Microsoft Edge dla systemu Android, aby uzyskać dostęp do dzienników aplikacji zarządzanych]. Spowoduje to wyświetlenie interfejsu użytkownika do zbierania dzienników Portal firmy i wyświetlania diagnostyki zarządzania aplikacjami mobilnymi.
- Wywołaj
MAMPolicyManager.showDiagnostics(context), aby wyświetlić ten sam interfejs użytkownika do zbierania dzienników Portal firmy.
Szybkie testowanie ze zmieniającymi się zasadami
Podczas opracowywania i testowania integracji aplikacji z zestawem SDK aplikacji usługi Intune możesz często zmieniać ustawienia zasad ochrony aplikacji dla użytkownika testowego.
Domyślnie zintegrowane aplikacje będą ewidencjonować w usłudze Intune zaktualizowane zasady co 30 minut, gdy są aktywne. Możesz uniknąć tego oczekiwania i wymusić zaewidencjonowanie za pośrednictwem Portal firmy:
- Uruchom Portal firmy. Nie musisz się logować.
- Wybierz pozycję ... ikona menu.
- Wybierz pozycję Ustawienia.
- Przewiń do ustawienia o nazwie "Zasady zarządzania".
- Naciśnij przycisk Synchronizuj.
Spowoduje to natychmiastowe zaplanowanie zameldowania i pobranie aktualnych zasad dotyczących aplikacji i konta.
Rozwiązywanie problemów z migracją AndroidX
Jeśli przed użyciem systemu AndroidX zintegrowano zestaw SDK aplikacji usługi Intune, podczas migracji do systemu AndroidX może wystąpić następujący błąd:
incompatible types: android.support.v7.app.ActionBar cannot be converted to androidx.appcompat.app.ActionBar
Te błędy mogą wystąpić, ponieważ aplikacja odwołuje się do starszych klas obsługi zestawu SDK. Klasy obsługi zarządzania aplikacjami mobilnymi obejmują klasy obsługi systemu Android, które zostały przeniesione w systemie AndroidX. Aby wyeliminować takie błędy, zastąp wszystkie odwołania klas obsługi zarządzania aplikacjami mobilnymi ich odpowiednikami w systemie AndroidX. Można to osiągnąć, usuwając najpierw zależności biblioteki obsługi zarządzania aplikacjami mobilnymi z plików kompilacji narzędzia Gradle. Wiersze, o których mowa, będą wyglądać podobnie do poniższych:
implementation "com.microsoft.intune.mam:android-sdk-support-v4:$intune_mam_version"
implementation "com.microsoft.intune.mam:android-sdk-support-v7:$intune_mam_version"
Następnie napraw wynikowe błędy w czasie kompilacji, zastępując wszystkie odwołania do klas MAM w pakietach com.microsoft.intune.mam.client.support.v7 i com.microsoft.intune.mam.client.support.v4 ich odpowiednikami AndroidX.
Na przykład odwołania do MAMAppCompatActivity powinny zostać zmienione na AndroidX AppCompatActivity.
Jak omówiono powyżej, wtyczka/narzędzie kompilacji zarządzania aplikacjami mobilnymi automatycznie ponownie zapisze klasy w bibliotekach AndroidX z odpowiednimi odpowiednikami zarządzania aplikacjami mobilnymi w czasie kompilacji.
Ograniczenia i przypadki specjalne
Rejestracja domyślna
Aplikacja może alternatywnie rejestrować się w zasadach ochrony aplikacji za pomocą uproszczonego procesu nazywanego rejestracją domyślną. Ta funkcja ma przede wszystkim obsługiwać prywatne aplikacje biznesowe, które nie mają zintegrowanej biblioteki MSAL.
Ostrzeżenie
Rejestracja domyślna wiąże się ze znacznymi kompromisami i nie jest zalecana. Aplikacje wykorzystujące rejestrację domyślną nie obsługują dostępu warunkowego, nie korzystają z logowania jednokrotnego z usługami firmy Microsoft i nie mogą być używane przez konta inne niż Intune. Jeśli aplikacja zostanie dostarczona do publicznego sklepu z aplikacjami, rejestracja domyślna nie będzie obsługiwana.
Rejestracja domyślna wymusi na użytkowniku końcowym zainstalowanie Portal firmy i ukończenie przepływu rejestracji MAM przed dopuszczeniem użytkowników do aplikacji.
Uwaga
Rejestracja domyślna jest obsługiwana przez suwerenną chmurę.
Aby włączyć rejestrację domyślną, wykonaj następujące czynności:
Jeśli Twoja aplikacja jest zintegrowana z biblioteką MSAL lub musisz włączyć logowanie jednokrotne, skonfiguruj bibliotekę MSAL. W innych przypadkach można pominąć ten krok.
Włącz rejestrację domyślną, dodając następującą wartość w manifeście pod tagiem
<application>:<meta-data android:name="com.microsoft.intune.mam.DefaultMAMServiceEnrollment" android:value="true" />Włącz wymagane zasady zarządzania aplikacjami mobilnymi, dodając następującą wartość w manifeście pod tagiem
<application>:<meta-data android:name="com.microsoft.intune.mam.MAMPolicyRequired" android:value="true" />
Procesy izolowane
Zestaw SDK aplikacji usługi Intune nie może stosować ochrony do izolowanych procesów.
Obsługa izolowanych procesów (android:isolatedProcess) wymaga dodania poniższego tagu metadanych.
Ostrzeżenie
Dodając te metadane, aplikacja deklaruje, że izolowany proces nie może ujawnić danych organizacji. Twoja aplikacja jest odpowiedzialna za zagwarantowanie tego.
<meta-data android:name="com.microsoft.intune.mam.AllowIsolatedProcesses" android:value="true" />
Niestandardowe ograniczenia rejestratora ekranu
Jeśli aplikacja zawiera niestandardową funkcję przechwytywania ekranu, która omija ograniczenia systemu FLAG_SECURE AndroidWindow, musisz sprawdzić zasady tworzenia zrzutów ekranu przed zezwoleniem na pełny dostęp do tej funkcji.
Jeśli na przykład aplikacja używa niestandardowego aparatu renderowania w celu renderowania bieżącego widoku do pliku PNG, musisz najpierw sprawdzić AppPolicy.getIsScreenCaptureAllowed().
Jeśli aplikacja nie zawiera żadnych niestandardowych funkcji przechwytywania ekranu ani funkcji przechwytywania ekranu innych firm, nie musisz podejmować żadnych działań w celu ograniczenia możliwości nagrywania zrzutów ekranu.
Zasady tworzenia zrzutów ekranu są automatycznie wymuszane na Window poziomie wszystkich zintegrowanych aplikacji MAM.
Wszelkie próby przechwycenia Window pliku w Twojej aplikacji przez system operacyjny lub inną aplikację będą blokowane jako wymagane.
Jeśli na przykład użytkownik spróbuje przechwycić ekran aplikacji za pomocą wbudowanych w system Android funkcji zrzutów ekranu lub nagrywania ekranu, przechwytywanie zostanie automatycznie ograniczone bez udziału aplikacji.
Ograniczenia wymuszania zasad
Korzystanie z funkcji rozpoznawania zawartości: Zasady usługi Intune "transfer lub odbierz" mogą blokować lub częściowo blokować korzystanie z narzędzia do rozpoznawania zawartości w celu uzyskania dostępu do dostawcy zawartości w innej aplikacji. Spowoduje to, że
ContentResolvermetody zwrócą wartość null lub wyrzucą wartość błędu (na przykład zrzucąFileNotFoundException,openOutputStreamjeśli zostaną zablokowane). Aplikacja może określić, czy błąd zapisu danych za pośrednictwem programu rozpoznawania zawartości został spowodowany przez zasady (lub byłby spowodowany przez zasady), wykonując wywołanie:MAMPolicyManager.getPolicy(currentActivity).getIsSaveToLocationAllowed(contentURI);lub jeśli nie ma skojarzonego działania:
MAMPolicyManager.getCurrentThreadPolicy().getIsSaveToLocationAllowed(contentURI);W tym drugim przypadku aplikacje z wieloma tożsamościami muszą zadbać o odpowiednie ustawienie tożsamości wątku (lub przekazać jawną tożsamość do wywołania
getPolicyForIdentity).
Wyeksportowane usługi
Plik AndroidManifest.xml zawarty w zestawie SDK aplikacji Intune zawiera usługę MAMNotificationReceiverService, która musi być usługą eksportowaną, aby umożliwić Portal firmy wysyłanie powiadomień do aplikacji zarządzanej. Usługa sprawdza rozmówcę, aby upewnić się, że tylko Portal firmy może wysyłać powiadomienia.
Ograniczenia odbicia
Niektóre klasy bazowe zarządzania aplikacjami mobilnymi (na przykład MAMActivity, MAMDocumentsProvider) zawierają metody (oparte na oryginalnych klasach bazowych systemu Android), które używają typów parametrów lub zwracanych tylko powyżej określonych poziomów interfejsu API.
Z tego powodu nie zawsze jest możliwe użycie odbicia do wyliczenia wszystkich metod składników aplikacji.
To ograniczenie nie jest ograniczone do zarządzania aplikacjami mobilnymi, jest to to samo ograniczenie, które miałoby zastosowanie, gdyby sama aplikacja zaimplementowała te metody z klas bazowych systemu Android.
Robolectric
Testing Intune App SDK behavior under Robolectric is not supported. Istnieją znane problemy z uruchamianiem zestawu SDK w środowisku Robolectric ze względu na zachowania obecne w środowisku Robolectric, które nie naśladują dokładnie tych na rzeczywistych urządzeniach lub emulatorach.
Jeśli chcesz przetestować swoją aplikację w środowisku Robolectric, zalecanym obejściem jest przeniesienie logiki klasy aplikacji do pomocnika i utworzenie pakietu APK do testowania jednostkowego z klasą aplikacji, która nie dziedziczy po aplikacji MAMApplication.