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 do nativní aplikace Java/Kotlin pro Android. Tyto zásady se také označují jako zásady MAM. Aplikace spravovaná Intune je aplikace integrovaná se sadou Intune App SDK. Když Intune aplikaci aktivně spravuje, můžou správci Intune snadno nasadit zásady ochrany aplikací do aplikace spravované Intune.
Poznámka
Tato příručka je rozdělená do několika různých fází. Začněte tím, že si projděte fázi 1: Plánování integrace.
Fáze 3: Začínáme s MAM
Cíle fáze
- Stáhněte si sadu Intune App SDK.
- Zjistěte, jaké soubory jsou součástí sady Intune App SDK.
- Odkazujte na sadu Intune App SDK ve vaší aplikaci.
- Nakonfigurujte modul plug-in Intune App Gradle Build nebo použijte nástroj pro sestavení příkazového řádku.
- Ověřte, že je sada Intune App SDK správně zahrnutá ve vašem buildu.
Pozadí
Teď, když vaše aplikace úspěšně integrovala KNIHOVNU MSAL, je čas stáhnout sadu Intune App SDK a zahrnout ji do procesu sestavení aplikace.
Velkou část integrace sady Intune App SDK spočívá v nahrazení standardních tříd Androidu a volání metod Intune verzemi těchto tříd a volání metod. Sada SDK obsahuje nástroje pro sestavení, které za vás automaticky vytvoří většinu těchto nahrazení. Pokud se chcete o této nahrazování logiky dozvědět více, přečtěte si část nahrazení tříd a metodv příloze.
Stažení sady Intune App SDK
Informace o stažení sady SDK najdete v tématu Stažení souborů SADY SDK.
Co je v sadě SDK?
Sada Intune App SDK se skládá z následujících souborů:
- Microsoft. Intune. MAM. SDK.aar: Komponenty sady SDK, s výjimkou souborů JAR knihovny podpory.
- com.microsoft.intune.mam.build.jar: Modul plug-in Gradle, který pomáhá integrovat sadu SDK.
- CHANGELOG.md: Poskytuje záznam o změnách provedených v jednotlivých verzích sady SDK.
-
Microsoft. Intune. MAM. SDK. DownlevelStubs.aar: Tento androidový Archive (AAR) obsahuje zástupné procedury pro systémové třídy Androidu, které jsou přítomné jenom na novějších zařízeních, ale odkazují na nich metody v MAMActivity. Novější zařízení tyto třídy zástupných procedur ignorují. Tato funkce AAR je nutná pouze v případě, že vaše aplikace provádí reflexi tříd odvozených z
MAMActivitya většina aplikací ji nemusí zahrnovat. AAR obsahuje pravidla ProGuard pro vyloučení všech svých tříd.
Odkazování na knihovny aplikací Intune
Sada Intune App SDK je standardní knihovna Androidu bez externích závislostí. Microsoft. Intune. MAM. SDK.aar obsahuje rozhraní potřebná k povolení zásad ochrany aplikací. Obsahuje také kód nezbytný pro spolupráci s aplikací Microsoft Intune Portál společnosti.
Android Studio
Microsoft. Intune. MAM. SDK.aar musí být zadaný jako odkaz na knihovnu Androidu. Pokud chcete tuto závislost přidat do svého buildu, postupujte podle pokynů v dokumentaci k přidání AAR nebo JAR jako závislosti z Androidu .
Visual Studio
Balíček NuGet Intune App SDK pro .NET MAUI – Android se musí přidat jako závislost.
Postupujte podle postupu instalace a správy balíčků v sadě Visual Studio pomocí Správce balíčků NuGet.
Microsoft.Intune. MAM. SADA SDK.aar je vázána k vytváření odkazů jazyka C#, které jsou vymezeny na Microsoft.Intune.Mam obor názvů.
ProGuard
Vaše aplikace už může používat ProGuard (nebo jakýkoli jiný mechanismus zmenšení/obfuskace) jako krok sestavení. Sada Intune App SDK obsahuje pravidla konfigurace ProGuard, která musí být součástí tohoto kroku sestavení. Včetně . AAR ve vašem buildu, jak jsme popsali dříve, automaticky integruje konfiguraci sady SDK do kroku ProGuard, takže se zachovají potřebné soubory třídy. Pokud jste zahrnuli . AAR, není potřeba žádná jiná změna.
Identity a ověřování Microsoftu (MSAL) se dodává s vlastní konfigurací ProGuard. Pokud vaše aplikace integruje KNIHOVNU MSAL, další podrobnosti najdete v dokumentaci k knihovně MSAL .
Nástroje sestavení
Sada SDK poskytuje nástroje pro sestavení (modul plug-in pro sestavení Gradle, cíle pro sestavení .NET a nástroj příkazového řádku), které automaticky provádějí nahrazení MAM. Tyto nástroje transformují soubory tříd vygenerované kompilací Javy; Původní zdrojový kód neupravují. Musíte použít modul plug-in Gradle, balíček NuGet .NET nebo nástroj příkazového řádku.
Samotné nástroje sestavení nestačí k plné integraci vaší aplikace. Nástroje provádějí pouze nahrazení tříd a metod . Neprovádějí žádné složitější integrace sady SDK, jako jsou multi-identity, registrace zásad ochrany aplikací, zásady omezení přenosu dat mezi aplikacemi a zařízeními nebo umístěními cloudového úložiště nebo konfigurace MSAL. Tyto integrace musíte dokončit, než bude vaše aplikace plně Intune povolená. Pečlivě si projděte zbývající část této dokumentace, kde najdete body integrace relevantní pro vaši aplikaci.
Ladění
Nástroje sestavení provádějí po kompilaci nahrazení. Tato nahrazení mění názvy některých metod. V důsledku toho může být ovlivněno ladění zarážek nastavených u názvů metod. Nemusí se zastavit podle očekávání. Na zarážky čísel řádků to nemá vliv.
MAM v stacku
Integrace sady Intune App SDK do značné míry závisí na nahrazení tříd a metod. Díky této závislosti uvidíte mam trasování zásobníku.
Pokud vaše aplikace nemá účet, na který cílí zásady ochrany aplikací, veškerý tento kód MAM leží v nečinnosti. Například MAMActivity funguje stejně jako Activity a onMAMCreate funguje stejně jako onCreate.
Kdykoli se zobrazí mam v zásobníku, nejprve zkontrolujte:
- Cílí na účet zásady ochrany aplikací?
- Je Portál společnosti Intune nainstalovaný?
Pokud odpověď na obojí není "ano", kód MAM funguje jako jednoduché předávání.
Jaký nástroj potřebuji?
Pokud vytváříte aplikaci pomocí Gradle, přečtěte si téma Integrace s modulem plug-in buildu Gradle.
Pokud vytváříte aplikaci pomocí .NET MAUI, přečtěte si téma Integrace s cíli .NET MAUI.
Pokud aplikaci sestavíte pomocí žádného z předchozích nástrojů, přečtěte si téma Integrace s nástrojem příkazového řádku.
Integrace s modulem plug-in buildu Gradle
Modul plug-in sady Intune App SDK se distribuuje jako součást sady SDK jako GradlePlugin/com.microsoft.intune.mam.build.jar.
Aby byl modul plug-in rozpoznán gradlem, musí být přidán do buildscript cesty ke třídě.
Modul plug-in závisí na Javassistu, který musí být také přidán. Další informace o závislostech Javassist najdete v tématu Závislosti.
Pokud je chcete přidat do cesty ke třídě, přidejte do kořenového adresáře build.gradlenásledující:
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")
}
}
Pokud pak chcete použít modul plug-in, přidejte do build.gradle souboru pro vaši aplikaci a moduly dynamických funkcí následující:
apply plugin: 'com.microsoft.intune.mam'
Ve výchozím nastavení modul plug-in funguje se project závislostmi a externími knihovnami.
Kompilace testů není ovlivněna.
Poznámka
Počínaje sadou 8.0 Intune App SDK už není možné selektivně zpracovávat knihovny. Všechny knihovny jsou zpracovány.
Závislosti
Modul plug-in Gradle je závislý na Javassistu, který musí být dostupný pro řešení závislostí Gradle. Javassist se používá výhradně v době sestavení při spuštění modulu plug-in a do aplikace se nepřidá žádný kód Javassist.
| MAM SDK | Verze Javassist |
|---|---|
| ≥ 10.0.0 | 3.29.2-GA |
| ≥ 7.0.0 | 3.27.0-GA |
| < 7.0.0 | 3.22.0-GA |
Poznámka
Verze Javassist nemusí být zpětně kompatibilní. Obecně byste měli použít přesnou verzi, kterou očekává sada Intune App SDK.
Matice kompatibility
Modul plug-in buildu sady MAM SDK je v souladu s požadavky na sestavení Androidu a tabulkami kompatibility. Verze, které tu nejsou uvedené, můžou nebo nemusí fungovat.
| MAM SDK | Verze Androidu | Gradle | Modul plug-in Gradle pro Android | Verze Kotlin | Verze Javy |
|---|---|---|---|---|---|
| 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 |
Vyloučení
Můžete poskytnout další konfigurace, které z přepisů vyloučí konkrétní komponenty ve vaší aplikaci. Vyloučení jsou převážně užitečná pro komponenty, které nejsou relevantní pro MAM (to znamená, že nezpracovávají ani nezobrazují podniková data).
Vyloučení je možné nakonfigurovat pro různé obory:
-
excludeProjectsumožňuje vyloučit seznam projektů Gradle. Tato vyloučení jsou užitečná pro projekty, které nemají rozhraní s knihovnami Androidu nebo systémovými rozhraními API. Jsou také užitečné pro projekty, které nezpracovávají podniková data. Vhodným kandidátem může být například projekt, který obsahuje výhradně nativní kód pro provádění síťových operací na nízké úrovni. Pokud projekt široce spolupracuje s knihovnami Androidu nebo systémovými rozhraními API, vyhněte se těmto vyloučením. -
excludeClassesumožňuje vyloučit seznam tříd. Tato vyloučení jsou užitečná pro třídy, které nezpracovávají nebo prezentují podniková data. Dobrými kandidáty jsou například úvodní obrazovky a onboardingyActivity. Třídu nelze vyloučit, pokud je zpracována kterákoli z jejích nadtříd. -
excludeVariantsumožňuje vyloučit varianty projektu. Tato vyloučení můžou odkazovat buď na úplný název varianty, nebo na jednu příchuť. Jsou užitečné hlavně v případě, že chcete vytvořit aplikaci, která není součástí MAM. Pokud má vaše aplikace například typydebugsestavení areleases příchutěmi {noMAM,MAM} a {mock,production} můžete zadat:-
noMAMk vyloučení všech variant s příchutí noMAM nebo -
noMAMMockDebugvyloučit pouze přesnou variantu.
-
Upozornění
Vyloučení by se neměla brát na lehkou váhu. Nesprávné použití vyloučení může vést k závažnému úniku dat ve vaší aplikaci. Vždy ověřte vliv jakéhokoli vyloučení, které použijete.
Příklad částečného sestavení.gradle s vyloučeními
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']
}
To by mohlo mít následující účinky:
-
:product:FooLibse nepřepíše, protože je součástíexcludeProjects -
:product:foo-projectse přepíše, s výjimkoucom.contoso.SplashActivitypříkazu , který se přeskočí, protože je vexcludeClasses -
com.microsoft.bar:baz.1.0.0se přepíše, protože všechny externí knihovny jsou zahrnuty ke zpracování. - Varianty s příchutí
noMAMse nepřepíšou.
Vytváření sestav
Modul plug-in sestavení může vygenerovat zprávu HTML o provedených změnách.
Pokud chcete požádat o vygenerování této sestavy, zadejte report = true v intunemam bloku konfigurace.
Pokud se sestava vygeneruje, zapíše se do outputs/logs adresáře sestavení.
intunemam {
report = true
}
Ověření
Modul plug-in sestavení může spustit další ověření a vyhledat možné chyby ve třídách zpracování. Tyto kontroly pomáhají chránit před potenciálními chybami modulu runtime vyvolanými moduly plug-in.
Pokud chcete v sestavení požádat o ověření, zadejte verify = true v intunemam bloku konfigurace.
To může přidat několik sekund k času, který úkol modulu plug-in trvalo.
intunemam {
verify = true
}
Obecně platí, že selhání ověření představuje chybu v modulu plug-in sestavení. Pokud potřebujete pomoc s selháním, eskalujte problém s podporou Microsoftu. Pokud nemáte smlouvu o podpoře Microsoftu, otevřete problém na GitHubu.
Přírůstková sestavení
Pokud chcete povolit podporu přírůstkového sestavování, zadejte incremental = true v intunemam bloku konfigurace.
Tato funkce zvyšuje výkon sestavení tím, že zpracovává pouze vstupní soubory, které se mění.
Výchozí konfigurace pro incremental je false.
intunemam {
incremental = true
}
Konfigurace modulu dynamických funkcí
Moduly dynamických funkcí se sestavují odděleně od projektu aplikace. Moduly dynamických funkcí proto musí také použít modul plug-in Gradle Build.
Modul plug-in Gradle má technická omezení v rozhraních API, která používá. Vzhledem k těmto omezením je při transformaci tříd modulů dynamických funkcí potřeba třídy aplikací znovu zpracovat. Pokud chcete zajistit, aby bylo možné toto opětovné zpracování provést, nakonfigurujte všechny moduly funkcí se stejným nastavením jako aplikace.
Pokud například aplikace vyloučí třídu, modul dynamických funkcí by měl vyloučit také tuto třídu.
Integrace s cíli .NET MAUI
Cíle sady Intune App SDK se distribuují jako součást sady SDK jako Microsoft.Intune. Maui.Essentials.android.targets.
Cíle se automaticky importují do vaší aplikace při kompilaci po přidání balíčku NuGet Intune App SDK pro .NET MAUI – Android.
Integrace s nástrojem pro sestavení příkazového řádku
Nástroj pro sestavení příkazového řádku je k dispozici ve BuildTool složce vyřazení sady SDK.
Provádí stejnou funkci jako modul plug-in Gradle a cíle .NET popsané výše. Nástroj příkazového řádku je však možné integrovat do vlastních systémů sestavení.
Vzhledem k tomu, že je nástroj obecnější, je složitější ho vyvolat. Kdykoli je to možné, použijte modul plug-in Gradle nebo cíle .NET.
Použití nástroje Command-Line
Nástroj příkazového řádku lze vyvolat pomocí poskytnutých pomocných skriptů umístěných v adresáři BuildTool\bin .
Nástroj očekává následující parametry.
| Parametr | Povinný | Popis |
|---|---|---|
--input |
Ano | Seznam souborů JAR a adresářů souborů třídy, které se mají upravit, s oddělovači středníkem. Zahrňte všechny soubory JAR a adresáře, které chcete přepsat. |
--output |
Ano | Seznam souborů JAR a adresářů oddělených středníkem pro uložení upravených tříd. Zadejte jednu výstupní položku pro každou vstupní položku uvedenou ve stejném pořadí. |
--classpath |
Ano | Cesta ke třídě sestavení. Může obsahovat soubory JAR i adresáře tříd. |
--processed |
Ne | Seznam souborů JAR a adresářů obsahujících třídy, které již byly zpracovány předchozím vyvoláním nástroje pro sestavení, s oddělovači středníkem. |
--excludeClasses |
Ne | Seznam oddělený středníkem obsahující názvy tříd, které by měly být vyloučeny z přepisu. |
--report |
Ne | Adresář pro zápis sestavy HTML o změněných tříd do. Pokud není zadáno, nezapíše se žádná sestava. |
Volitelná --processed možnost se používá k povolení přírůstkových sestavení.
Sada souborů nebo adresářů, které jsou zde uvedené, by měla být oddělená se vstupními seznamy a seznamy cest k třídám.
Tip
V systémech unix-like středník je oddělovač příkazů. Abyste zabránili rozdělení příkazů prostředí, nezapomeňte u každého středníku uvozovat znak "' nebo celý parametr zabalit do uvozovek.
Příklad vyvolání nástroje 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
To by mohlo mít následující účinky:
- adresář se
product-foo-projectpřepíše namam-build\product-foo-project -
bar.jarse přepíše namam-build\libs\bar.jar -
zap.jarse nepřepíše, protože je uveden pouze v--classpath - Třída
com.contoso.SplashActivityse nepřepíše , i když je v--input
Upozornění
Nástroj pro sestavení v současné době nepodporuje soubory aar.
Pokud se váš buildový systém při práci se soubory aar ještě neextrahuje classes.jar , extrahujte ho před vyvoláním nástroje pro sestavení.
Nastavení APLIKACE MAM
Pokud vaše aplikace vytvoří podtřídu android.app.Application, pak modul plug-in sestavení nebo nástroj příkazového řádku transformuje vaši třídu aplikace.
Pokud vaše aplikace nemá podtřídu android.app.Application"android:name" , musíte nastavit "com.microsoft.intune.mam.client.app.MAMApplication" jako atribut ve značce AndroidManifest.xml<application>.
Doporučené osvědčené postupy pro Android
- Použijte nejnovější nástroje pro sestavení sady Android SDK.
- Odeberte všechny nepotřebné a nepoužívané knihovny (například android.support.v4).
Po provedení automatického nahrazení sada Intune App SDK stále udržuje kontrakt poskytovaný rozhraním API pro Android. V důsledku vynucování zásad se ale můžou častěji aktivovat podmínky selhání. Tyto osvědčené postupy pro Android snižují pravděpodobnost selhání:
- Funkce sady Android SDK, které se můžou vrátit
null, teď mají vyšší pravděpodobnost, že vrátínull. Ujistěte se, ženullkontroly chrání tato volání funkcí. - Funkce, které je možné zkontrolovat, jako
clipboardManager.getPrimaryClipDescription()je , je potřeba zkontrolovat prostřednictvím jejich náhradních rozhraní API MAM, jakoMAMClipboard.getPrimaryClipDescription(clipboardManager)je . - Všechny odvozené funkce musí volat prostřednictvím své verze supertřídy.
- Nepoužívejte rozhraní API nejednoznačným způsobem. Například použití
Activity.startActivityForResultbez kontrolyrequestCodepříčin podivného chování.
Služby
Vynucení zásad může mít vliv na interakce se službou Androidu.
Metody, které navazování vázaného připojení služby, například Context.bindService , můžou selhat kvůli základnímu vynucení zásad v Service.onBind systému a mohou mít za následek ServiceConnection.onNullBinding nebo ServiceConnection.onServiceDisconnected.
Interakce se zavedenou vázanou službou může vyvolat chybu SecurityException kvůli vynucení zásad v nástroji Binder.onTransact.
Klientům vázaných služeb se doporučuje zkontrolovat výjimky vyvolané službou. Nedovolte, aby se výjimky šířily do zbytku klientské aplikace.
Kritéria ukončení
Po nakonfigurování modulu plug-in sestavení nebo integraci nástroje příkazového řádku do procesu sestavení ověřte, že je úspěšně spuštěný:
- Ujistěte se, že se sestavení úspěšně zkompiluje a sestaví.
-
reportNakonfigurujte příznak a pak otevřete dokument sestavy a potvrďte, že dochází k nahrazování tříd a metod:- Pokud používáte modul plug-in, postupujte podle kroků v tématu Vytváření sestav.
- Pokud používáte nástroj příkazového řádku, zahrňte příznak
--report.
- Pokud používáte modul plug-in, nakonfigurujte
verifypříznak a ujistěte se, že nedochází k chybám. Viz Ověření. - Pečlivě zkontrolujte všechna vyloučení (
excludeProjects,excludeClassesaexcludeVariants) v build.gradle. Ověřte, že každé vyloučení je nezbytné a nezabývá chráněnými daty. K mnoha chybám úniku dat v minulosti dochází kvůli příliš agresivním vyloučením. -
Bez nainstalovaného Portál společnosti Intune spusťte zkompilovanou aplikaci. Přihlaste se pomocí Microsoft Entra uživatele, na kterého nejsou cílené zásady ochrany aplikací. Ověřte, že aplikace funguje podle očekávání.
- Odhlaste se a opakujte tento test s nainstalovaným Portál společnosti Intune.
Časté otázky
Moje aplikace dříve integroval sadu SDK bez modulu plug-in sestavení; jak můžu použít modul plug-in buildu?
Starší verze sady Intune App SDK neobsáhly žádný automatizovaný způsob, jak provádět nahrazování tříd a metod. Vývojáři potřebovali provést toto nahrazení ručně ve zdrojovém kódu. Pokud je vaše aplikace tímto způsobem integrovaná, je bezpečné použít modul plug-in sestavení nebo nástroj pro sestavení příkazového řádku. Nepotřebujete žádné úpravy zdrojového kódu. V projektu musí být sada MAM SDK stále vypisovat jako závislost.
Další kroky
Po dokončení všech kritérií ukončení pokračujte fází 4: Základy integrace MAM.