Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Sada Microsoft Intune App SDK pro Android umožňuje začlenit zásady ochrany aplikací Intune (označované také jako zásady MAM) do nativní aplikace Java/Kotlin pro Android. Aplikace spravovaná Intune je aplikace, která je integrovaná se sadou Intune App SDK. Správci Intune můžou do vaší Intune spravované aplikace snadno nasadit zásady ochrany aplikací Intune když ji aktivně spravuje.
Důležité
Intune pravidelně vydává aktualizace sady Intune App SDK. Doporučujeme přihlásit se k odběru úložišť sady Intune App SDK pro aktualizace, abyste mohli aktualizaci začlenit do cyklu vydávání softwaru a zajistit, aby vaše aplikace podporovaly nejnovější nastavení zásad ochrany aplikací.
Naplánujte si povinné aktualizace sady SDK pro aplikaci Intune před každým hlavním vydáním operačního systému, abyste zajistili, že vaše aplikace poběží hladce, protože aktualizace operačního systému můžou způsobit zásadní změny. Pokud neprovedete aktualizaci na nejnovější verzi před vydáním hlavní verze operačního systému, můžete se vystavit riziku, že dojde k zásadní změně a/nebo že nebudete moct u své aplikace použít zásady ochrany aplikací.
Tok procesu
Následující diagram poskytuje tok procesu sady Intune App SDK pro Android:
Cíle fází
Průvodce obsahuje podrobnější informace o architektuře sady SDK pro aplikace Intune, informace o neobvyklých krocích integrace a další užitečný obsah.
Podrobnější informace o sadě SDK
Nahrazení tříd a metod
Prostřednictvím nástrojů pro sestavení se sada Intune App SDK pokouší minimalizovat integrační zátěž vývojářů pro Android. Před vytvořením sestavovacích nástrojů museli vývojáři provést všechna nahrazení ručně.
Poznámka
Aplikace se teď musí integrovat s nástroji pro sestavení sady SDK, které provede všechna tato nahrazení automaticky.
Základní třídy Androidu se nahradí příslušnými ekvivalenty MAM, aby se povolila správa Intune.
Třídy sady SDK žijí mezi základní třídou Androidu a vlastní odvozenou verzí této třídy aplikace.
Aktivita aplikace může například skončit s hierarchií dědičnosti, která vypadá takto: AppSpecificActivity extends MAMActivity extends extends Activity.
Vrstva MAM filtruje volání systémových operací, aby vaší aplikaci bez problémů poskytla spravovaný pohled na svět.
Kromě základních tříd mají některé třídy, které může vaše aplikace používat bez odvození (např. MediaPlayer), také požadované ekvivalenty MAM a některá volání metod musí být také nahrazena.
V následující tabulce je uvedeno mnoho náhrad MAM.
| Základní třída Androidu | Nahrazení sady SDK pro aplikace Intune |
|---|---|
| android.app.Aktivita | MAMActivity |
| android.app.ActivityGroup | MAMActivityGroup |
| android.app.AliasActivity | MAMAliasActivity |
| android.app. Aplikace | MAMApplication |
| android.app.Dialog | MAMDialog |
| android.app.AlertDialog.Builder | MAMAlertDialogBuilder |
| android.app.DialogFragment | MAMDialogFragment |
| android.app.ExpandableListActivity | MAMExpandableListActivity |
| android.app.Fragment | MAMFragment |
| android.app.IntentService | MAMIntentService |
| android.app.LauncherActivity | MAMLauncherActivity |
| android.app.ListActivity | MAMListActivity |
| android.app.ListFragment | MAMListFragment |
| android.app.NativeActivity | MAMNativeActivity |
| android.app.PendingIntent | MAMPendingIntent |
| android.app.Service | MAMService |
| android.app.TabActivity | MAMTabActivity |
| 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 | MAMBroadcastReceiver |
| android.content.ContentProvider | MAMContentProvider |
| android.os.Binder | MAMBinder (nutné jenom v případě, že se pořadač negeneruje z rozhraní AIDL (Android Interface Definition Language)) |
| android.media.MediaPlayer | MAMMediaPlayer |
| android.media.MediaMetadataRetriever | MAMMediaMetadataRetriever |
| android.media.MediaRecorder | MAMMediaRecorder |
| android.provider.DocumentsProvider | MAMDocumentsProvider |
| android.preference.PreferenceActivity | MAMPreferenceActivity |
| 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 |
| 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 |
Přejmenované metody
V mnoha případech byla metoda dostupná ve třídě Androidu označena jako konečná v náhradní třídě MAM.
V tomto případě náhradní třída MAM poskytuje podobně pojmenovanou metodu (obvykle s příponou MAM), kterou byste měli místo toho přepsat.
Například při odvození z MAMActivity, místo přepsání onCreate() a volání super.onCreate(), Activity musí přepsat onMAMCreate() a volat super.onMAMCreate().
Kompilátor Javy by měl vynutit konečná omezení, aby se zabránilo náhodnému přepsání původní metody místo ekvivalentu MAM.
Zabalené systémové služby
U některých tříd systémové služby je nutné volat statickou metodu ve třídě obálky MAM místo přímého vyvolání požadované metody v instanci služby.
Například volání se getSystemService(ClipboardManager.class).getPrimaryClip() musí stát voláním .MAMClipboardManager.getPrimaryClip(getSystemService(ClipboardManager.class)
Opět platí, že požadovaný modul plug-in sestavení provede tato nahrazení automaticky.
| Třída Androidu | Nahrazení sady SDK pro aplikace 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.NotificationManager | Správa MAMNotifikace |
| android.app.blob.BlobStoreManager | MAMBlobStoreManager |
| android.app.blob.BlobStoreManager.Session | MAMBlobStoreManager.Session |
Některé třídy mají většinu svých metod zalomenou, například , , , , a PackageManager zatímco jiné třídy mají zalomenou pouze jednu nebo dvě metody, například DownloadManager, PrintManager, PrintHelper, View, DragEventNotificationManager , a NotificationManagerCompat. ContentResolverContentProviderClientClipboardManager
Registrace MDM a MAM
Jak je popsáno v části Registrace vs. registrace ve fázi 4, sada SDK pro aplikace Intune "zaregistruje" účty, které vaše aplikace zaregistruje, aby byl účet chráněný zásadami. Po úspěšné registraci se účet začne spravovat a na tento účet by se teď měly použít zásady MAM.
Pojem "registrace" může taky označovat proces povolení Správa zařízení (MDM) iniciovaný koncovým uživatelem. Registrace MDM je zcela oddělená od registrace zásad ochrany aplikací.
Aplikace integrovaná se sadou SDK může mít účet zaregistrovaný pro zásady ochrany aplikací, aniž by byl tento účet zaregistrovaný pro Správa zařízení. Stejně tak může uživatel zaregistrovat zařízení pro Správa zařízení, aniž by měl jakékoli aplikace integrované se sadou SDK s účty zapsanými pro zásady ochrany aplikací.
Když vývojáři a správci odkazují na registraci, obvykle mají na mysli registraci MDM, protože registrace zásad ochrany aplikací je do značné míry neviditelná pro vývojáře i koncové uživatele. Další podrobnosti o registraci MDM najdete v části Registrace zařízení s Androidem .
Tipy pro integraci
Principy protokolů Portál společnosti
Protokoly Portál společnosti obsahují informace, které technici Microsoftu používají při vyšetřování problémů. Některé protokoly můžou být užitečné i pro vývojáře, kteří sadu SDK integrují.
Soubor DiagnosticsInfo-scrubbed.log obsahuje zejména informace o tom, které aplikace MAM spravuje, a podrobnosti o zásadách MAM v této PolicyDB Information části.
Každá spravovaná aplikace má v PolicyDB Information této části nějakou položku.
Měli byste tady vyhledat název balíčku vaší aplikace, abyste si ověřili, že jsou zásady MAM správně cílené na vaši aplikaci.
Pokud tady název balíčku aplikace nevidíte, znamená to, že přihlášený účet nemá použitou zásadu MAM.
Popis jednotlivých nastavení zásad MAM najdete v tématu Nastavení zásad ochrany aplikací pro Android v Microsoft Intune. Popis toho, jak se tato nastavení zobrazí v protokolech Portál společnosti, najdete v tématu Kontrola protokolů ochrany klientských aplikací. Pokud se zásady MAM nevynucují podle očekávání, doporučujeme zkontrolovat protokoly Portál společnosti nebo uživatelské rozhraní diagnostiky, ověřit, že je vaše aplikace spravovaná zásadami MAM, a ověřit, že nastavení zásad má očekávané hodnoty.
Protokoly Portál společnosti můžete shromažďovat jedním z následujících způsobů:
- Přes Portál společnosti
- Otevřete aplikaci Portál společnosti
- Výběr nabídky se třemi tečkami v pravém horním rohu
- Vyberte Nastavení.
- V části Diagnostické protokoly vyberte Uložit protokoly.
- Postupujte podle pokynů a zvolte výstupní adresář pro uložení protokolů Portál společnosti.
- Pomocí
adb shell pullpříkazu načtěte protokoly ze zařízení s Androidem do místního počítače.
- [Pro přístup ke spravovaným protokolům aplikací použijte Microsoft Edge pro Android]. Zobrazí se uživatelské rozhraní pro shromažďování protokolů Portál společnosti a zobrazení diagnostiky MAM.
- Call
MAMPolicyManager.showDiagnostics(context)to display the same UI for collecting Portál společnosti protokoly.
Rychlé testování s měnícími se zásadami
Při vývoji a testování integrace sady Intune App SDK vaší aplikace můžete často měnit nastavení zásad ochrany aplikací pro testovacího uživatele.
Ve výchozím nastavení se integrované aplikace budou u služby Intune dotazovat na aktualizované zásady každých 30 minut, pokud jsou aktivní. Tomuto čekání se můžete vyhnout a vynutit vrácení se změnami přes Portál společnosti:
- Spusťte Portál společnosti. Nemusíte se přihlašovat.
- Vyberte ... Ikona nabídky.
- Vyberte Nastavení.
- Přejděte na nastavení s názvem Zásady správy.
- Stiskněte tlačítko Synchronizovat.
Tím se okamžitě naplánuje vrácení se změnami a načtou se aktuální zásady cílené na vaši aplikaci a účet.
Řešení potíží s migrací AndroidX
Pokud jste před využitím AndroidX integrovali sadu Intune App SDK, může při migraci na AndroidX dojít k chybě, jako je tato:
incompatible types: android.support.v7.app.ActionBar cannot be converted to androidx.appcompat.app.ActionBar
K těmto chybám může dojít, protože vaše aplikace odkazuje na starší třídy podpory sady SDK. Třídy podpory MAM zalamují třídy podpory Androidu, které se přesunuly do AndroidX. Pokud chcete takovým chybám zabránit, nahraďte všechny odkazy na třídy podpory MAM jejich ekvivalenty v AndroidX. Toho lze dosáhnout tak, že nejprve odeberete závislosti knihovny podpory MAM ze souborů sestavení Gradle. Zmíněné řádky budou vypadat nějak takto:
implementation "com.microsoft.intune.mam:android-sdk-support-v4:$intune_mam_version"
implementation "com.microsoft.intune.mam:android-sdk-support-v7:$intune_mam_version"
Pak opravte výsledné chyby při kompilaci nahrazením všech odkazů na třídy MAM v balíčcích com.microsoft.intune.mam.client.support.v7 and com.microsoft.intune.mam.client.support.v4 jejich ekvivalenty v AndroidX.
Například odkazy na MAMAppCompatActivity by měly být změněny AppCompatActivityna AndroidX .
Jak je popsáno výše, modul plug-in nebo nástroj sestavení MAM automaticky přepíše třídy v knihovnách AndroidX příslušnými ekvivalenty MAM v době kompilace.
Omezení a zvláštní případy
Výchozí registrace
Vaše aplikace se může případně zaregistrovat k zásadám ochrany aplikací prostřednictvím zjednodušeného procesu označovaného jako výchozí registrace. Tato funkce slouží primárně k podpoře privátních obchodních aplikací, které nemají integrované MSAL.
Upozornění
Výchozí zápis je spojen se značnými kompromisy a nedoporučuje se. Aplikace využívající výchozí registraci nepodporují podmíněný přístup, nevyužívají výhod jednotného přihlašování se službami Microsoft a nemůžou je používat účty, které nejsou účty Intune. Pokud se vaše aplikace dodává do veřejného obchodu s aplikacemi, výchozí registrace není podporovaná.
Výchozí registrace vynutí, aby si koncový uživatel nainstaloval Portál společnosti a dokončil postup registrace MAM, než povolí uživatelům přístup do vaší aplikace.
Poznámka
Výchozí registrace podporuje suverénní cloud.
Povolte výchozí zápis pomocí následujících kroků:
Pokud vaše aplikace integruje MSAL nebo potřebujete povolit jednotné přihlašování, nakonfigurujte MSAL. Pokud ne, můžete tento krok přeskočit.
Povolte výchozí registraci přidáním následující hodnoty do manifestu pod
<application>značkou:<meta-data android:name="com.microsoft.intune.mam.DefaultMAMServiceEnrollment" android:value="true" />Povolte zásady MAM, které jsou vyžadovány, přidáním následující hodnoty do manifestu pod
<application>značkou:<meta-data android:name="com.microsoft.intune.mam.MAMPolicyRequired" android:value="true" />
Izolované procesy
Sada Intune App SDK nemůže použít ochranu na izolované procesy.
Podpora izolovaných procesů (android:isolatedProcess) vyžaduje přidání níže uvedené značky metadat.
Upozornění
Přidáním těchto metadat vaše aplikace deklaruje, že izolovaný proces nemůže vystavit data organizace. Vaše aplikace je odpovědná za zaručení tohoto.
<meta-data android:name="com.microsoft.intune.mam.AllowIsolatedProcesses" android:value="true" />
Custom Screen Capture Restrictions (Vlastní omezení snímání obrazovky)
Pokud vaše aplikace obsahuje funkci vlastního snímku obrazovky, která obchází omezení FLAG_SECURE úrovně WindowAndroidu, musíte zkontrolovat zásady snímání obrazovky, než k této funkci povolíte úplný přístup.
Pokud například vaše aplikace používá vlastní vykreslovací modul k vykreslení aktuálního zobrazení do souboru PNG, musíte nejprve zkontrolovat AppPolicy.getIsScreenCaptureAllowed().
Pokud vaše aplikace neobsahuje žádné vlastní funkce nebo funkce pro záznam obrazovky od jiných výrobců, není potřeba, abyste snímky obrazovky omezili.
Zásady snímání obrazovky se automaticky vynucují na Window úrovni pro všechny aplikace integrované s MAM.
Všechny pokusy operačního systému nebo jiné aplikace o zachycení ve Window vaší aplikaci budou podle potřeby zablokovány.
Pokud se například uživatel pokusí zachytit obrazovku vaší aplikace pomocí integrovaných funkcí Androidu pro snímání obrazovky nebo záznamu obrazovky, bude zachycení automaticky omezeno bez účasti vaší aplikace.
Omezení vynucování zásad
Použití překladačů obsahu: Zásady "přenos nebo příjem" protokolu Intune můžou blokovat nebo částečně blokovat použití překladače obsahu pro přístup k poskytovateli obsahu v jiné aplikaci. To způsobí, že
ContentResolvermetody vrátí hodnotu null nebo vyvolají hodnotu selhání (například vyvolajíFileNotFoundException,openOutputStreampokud jsou blokovány). Aplikace může určit, jestli selhání při zápisu dat prostřednictvím překladače obsahu bylo způsobeno zásadami (nebo by bylo způsobeno zásadami), a to tak, že zavolá:MAMPolicyManager.getPolicy(currentActivity).getIsSaveToLocationAllowed(contentURI);nebo pokud není přidružená žádná aktivita:
MAMPolicyManager.getCurrentThreadPolicy().getIsSaveToLocationAllowed(contentURI);V tomto druhém případě se aplikace s více identitami musí postarat o odpovídající nastavení identity vlákna (nebo předat explicitní identitu
getPolicyForIdentityvolání).
Exportované služby
Soubor AndroidManifest.xml, který je součástí sady Intune App SDK, obsahuje MAMNotificationReceiverService, což musí být exportovaná služba, aby Portál společnosti mohla odesílat oznámení do spravované aplikace. Služba zkontroluje volajícího, aby zajistila, že oznámení může posílat jenom Portál společnosti.
Omezení odrazů
Některé základní třídy MAM (například ) MAMDocumentsProviderobsahují metody (založené na původních základních třídách Androidu), které používají parametry nebo návratové typy, MAMActivitykteré jsou přítomné pouze nad určitými úrovněmi rozhraní API.
Z tohoto důvodu nemusí být vždy možné použít reflexi k výčtu všech metod součástí aplikace.
Toto omezení se neomezuje jenom na MAM, jedná se o stejné omezení, které by platilo, kdyby samotná aplikace implementovala tyto metody ze základních tříd Androidu.
Robolektrika
Testování chování sady SDK aplikací pro Intune v rámci Robolectric se nepodporuje. Existují známé problémy se spuštěním sady SDK v rámci Robolectric kvůli chování přítomnému v Robolectric, které přesně nenapodobuje chování na skutečných zařízeních nebo emulátorech.
Pokud potřebujete otestovat aplikaci v Robolectric, doporučeným alternativním řešením je přesunout logiku třídy aplikace na pomocníka a vytvořit apk pro testování částí s třídou aplikace, která nedědí z MAMApplication.