Androidhoz készült Intune App SDK – A MAM használatának első lépései
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 natív Java-/Kotlin Android-alkalmazásába. Az Intune által felügyelt alkalmazások integrálva lesznek az Intune App SDK-val. Az Intune-rendszergazdák egyszerűen telepíthetnek alkalmazásvédelmi szabályzatokat az Intune által felügyelt alkalmazásokban, ha az 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 az Intune App SDK-t.
- Megtudhatja, milyen fájlok szerepelnek az Intune App SDK-ban.
- Hivatkozzon az Intune App SDK-ra az alkalmazásban.
- Konfigurálja az Intune App Gradle Build beépülő modult, VAGY használja a parancssori buildelési eszközt.
- Ellenőrizze, hogy az 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 az Intune App SDK-t, és belefoglalni az alkalmazás buildelési folyamatában.
Az Intune App SDK integrálásának nagy része a szabványos Android-osztályokat és metódushívásokat váltja fel ezeknek az osztályoknak és metódushívásoknak az Intune-verzióival. 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.
Az 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?
Az 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: Egy 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.
Intune-alkalmazáskódtárak hivatkozása
Az Intune App SDK egy szabványos Android-kódtár, külső függőségek nélkül. A Microsoft.Intune.MAM.SDK.aar tartalmazza az alkalmazásvédelmi szabályzatok engedélyezéséhez szükséges interfészeket és a Microsoft Intune Céges portál alkalmazással való együttműködéshez szükséges kódot.
Android Studio
A Microsoft.Intune.MAM.SDK.aar-t Android-kódtár-referenciaként kell megadni:
- Nyissa meg az alkalmazásprojektet az Android Studióban, és nyissa meg az Új > fájl > modult.
- Válassza az Importálás lehetőséget. JAR/. AAR-csomag.
- Válassza a Microsoft.Intune.MAM.SDK.aar elemet a modul létrehozásához. AAR-fájltípus .
- Kattintson a jobb gombbal az alkalmazáskódot tartalmazó modulra vagy modulokra, és válassza a Modulbeállítások>Függőségek lap>+ ikonModulfüggőség elemét>.
- Válassza ki a létrehozott MAM SDK AAR modult, majd kattintson az OK gombra. A referencia hozzáadása biztosítja, hogy a modul a MAM SDK-val fordításra kerül a projekt létrehozásakor.
Visual Studio
Az 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.SDK.aar olyan C#-hivatkozásokat hoz létre, amelyek hatóköre a Microsoft.Intune.Mam
névtérre terjed ki.
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. Az Intune App SDK ProGuard konfigurációs szabályokkal rendelkezik, amelyeket bele kell foglalni a 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 az Intune App SDK integrációja nagy mértékben támaszkodik az osztály- és metóduscserékre, a hívásláncok teljes nézetben láthatók mam
lesznek.
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
Az Intune App SDK beépülő modul az SDK részeként GradlePlugin/com.microsoft.intune.mam.build.jar néven érhető el.
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 build.gradle
alkalmazásmodul 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 az Intune App SDK által várt pontos verziót kell használnia:
- Az Intune App SDK ≥ 10.0.0 használatához Javassist 3.29.2-GA szükséges
- Az Intune App SDK ≥ 7.0.0 használatához Javassist 3.27.0-GA szükséges
- Az 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, vagynoMAMMockDebug
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
}
Integráció a .NET MAUI-célokkal
Az Intune App SDK-példányok az SDK részeként Microsoft.Intune.Maui.Essentials.android.targets néven vannak elosztva.
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 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 az 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?
Az 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ós alapverzióval.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: