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 (más néven APP- vagy MAM-szabályzatokat) építsen be a natív Java/Kotlin Android-alkalmazásba. A Intune által felügyelt alkalmazás az Intune App SDK-val integrálva van. Intune rendszergazdák egyszerűen telepíthetnek alkalmazásvédelmi szabályzatokat a Intune által felügyelt alkalmazásra, ha Intune aktívan kezeli az alkalmazást.
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
Szakasz Goals
- 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.
- THIRDPARTYNOTICES.TXT: Az alkalmazásba lefordított külső és/vagy OSS-kódokat nyugtázó forrásmegjelenítés.
-
Microsoft. Intune. MAM. SDK. DownlevelStubs.aar: Ez az AAR olyan androidos rendszerosztályokhoz tartalmaz csonkokat, amelyek csak az újabb eszközökön vannak jelen, de amelyekre a MAMActivity metódusai hivatkoznak. 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 interfészeket és az 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: . A buildben található AAR a fentiek 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 megfelelően felvette 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 (Alkalmazások és eszközök vagy felhőbeli tárolóhelyek közötti adatátvitel korlátozására vonatkozó szabályzat) vagy az MSAL-konfiguráció, amelyet az alkalmazás teljes Intune engedélyezése előtt be kell fejezni. Gondosan tekintse át a dokumentáció többi részét az alkalmazással kapcsolatos integrációs pontokért.
A hibakeresésre gyakorolt hatás
A buildelési eszközkészlet fordítás után cserét hajt végre, ami megváltoztat néhány metódusnevet. Ennek eredményeképpen a metódusneveken beállított hibakeresési töréspontok hatással lehetnek, és nem a várt módon állíthatók le. A sorszámtörések nincsenek hatással.
MAM a veremben
Mivel a Intune App SDK-integrációja nagy mértékben támaszkodik az osztály- és metóduscserékre, a hívásláncok között is látni mam
fogja azokat.
Ha az alkalmazás nem rendelkezik alkalmazásvédelmi szabályzatokkal megcélzott fiókkal, az összes MAM-kód inaktív: MAMActivity
ugyanúgy Activity
működik, mint , onMAMCreate
ugyanúgy onCreate
fog működni, mint , stb. Amikor megjelenik mam
egy veremben, először ellenőrizze a következőket:
- 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 a fentiek egyikével sem hozza létre, tekintse meg 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
Megjegyzés:
Az Android Gradle beépülő modul 3.6.1-es vagy újabb verzióját, valamint a Gradle 5.6.4-es vagy újabb verzióját kell használnia.
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 a rendszer nem ad hozzá Javassist-kódot az alkalmazáshoz.
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:
- Intune App SDK ≥ 10.0.0 használatához Javassist 3.29.2-GA szükséges
- Intune App SDK ≥ 7.0.0 használatához Javassist 3.27.0-GA szükséges
- Intune App SDK < 7.0.0 használatához Javassist 3.22.0-GA szükséges
Emellett a MAM SDK 8.0.0-s vagy újabb használata esetén meg kell győződnie arról, hogy a következő van beállítva a Gradle-konfigurációban:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
Kizárások
További konfigurációk is rendelkezésre állhatnak, amelyek kizárják 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:
-
excludeProjects
lehető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, és/vagy 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 nagyjából megfelel az Android-kódtáraknak vagy a rendszer API-knak, ezeket a kizárásokat el kell kerülni. -
excludeClasses
lehető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ésiActivity
elemek jó jelöltek. Vegye figyelembe, hogy egy osztály nem zárható ki, ha valamelyik szuperosztálya feldolgozásra kerül. -
excludeVariants
lehető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 buildtípusokkal és {, } és {mock
, } ízekkel rendelkezik,production
a következőket adhatja meg:MAM
noMAM
release
debug
-
noMAM
a noMAM-ízben lévő összes változat kizárásához, vagy -
noMAMMockDebug
hogy 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:FooLib
nincs újraírva, mert aexcludeProjects
-
:product:foo-project
A újra van írva, kivéve a következőtcom.contoso.SplashActivity
: , amelyet a program kihagy, mert aexcludeClasses
-
com.microsoft.bar:baz.1.0.0
A újra van írva, mert az összes külső kódtár feldolgozásra kerül. - Az ízt tartalmazó
noMAM
vá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 további ellenőrzést 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ódosított 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 által használt API-k technikai korlátai miatt az alkalmazásosztályokat újra kell feldolgozni a dinamikus funkciómodul-osztályok átalakításakor. Ennek biztosítása érdekében az összes funkciómodult ugyanazokkal a beállításokkal kell konfigurálni, mint a tervezett alkalmazást.
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 célokat a rendszer automatikusan importálja az alkalmazásba fordításkor, miután hozzáadta a Intune App SDK for .NET MAUI – Android NuGet csomagot.
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 fent részletezett Gradle beépülő modul/.NET-célok, de integrálható egyéni buildrendszerekbe.
Mivel általánosabb, összetettebb a meghívása, ezért a Gradle beépülő modult/.NET-célokat kell használni, amikor csak lehetséges.
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. Ennek tartalmaznia kell az összes átírni kívánt jar-fájlt/könyvtá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. Bemeneti bejegyzésenként egy kimeneti bejegyzésnek kell lennie, és sorrendben kell felsorolni őket. |
--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ásával 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-project
kö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.jar
nincs újraírva, mert csak a--classpath
- Az
com.contoso.SplashActivity
osztá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 bontja ki classes.jar
az aar fájlok kezelésekor, ezt a buildelési eszköz meghívása előtt kell megtennie.
A MAMApplication beállítása
Ha az alkalmazás a alosztályát android.app.Application
hozza létre, akkor a build beépülő modul / parancssori eszköz átalakítja az alkalmazásosztályt.
Ha az alkalmazás nem alosztály, android.app.Application
akkor 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. A szabályzatkényszerítés következtében azonban a hibaállapotok gyakrabban aktiválódhatnak. Ezek az Android-ajánlott eljárások csökkentik a hibák valószínűségét:
- A visszaadható
null
Android SDK-függvények nagyobb valószínűséggel térnek visszanull
. Győződjön meg arról, hogy aznull
ellenő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. A használata
Activity.startActivityForResult
például azrequestCode
ellenőrzés 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
a mögöttes szabályzatkényszerítés miatt meghiúsulhatnak, Service.onBind
és a ServiceConnection.onServiceDisconnected
vagy a -t eredményezhetikServiceConnection.onNullBinding
.
A bevett kötött szolgáltatásokkal való interakció szabályzatkényszerítés miatt okozhat SecurityException
hibát a következőben Binder.onTransact
: .
A kötött szolgáltatások ügyfeleit határozottan javasoljuk, hogy ellenőrizze a szolgáltatás által kiadott kivételeket ahelyett, hogy a kivételeket az ügyfélalkalmazás többi részére propagálja.
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 fordult 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 az Alkalmazásvédelmi szabályzattal van megcélzva, és 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, és a fejlesztőknek manuálisan kellett elvégezniük ezeket a cseréket a forráskódban. Ha az alkalmazás korábban már integrálta ezt a módszert, a build beépülő modul (vagy a parancssori buildelési eszköz) alkalmazása a forráskód módosítása nélkül biztonságos. 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-integráció Essentials.