Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Androidhoz készült Microsoft Intune App SDK lehetővé teszi, hogy Intune alkalmazásvédelmi szabályzatokat beépítsen natív Java-/Kotlin Android-alkalmazásába. Ezeket a szabályzatokat MAM-szabályzatoknak is nevezik. A Intune által felügyelt alkalmazás az Intune App SDK-val integrálva van. Ha Intune aktívan felügyeli az alkalmazást, Intune rendszergazdák egyszerűen telepíthetnek alkalmazásvédelmi szabályzatokat a Intune által felügyelt alkalmazásra.
Megjegyzés:
Ez az útmutató több különböző szakaszra oszlik. Először tekintse át az 1. fázis: Az integráció megtervezése című szakaszt.
3. fázis: Első lépések a MAM használatával
Szakaszcélok
- Töltse le a Intune App SDK-t.
- Megtudhatja, hogy milyen fájlokat tartalmaz a Intune App SDK.
- Hivatkozzon az alkalmazásban található Intune App SDK-ra.
- Konfigurálja a Intune App Gradle Build beépülő modult, vagy használja a parancssori buildelési eszközt.
- Ellenőrizze, hogy a Intune App SDK megfelelően szerepel-e a buildben.
Háttér
Most, hogy az alkalmazás sikeresen integrálta az MSAL-t, ideje letölteni a Intune App SDK-t, és belefoglalni az alkalmazás buildelési folyamatában.
A Intune App SDK integrálásának nagy része a szabványos Android-osztályok és metódushívások helyett Intune osztályok és metódushívások verzióit használja. Az SDK olyan összeállítási eszközöket tartalmaz, amelyek automatikusan elvégzik a cserék nagy részét. Ha többet szeretne megtudni erről a helyettesítő logikáról, tekintse meg a függelékosztály- és metódushelyettesítő szakaszát.
A Intune App SDK letöltése
Az SDK letöltéséhez lásd : Az SDK-fájlok letöltése.
Mi van az SDK-ban?
A Intune App SDK a következő fájlokból áll:
- Microsoft. Intune. MAM. SDK.aar: Az SDK összetevői, kivéve a támogatási kódtár JAR-fájljait.
- com.microsoft.intune.mam.build.jar: Gradle beépülő modul, amely segíti az SDK integrálását.
- CHANGELOG.md: Az egyes SDK-verziókban végrehajtott módosítások rekordját tartalmazza.
-
Microsoft. Intune. MAM. SDK. DownlevelStubs.aar: Ez az Android-Archívum (AAR) olyan androidos rendszerosztályokhoz tartalmaz csonkokat, amelyek csak az újabb eszközökön vannak jelen, de a MAMActivity metódusai hivatkoznak rá. Az újabb eszközök figyelmen kívül hagyják ezeket a csonkosztályokat. Erre az AAR-re csak akkor van szükség, ha az alkalmazás tükrözést végez a -ból származó osztályokon
MAMActivity, és a legtöbb alkalmazásnak nem kell belefoglalnia. Az AAR ProGuard-szabályokat tartalmaz az összes osztályának kizárásához.
Hivatkozás Intune alkalmazáskódtárakra
A Intune App SDK egy szabványos Android-kódtár, külső függőségek nélkül. Microsoft. Intune. MAM. Az SDK.aar az alkalmazásvédelmi szabályzatok engedélyezéséhez szükséges felületeket tartalmazza. A Microsoft Intune Céges portál alkalmazással való együttműködéshez szükséges kódot is tartalmazza.
Android Studio
Microsoft. Intune. MAM. Az SDK.aar-t Android-kódtár-referenciaként kell megadni. Ha hozzá szeretné adni ezt a függőséget a buildhez, kövesse az AAR vagy JAR hozzáadása függőségként androidos dokumentációban leírtakat.
Visual Studio
A Intune App SDK for .NET MAUI – Android NuGet csomagot függőségként kell hozzáadni.
Kövesse a Csomagok telepítése és kezelése a Visual Studióban a NuGet-csomagkezelővel című cikket.
A Microsoft.Intune. MAM. Az SDK.aar a névtérre vonatkozó Microsoft.Intune.Mam C#-hivatkozásokat hoz létre.
ProGuard
Az alkalmazás már használhatja a ProGuardot (vagy bármely más zsugorító/rejtjelezési mechanizmust) buildelési lépésként. A Intune App SDK ProGuard konfigurációs szabályokkal rendelkezik, amelyeket bele kell foglalni az adott buildelési lépésbe. Beleértve a következőt: . Az AAR a buildben a korábban leírtak szerint automatikusan integrálja az SDK konfigurációját a ProGuard lépésbe, így a szükséges osztályfájlok megmaradnak. Ha belefoglalta a következőt: . AAR, nincs szükség más módosításra.
A Microsoft Authentication Library (MSAL) saját ProGuard-konfigurációval rendelkezik. Ha az alkalmazás integrálja az MSAL-t, további részletekért tekintse meg az MSAL dokumentációját .
Buildelési eszközök
Az SDK olyan buildelési eszközöket (a Gradle-buildek beépülő modulját, a .NET-buildek céljait és egy parancssori eszközt) biztosít, amelyek automatikusan hajtanak végre MAM-cserét. Ezek az eszközök átalakítják a Java-fordítás által létrehozott osztályfájlokat; nem módosítják az eredeti forráskódot. A Gradle beépülő modult, a .NET NuGet-csomagot vagy a parancssori eszközt kell használnia.
A buildelési eszköz önmagában nem elegendő az alkalmazás teljes integrálásához. Az eszközök csak osztály- és metóduscserét hajtanak végre. Nem hajtanak végre olyan összetettebb SDK-integrációkat, mint a multi-identity, a registering for App Protection Policy, a Policy for limiting data transfer between apps and device or cloud storages vagy az MSAL configuration. Ezeket az integrációkat az alkalmazás teljes Intune engedélyezése előtt be kell fejeznie. Gondosan tekintse át a dokumentáció többi részét az alkalmazással kapcsolatos integrációs pontokért.
Hibakeresés
A buildelési eszközkészlet fordítás után elvégzi a cserét. Ezek a helyettesítők módosítanak néhány metódusnevet. Ennek következtében a metódusneveken beállított hibakeresési töréspontok hatással lehetnek. Lehet, hogy nem a várt módon állnak le. A sorszámtörések nincsenek hatással.
MAM a veremben
A Intune App SDK integrációja nagymértékben támaszkodik az osztály- és metóduscserékre. Ennek a támaszkodásnak köszönhetően a hívásláncok teljes száma látható mam .
Ha az alkalmazás nem rendelkezik alkalmazásvédelmi szabályzatokkal megcélzott fiókkal, az összes MAM-kód inaktív. A például MAMActivity a-hez Activity hasonló, a pedig onMAMCreate a -hez onCreatehasonló.
Amikor megjelenik mam egy verem, először ellenőrizze a következőt:
- A fiók alkalmazásvédelmi szabályzatokkal van megcélzva?
- Telepítve van a Intune Céges portál?
Hacsak a válasz mindkettőre nem "igen", a MAM-kód egyszerű átengedésként működik.
Milyen eszközre van szükségem?
Ha az alkalmazást a Gradle-lel hozza létre, tekintse meg az Integráció a Gradle build beépülő modullal című témakört.
Ha az alkalmazást a .NET MAUI használatával hozza létre, tekintse meg a .NET MAUI-példányokkal való integrációt.
Ha az alkalmazást az előző eszközök egyikével sem hozza létre, olvassa el az Integráció a parancssori eszközzel című témakört.
Integráció a Gradle Build beépülő modullal
A Intune App SDK beépülő modul az SDK részeként GradlePlugin/com.microsoft.intune.mam.build.jar néven van elosztva.
Ahhoz, hogy a Gradle felismerje a beépülő modult, hozzá kell adni az buildscript osztályútvonalhoz.
A beépülő modul a Javassist függvénytől függ, amelyet szintén hozzá kell adni. A Javassist függőségével kapcsolatos további információkért lásd: Függőségek.
Ha ezeket hozzá szeretné adni az osztályútvonalhoz, adja hozzá a következőket a gyökérhez 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")
}
}
Ezután a beépülő modul alkalmazásához adja hozzá a következőt az alkalmazás és a build.gradle dinamikus szolgáltatásmodulok fájljához:
apply plugin: 'com.microsoft.intune.mam'
Alapértelmezés szerint a beépülő modul függőségeken és külső kódtárakon project működik.
A tesztelés fordítása nincs hatással.
Megjegyzés:
A 8.0-s Intune App SDK-tól kezdve már nem lehet szelektíven feldolgozni a kódtárakat. A rendszer minden kódtárat feldolgoz.
Függőségek
A Gradle beépülő modul függőséget biztosít a Javassisthez, amelyet elérhetővé kell tenni a Gradle függőségfeloldásához. A Javassist kizárólag a buildeléskor használatos a beépülő modul futtatásakor, és nem ad hozzá Javassist-kódot az alkalmazáshoz.
| MAM SDK | Javassist verzió |
|---|---|
| ≥ 10.0.0 | 3.29.2-GA |
| ≥ 7.0.0 | 3.27.0-GA |
| < 7.0.0 | 3.22.0-GA |
Megjegyzés:
Előfordulhat, hogy a Javassist verziói nem kompatibilisek visszamenőlegesen. Általában a Intune App SDK által várt pontos verziót kell használnia.
Kompatibilitási mátrix
A MAM SDK build beépülő modul megfelel az Android buildelési követelményeinek és kompatibilitási táblázatainak. Előfordulhat, hogy az itt nem felsorolt verziók működnek vagy nem működnek.
| MAM SDK | Android-verzió | Gradle | Android Gradle beépülő modul | Kotlin-verzió | Java-verzió |
|---|---|---|---|---|---|
| 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 |
Kizárások
További konfigurációkkal kizárhatja az alkalmazás bizonyos összetevőit az átírásokból. A kizárások elsősorban olyan összetevők esetében hasznosak, amelyek nem relevánsak a MAM szempontjából (azaz nem kezelik vagy nem jelenítik meg a vállalati adatokat).
A kizárások különböző hatókörökhöz konfigurálhatók:
-
excludeProjectslehetővé teszi a Gradle-projektek listájának kizárását. Ezek a kizárások olyan projektek esetében hasznosak, amelyek nem kapcsolódnak androidos kódtárakhoz vagy rendszer API-khoz. Olyan projektekhez is hasznosak, amelyek nem kezelik a vállalati adatokat. Jó választás lehet például egy olyan projekt, amely kizárólag natív kódot tartalmaz az alacsony szintű hálózati műveletek végrehajtásához. Ha egy projekt széles körben megfelel az Android-kódtáraknak vagy a rendszer API-knak, kerülje ezeket a kizárásokat. -
excludeClasseslehetővé teszi az osztályok listájának kizárását. Ezek a kizárások olyan osztályok esetében hasznosak, amelyek nem kezelik vagy jelenítik meg a vállalati adatokat. Például a kezdőképernyők és az előkészítésiActivityelemek jó jelöltek. Egy osztály nem zárható ki, ha valamelyik szuperosztálya feldolgozásra kerül. -
excludeVariantslehetővé teszi a projektváltozatok kizárását. Ezek a kizárások teljes változatnévre vagy egyetlen ízre hivatkozhatnak. Különösen akkor hasznosak, ha az alkalmazás nem MAM típusú változatát szeretné létrehozni. Ha például az alkalmazás rendelkezik buildtípusokkaldebugésrelease{noMAM,MAM} és {mock, } ízekkel,productionmegadhatja a következőket:-
noMAMa noMAM-ízben lévő összes változat kizárásához, vagy -
noMAMMockDebughogy csak ezt a pontos változatot zárja ki.
-
Figyelem!
A kizárásokat nem szabad könnyen figyelembe venni. A kizárások helytelen alkalmazása súlyos adatszivárgást okozhat az alkalmazásban. Mindig ellenőrizze az alkalmazott kizárások hatását.
Példa részleges build.gradle kizárásokkal
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']
}
Ennek a következő hatásai lennének:
-
:product:FooLibnincs újraírva, mert aexcludeProjects -
:product:foo-projectA újra van írva, kivéve a következőtcom.contoso.SplashActivity: , amelyet a program kihagy, mert aexcludeClasses -
com.microsoft.bar:baz.1.0.0A újra van írva, mert az összes külső kódtár feldolgozásra kerül. - Az ízt tartalmazó
noMAMváltozatok nem lesznek újraírva.
Jelentés
A build beépülő modul létrehozhat egy HTML-jelentést az elvégzett módosításokról.
A jelentés létrehozásának kéréséhez adja meg report = true a értéket a intunemam konfigurációs blokkban.
Ha létrejön, a jelentés a buildkönyvtárban lesz megírva outputs/logs .
intunemam {
report = true
}
Ellenőrzés
A build beépülő modul több ellenőrzést is futtathat, hogy megkeresse a lehetséges hibákat a feldolgozási osztályokban. Ezek az ellenőrzések segítenek védelmet nyújtani a beépülő modul által okozott esetleges futásidejű hibák ellen.
Az ellenőrzés kéréséhez a buildben adja meg a értéket verify = true a intunemam konfigurációs blokkban.
Ez néhány másodpercet is hozzáadhat a beépülő modul feladatához szükséges időhöz.
intunemam {
verify = true
}
Az ellenőrzési hiba általában a build beépülő modul hibáját jelenti. Ha segítségre van szüksége egy hibához, eszkalálja a problémát a Microsoft ügyfélszolgálatával. Ha nem rendelkezik Microsoft támogatási szerződéssel, nyisson egy GitHub-problémát.
Növekményes buildek
A növekményes építés támogatásának engedélyezéséhez adja meg a beállítást incremental = true a intunemam konfigurációs blokkban.
Ez a funkció csak a módosuló bemeneti fájlok feldolgozásával növeli a buildelési teljesítményt.
A alapértelmezett konfigurációja incremental a következő: false.
intunemam {
incremental = true
}
Dinamikus szolgáltatásmodul konfigurálása
A dinamikus szolgáltatásmodulok az alkalmazásprojekttől külön épülnek fel. Ezért a dinamikus szolgáltatásmodulokat is alkalmazni kell a Gradle Build beépülő modulra.
A Gradle beépülő modul technikai korlátozásokkal rendelkezik az általa használt API-kban. Ezen korlátozások miatt az alkalmazásosztályokat újra kell feldolgozni a dinamikus funkciómodul-osztályok átalakításakor. Annak érdekében, hogy ez az újrafeldolgozás elvégezhető legyen, konfigurálja az összes funkciómodult ugyanazokkal a beállításokkal, mint az alkalmazás.
Ha például egy alkalmazás kizár egy osztályt, a dinamikus funkciómodulnak az osztályt is ki kell zárnia.
Integráció a .NET MAUI-célokkal
A Intune App SDK-célok az SDK részeként vannak elosztva Microsoft.Intune néven. Maui.Essentials.android.targets.
A rendszer a .NET MAUI-hoz készült Intune App SDK – Android NuGet-csomag hozzáadása után automatikusan importálja a célokat az alkalmazásba fordításkor.
Integrálás a parancssori buildelési eszközzel
A parancssori buildelési eszköz az BuildTool SDK-drop mappájában érhető el.
Ugyanazt a funkciót hajtja végre, mint a Gradle beépülő modul és a .NET-célok fent részletezett. A parancssori eszköz azonban integrálható egyéni buildrendszerekbe.
Mivel az eszköz általánosabb, összetettebb meghívni. Amikor csak lehetséges, használja a Gradle beépülő modult vagy a .NET-célokat.
A Command-Line eszköz használata
A parancssori eszköz a könyvtárban BuildTool\bin található segédszkriptekkel hívható meg.
Az eszköz a következő paramétereket várja.
| Paraméter | Kötelező | Leírás |
|---|---|---|
--input |
Igen | A módosítani kívánt osztályfájlok JAR-fájljainak és könyvtárainak pontosvesszővel tagolt listája. Adja meg az átírni kívánt összes JAR-t és címtárat. |
--output |
Igen | A módosított osztályok tárolására használt JAR-fájlok és könyvtárak pontosvesszővel tagolt listája. Adjon meg bemeneti bejegyzésenként egy kimeneti bejegyzést, ugyanabban a sorrendben. |
--classpath |
Igen | A build osztályútvonala. Ez JAR-fájlokat és osztálykönyvtárakat is tartalmazhat. |
--processed |
Nem | A buildelési eszköz korábbi meghívása által már feldolgozott osztályokat tartalmazó JAR-fájlok és könyvtárak pontosvesszővel tagolt listája. |
--excludeClasses |
Nem | Pontosvesszővel tagolt lista, amely az újraírásból kizárandó osztályok nevét tartalmazza. |
--report |
Nem | Könyvtár a módosított osztályokról szóló HTML-jelentés írásához. Ha nincs megadva, a rendszer nem ír jelentést. |
A nem kötelező --processed beállítással engedélyezheti a növekményes buildeket.
Az itt felsorolt fájlok/könyvtárak halmazának elkülönülnie kell a bemeneti és az osztályútvonal-listáktól.
Tipp
A Unix-szerű rendszerekben a pontosvessző egy parancselválasztó. Ha el szeretné kerülni, hogy a rendszerhéj felosztsa a parancsokat, ügyeljen arra, hogy minden pontosvesszőt a következővel oldjon fel, vagy a teljes paramétert idézőjelek közé burkolja.
Példa Command-Line eszköz meghívására
> 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
Ennek a következő hatásai lennének:
- a
product-foo-projectkönyvtár át lesz írva a következőre:mam-build\product-foo-project -
bar.jarát van írva amam-build\libs\bar.jar -
zap.jarnincs újraírva, mert csak a--classpath - Az
com.contoso.SplashActivityosztály nem lesz újraírva, még akkor sem, ha az--input
Figyelmeztetés
A buildelési eszköz jelenleg nem támogatja az aar fájlokat.
Ha a buildrendszer még nem nyeri ki classes.jar az aar fájlok kezelésekor, a buildelési eszköz meghívása előtt bontsa ki azt.
A MAMApplication beállítása
Ha az alkalmazás a alosztályát android.app.Applicationhozza létre, akkor a build beépülő modul vagy parancssori eszköz átalakítja az alkalmazásosztályt.
Ha az alkalmazás nem alosztály, android.app.Applicationakkor az attribútumként kell beállítania "com.microsoft.intune.mam.client.app.MAMApplication" a "android:name" AndroidManifest.xml címkéjében <application> .
Ajánlott androidos ajánlott eljárások
- Használja a legújabb Android SDK buildelési eszközöket.
- Távolítsa el az összes szükségtelen és nem használt kódtárat (például android.support.v4).
Az automatikus cserék elvégzése után a Intune App SDK továbbra is fenntartja az Android API által biztosított szerződést. Előfordulhat azonban, hogy a szabályzatkényszerítés miatt a hibaállapotok gyakrabban aktiválódnak. Ezek az Android-ajánlott eljárások csökkentik a hibák valószínűségét:
- A visszaadható
nullAndroid SDK-függvények nagyobb valószínűséggel térnek visszanull. Győződjön meg arról, hogy aznullellenőrzések védik ezeket a függvényhívásokat. - Az olyan szolgáltatásokat, mint
clipboardManager.getPrimaryClipDescription()például a , a MAM helyettesítő API-kkal kell ellenőrizni, példáulMAMClipboard.getPrimaryClipDescription(clipboardManager): . - Minden származtatott függvénynek át kell hívnia a szuperosztályú verzióit.
- Kerülje az API-k kétértelmű használatát. Például a használata
Activity.startActivityForResultazrequestCodeok ellenőrzése nélkül furcsa viselkedést okoz.
Szolgáltatások
A szabályzatkényszerítés hatással lehet az Android-szolgáltatások interakcióira.
A kötött szolgáltatáskapcsolatot létrehozó metódusok, például Context.bindService meghiúsulhatnak a mögöttes szabályzatkényszerítés miatt, Service.onBind és a következőt eredményezhetik: ServiceConnection.onNullBinding vagy ServiceConnection.onServiceDisconnected.
A bevett kötött szolgáltatásokkal való interakció szabályzatkényszerítés miatt léphet SecurityException fel a következőben Binder.onTransact: .
A kötött szolgáltatások ügyfeleinek javasoljuk, hogy ellenőrizzék a szolgáltatás által kiadott kivételeket. Ne hagyja, hogy a kivételek propagálva lesznek az ügyfélalkalmazás többi részére.
Kilépési feltételek
Miután konfigurálta a build beépülő modult, vagy integrálta a parancssori eszközt a buildelési folyamatba, ellenőrizze, hogy sikeresen fut-e:
- Győződjön meg arról, hogy a build fordítása és buildelése sikeres volt.
- Konfigurálja a jelzőt
report, majd nyissa meg a jelentésdokumentumot, és győződjön meg arról, hogy osztály- és metóduscserék történnek:- Ha a beépülő modult használja, kövesse a Jelentéskészítés szakasz lépéseit.
- Ha a parancssori eszközt használja, adja meg a jelzőt
--report.
- Ha a beépülő modult használja, konfigurálja a jelzőt
verify, és győződjön meg arról, hogy nem okoz hibákat. Lásd: Ellenőrzés. - Ellenőrizze duplán az összes kizárást (
excludeProjects,excludeClassesésexcludeVariants) a build.gradle-ben. Győződjön meg arról, hogy minden kizárás szükséges, és nem kezeli a védett adatokat. Korábban sok adatszivárgási hiba fordul elő a túlzottan agresszív kizárások miatt. -
A telepített Intune Céges portál nélkül indítsa el a lefordított alkalmazást. Jelentkezzen be egy olyan Microsoft Entra felhasználóval, aki nem rendelkezik alkalmazásvédelmi szabályzattal. Ellenőrizze, hogy az alkalmazás a várt módon működik-e.
- Jelentkezzen ki, és ismételje meg ezt a tesztet a telepített Intune Céges portál.
GYIK
Az alkalmazásom korábban a build beépülő modul nélkül integrálta az SDK-t; hogyan használhatom a build beépülő modult?
A Intune App SDK régebbi verziói nem tartalmaztak automatikus módot az osztály- és metóduscserék végrehajtására. A fejlesztőknek manuálisan kellett elvégezniük ezeket a cseréket a forráskódban. Ha az alkalmazás ily módon van integrálva, biztonságosan alkalmazhatja a build beépülő modult vagy a parancssori buildelési eszközt. Nincs szükség forráskód-módosításokra. A projektnek továbbra is függőségként kell listáznia a MAM SDK-t.
Következő lépések
Miután elvégezte az összes kilépési feltételt, folytassa a 4. fázis: MAM Integration Essentials lépésekkel.