Intune App SDK Androidhoz – Ismerkedés a mobileszköz-kezeléssel

Az Androidhoz készült Microsoft Intune App SDK lehetővé teszi az Intune alkalmazásvédelmi szabályzatok beépítését a natív Java/Kotlin Android-alkalmazásba. Ezeket a házirendeket mobileszköz-kezelési házirendeknek is nevezzük. Az Intune által felügyelt alkalmazások integrálva vannak az Intune App SDK-val. Ha az Intune aktívan kezeli az alkalmazást, az Intune-rendszergazdák egyszerűen telepíthetik az alkalmazásvédelmi szabályzatokat az Intune által felügyelt alkalmazásra.

Megjegyzés:

Ez az útmutató több különálló szakaszra oszlik. Első lépésként tekintse át az 1. szakaszt: Az integráció megtervezése.

3. szakasz: Első lépések a mobileszköz-kezeléssel

Szakasz céljai

  • Töltse le az Intune App SDK-t.
  • Megtudhatja, hogy milyen fájlokat tartalmaz az Intune App SDK.
  • 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 buildeszközt.
  • Győződjön meg arról, hogy az Intune App SDK megfelelően szerepel 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ába.

Az Intune App SDK integrálásának nagy része a szabványos Android-osztályokat és metódushívásokat az osztályok és metódushívások Intune-verzióival váltja fel. Az SDK olyan buildeszközöket tartalmaz, amelyek automatikusan elvégzik a legtöbb ilyen cserét. Ha többet szeretne megtudni erről a helyettesítő logikáról, olvassa el a függelékosztály- és metóduscsere című szakaszát.

Az Intune App SDK letöltése

Az SDK letöltésével kapcsolatban lásd: Az SDK-fájlok letöltése.

Az SDK tartalma

Az Intune App SDK a következő fájlokból áll:

  • Microsoft. Intune. MAM. SDK.aar: Az SDK-összetevők, kivéve a támogatási könyvtár JAR-fájljait.
  • com.microsoft.intune.mam.build.jar: Gradle beépülő modul, amely segít az SDK integrálásában.
  • CHANGELOG.md: Az egyes SDK-verziókban végrehajtott módosítások nyilvántartását tartalmazza.
  • Microsoft. Intune. MAM. SDK. DownlevelStubs.aar: Ez az Android Archívum (AAR) olyan Android-rendszerosztályok csonkjait tartalmazza, amelyek csak újabb eszközökön vannak jelen, de a MAMActivity metódusai hivatkoznak rájuk. Az újabb eszközök figyelmen kívül hagyják ezeket a csomópontosztályokat. Erre az AAR csak akkor szükséges, ha az alkalmazás reflektálást végez az alábbiakból MAMActivityszármazó osztályokra, és a legtöbb alkalmazásnak nem kell tartalmaznia azt. Az AAR ProGuard-szabályokat tartalmaz az összes osztály kizárásához.

Hivatkozás Intune-alkalmazástárakra

Az 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 tartalmazza az alkalmazásvédelmi szabályzatok engedélyezéséhez szükséges felületeket. Emellett 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 fájlt Android-tárhivatkozásként kell megadni. Ha ezt a függőséget hozzá szeretné adni a buildhez, kövesse Az AAR vagy a JAR hozzáadása függőségként az Android dokumentációjában című témakört.

Visual Studio

A .NET MAUI – Android NuGet-csomaghoz készült Intune App SDK-t 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ő használatával című témakör lépéseit.

A Microsoft.Intune. MAM. Az SDK.aar a névtérre hatókörű Microsoft.Intune.Mam C#-hivatkozásokat hoz létre.

ProGuard

Előfordulhat, hogy az alkalmazás már használja a ProGuardot (vagy bármely más zsugorító/elfedő mechanizmust) buildlépésként. Az Intune App SDK ProGuard-konfigurációs szabályokkal rendelkezik, amelyeket bele kell foglalni az adott buildlépésbe. Beleértve a . A buildben található AAR – amint azt korábban leírtuk – automatikusan integrálja az SDK konfigurációját a ProGuard-lépésbe, így a szükséges osztályfájlok megmaradnak. Ha beillesztette a . AAR, nincs szükség más módosításra.

A Microsoft Authentication Library (MSAL) saját ProGuard-konfigurációval érkezik. Ha az alkalmazás integrálja az MSAL-t, további részletekért tekintse meg az MSAL dokumentációját .

Build-eszközök

Az SDK buildelési eszközöket (a Gradle-buildek beépülő modulját, a .NET-buildek céljait és egy parancssori eszközt) tartalmaz, amelyek automatikusan végrehajtják a MAM-cseréket. Ezek az eszközök átalakítják a Java fordítással generált osztályfájlokat; Nem módosítják az eredeti forráskódot. Ehhez vagy a Gradle beépülő modult, a .NET NuGet-csomagot vagy a parancssori eszközt kell használnia.

A buildelési eszközök önmagukban nem elegendők az alkalmazás teljes integrálásához. Az eszközök csak osztály- és metóduscserét hajtanak végre. Nem végeznek összetettebb SDK-integrációkat, mint például a Multi-Identity,az alkalmazásvédelmi szabályzatra való regisztráció, az alkalmazások és az eszköz vagy a felhőtárhelyek közötti adatátvitel korlátozására vonatkozó szabályzat, vagy az MSAL-konfiguráció. Ezeket az integrációkat be kell fejeznie, mielőtt az alkalmazás teljes mértékben engedélyezve lenne az Intune-ban. Alaposan tekintse át a jelen dokumentum további részét az alkalmazása szempontjából releváns integrációs pontokért.

Hibakeresés

A fordítóeszközök a fordítás után végzik el a cseréket. Ezek a cserék megváltoztatnak egyes módszerek nevét. Ennek eredményeképpen a hiba hatással lehet a metódus nevén beállított hibakeresési töréspontokra. Előfordulhat, hogy nem állnak meg a várakozásoknak megfelelően. A sorszámok töréspontjait ez nem érinti.

MAM in the Stack

Az Intune App SDK-integráció nagymértékben támaszkodik az osztály- és metóduscserékre. Ennek a megbízhatóságnak köszönhetően a veremkövetések végig láthatók mam . Ha az alkalmazáshoz nem tartozik appvédelmi szabályzatokkal megcélzott fiók, akkor ez a MAM-kód alvó állapotban van. Például MAMActivity ugyanúgy működik, mint a(z Activity ) vagy ugyanúgy onMAMCreate működik a következővel: onCreate. Ha mam egyszer megjelenik egy köteg, először ellenőrizze a következőket:

  • A fiókot appvédelmi szabályzatok célozzák meg?
  • Telepítve van az Intune Céges portál?

Hacsak a válasz mindkettőre "igen", a MAM-kód egyszerű áthaladást jelent.

Milyen eszközre van szükségem?

Ha a Gradle segítségével fejleszti az alkalmazását, olvassa el az Integrálás a Gradle Build beépülő modullal című témakört

Ha a .NET MAUI használatával fejleszti az alkalmazást, lásd: Integráció a .NET MAUI-célokkal.

Ha az alkalmazást egyik fenti eszközzel sem készíti el, olvassa el az Integrálás a parancssori eszközzel című témakört.

Integrálás a Gradle Build beépülő modullal

Az Intune App SDK beépülő modul az SDK részeként van terjesztve GradlePlugin/com.microsoft.intune.mam.build.jar néven.

Ahhoz, hogy a Gradle felismerje a bővítményt, fel kell venni az buildscript osztályútvonalhoz. A bővítmény a Javassisttól függ, amelyet szintén hozzá kell adni. A Javassist függésről további információt a Függőségek című témakörben talál.

Ha ezeket fel szeretné venni az osztályelérési útba, adja hozzá a következőt 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őket build.gradle az alkalmazás és a dinamikus funkciók moduljainak 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önyvtárakon működik project . Ez nem érinti a tesztfordítást.

Megjegyzés:

A 8.0-s Intune App SDK-tól kezdődően már nem lehet szelektíven feldolgozni a kódtárakat. A rendszer minden tárat feldolgoz.

Függőségek

A Gradle beépülő modul a Javassisttól függ, amelyet elérhetővé kell tenni a Gradle függőségfeloldásához. A Javassist kizárólag a build létrehozásakor használatos a beépülő modul futtatásakor, és nem kerül sor Javassist kód hozzáadására az alkalmazáshoz.

MAM SDK Javassist verziója
≥ 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őleges verziókkal. Általában az Intune App SDK által várt pontos verziót kell használnia.

Kompatibilitási mátrix

A MAM SDK Build beépülő modul igazodik az Android-buildek követelményeihez és kompatibilitási táblázataihoz. Az itt nem felsorolt verziók nem feltétlenül 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ók is megadhatók az alkalmazás bizonyos összetevőinek átírásból való kizárásához. A kivételek elsősorban olyan összetevők esetében hasznosak, amelyek nem relevánsak a mobileszköz-kezelésben (vagyis nem kezelik vagy jelenítik meg a vállalati adatokat).

A kizárások különböző hatókörökben 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. Olyan projektekhez is hasznosak, amelyek nem kezelik a vállalati adatokat. Jó jelölt lehet például egy olyan projekt, amely kizárólag az alacsony szintű hálózati műveletek végrehajtásához szükséges natív kódot tartalmaz. Ha egy projekt széles körben kapcsolódik Android-kódtárakhoz vagy rendszer API-khoz, kerülje ezeket a kizárásokat.
  • excludeClasses Lehetővé teszi az osztályok listájának kizárását. Ezek a kivételek olyan osztályok esetében hasznosak, amelyek nem kezelnek vagy mutatnak be vállalati adatokat. Például a kezdőképernyők és a bevezetési Activitylépések jó javaslatok. Az osztályok nem zárhatók ki, ha bármelyik szuperosztálya feldolgozása megtörténik.
  • excludeVariants Engedélyezi a projektváltozatok kizárását. Ezek a kizárások egy teljes változatnévre vagy egyetlen ízre is vonatkozhatnak. Különösen akkor hasznosak, ha nem MAM-változatot szeretne készíteni az alkalmazásból. Ha például az alkalmazás buildtípusokkal debug rendelkezik, valamint release ízesíti a {noMAM, MAM} és {mock, production} karaktereket, akkor megadhatja a következőket:
    • noMAM a noMAM ízű változatok kizárásához; vagy
    • noMAMMockDebug ha csak ezt a változatot szeretné kizárni.

Figyelem!

A kizárásokat nem szabad félvállról 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 kivételekkel

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 az alábbi hatásai lennének:

  • :product:FooLib nem lesz átírva, mert a excludeProjects
  • :product:foo-project átíródik, kivéve , com.contoso.SplashActivityamely kihagyásra kerül, mert benne van excludeClasses
  • com.microsoft.bar:baz.1.0.0 átíródik, mivel minden külső könyvtár szerepel a feldolgozásban.
  • Az ízzel rendelkező noMAM változatok nem lesznek újraírva.

Jelentés

A build-bővítmény HTML-jelentést tud készíteni az elvégzett módosításokról. A jelentés generálásának kéréséhez adja meg a report = trueintunemam konfigurációs blokkban. Ha létrejön, a jelentés a build könyvtárba kerül.outputs/logs

intunemam {
    report = true
}

Ellenőrzés

A build beépülő modul több ellenőrzést is futtathat az osztályok feldolgozásában előforduló lehetséges hibák megkereséséhez. Ezek az ellenőrzések segítenek a beépülő modul által kiváltott esetleges futásidejű hibák elleni védekezésben.

Ha azt szeretné kérni, hogy a rendszer a buildben végezze-e el a hitelesítést, adja meg verify = true a intunemam konfigurációs blokkban. Ez több másodpercet is hozzáadhat a bővítmény 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 jelzi. Ha hibával kapcsolatban segítségre van szüksége, eszkalálja a problémát a Microsoft ügyfélszolgálatához. Ha nem rendelkezik Microsoft támogatási szerződéssel, nyisson meg egy GitHub-problémát.

Növekményes buildek

A növekményes buildelés támogatásának engedélyezéséhez adja meg a incremental = trueintunemam konfiguráció blokkban. Ez a funkció csak a változó bemeneti fájlok feldolgozásával növeli a build teljesítményét. A beállítás alapértelmezett beállítása incremental a következő: false.

intunemam {
    incremental = true
}

A dinamikusfunkció-modul konfigurációja

A dinamikusfunkció-modulok az alkalmazásprojekttől függetlenül épülnek fel. Ezért a dinamikus funkciómoduloknak is alkalmazniuk kell a Gradle Build beépülő modult.

A Gradle beépülő modul technikai korlátokkal rendelkezik az általa használt API-kat illetően. Ezen korlátozások miatt az alkalmazásosztályokat újra fel kell dolgozni a dinamikusfunkció-modulosztályok átalakításakor. Az újrafeldolgozás elvégzéséhez konfigurálja az összes funkciómodult úgy, hogy az alkalmazással azonos beállításokat adjon meg.

Ha például egy alkalmazás kizár egy osztályt, a dinamikusfunkció-modulnak ki kell zárnia azt az osztályt is.

Integráció a .NET MAUI célokkal

Az Intune App SDK-célok az SDK részeként vannak elosztva Microsoft.Intune néven. Maui.Essentials.android.targets.

A rendszer fordításkor automatikusan importálja a célokat az alkalmazásba, miután hozzáadta az Intune App SDK for .NET MAUI – Android NuGet-csomagot.

Integrálás a parancssori szerkesztő eszközzel

A parancssori buildeszköz az SDK-ledobás mappájában érhető el BuildTool . Ugyanazt a funkciót látja el, mint a fent részletezett Gradle beépülő modul és a .NET célok. A parancssori eszköz azonban integrálható egyéni buildrendszerekbe. Mivel az eszköz általánosabb, bonyolultabb meghívni. Amikor csak lehetséges, használja a Gradle beépülő modult vagy a .NET-célokat.

Az Command-Line eszköz használata

A parancssori eszköz a könyvtárban BuildTool\bin található segítő parancsfájlok használatával hívható meg.

Az eszköz a következő paramétereket várja meg.

Paraméter Kötelező Leírás
--input Igen A módosítani kívánt JAR-fájlok és osztályfájlok könyvtárainak pontosvesszővel tagolt listája. Vegye fel az átírni kívánt összes JAR-fájlt és könyvtárat.
--output Igen A módosított osztályokat tároló JAR-fájlok és könyvtárak pontosvesszővel tagolt listája. Bemeneti bejegyzésenként egy kimeneti bejegyzést adjon meg, ugyanabban a sorrendben felsorolva.
--classpath Igen A build osztályútvonala. Ez tartalmazhat JAR-fájlokat és osztálykönyvtárakat is.
--processed Nem A JAR-fájlok és könyvtárak pontosvesszővel tagolt listája, amely olyan osztályokat tartalmaz, amelyeket a buildeszköz egy korábbi meghívása már feldolgozott.
--excludeClasses Nem Pontosvesszővel tagolt lista, amely azoknak az osztályoknak a nevét tartalmazza, amelyeket ki kell hagyni az átírásból.
--report Nem Könyvtár, amelybe HTML-jelentést kell írni a módosított osztályokról. Ha nincs megadva, akkor nem készül jelentés.

Az opcionális --processed beállítással növekményes buildek engedélyezhetők. Az itt felsorolt fájlok/könyvtárak halmazának különállónak kell lennie a bemeneti és az osztályelérési útvonalak listájával.

Tipp

Unix-szerű rendszerekben a pontosvessző parancselválasztó. Ha el szeretné kerülni, hogy a parancsok feldarabolhatók legyenek, minden egyes pontosvesszőt vegyen fel a '' karakterek elé, vagy a teljes paramétert tördelje idézőjelek közé.

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 az alábbi hatásai lennének:

  • A product-foo-project címtár a következőre lesz átírva: mam-build\product-foo-project
  • bar.jar átíródott mam-build\libs\bar.jar
  • zap.jar nem íródik át, mert csak a--classpath
  • Az com.contoso.SplashActivity osztály nem lesz átírva, még akkor sem, ha benne van --input

Figyelmeztetés

A buildkészítő 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, bontsa ki a buildeszköz meghívása előtt.

A MAMApplication beállítása

Ha az alkalmazás létrehozza a android.app.Application, akkor a build beépülő modul vagy a parancssori eszköz átalakítja az alkalmazásosztályt.

Ha az alkalmazás nem tartozik alosztályba android.app.Application, akkor be kell állítania "com.microsoft.intune.mam.client.app.MAMApplication" attribútumként a "android:name" AndroidManifest.xml <application> címkéjében.

  • Használja a legújabb Android SDK-buildeszközöket.
  • Távolítson el minden felesleges és nem használt könyvtárat (például android.support.v4).

Az automatikus cserék végrehajtása után az Intune App SDK továbbra is fenntartja az Android API által biztosított szerződést. A házirend kényszerítése azonban gyakrabban aktiválhat hibaállapotokat. Az alábbi ajánlott Android-gyakorlati tanácsok csökkentik a meghibásodás valószínűségét:

  • Azok az Android SDK-függvények, amelyek most visszatérhetneknull, nagyobb valószínűséggel térnek vissza.null Győződjön meg arról, hogy null az ellenőrzések védik ezeket a függvényhívásokat.
  • A ellenőrizhető funkciókat (például a clipboardManager.getPrimaryClipDescription()) a mobileszköz-kezelési szolgáltatást helyettesítő API-kon (pl. MAMClipboard.getPrimaryClipDescription(clipboardManager)) keresztül kell ellenőrizni.
  • Minden származtatott függvénynek át kell hívnia a felső osztályú verzióit.
  • Kerülje az API-k félreérthető használatát. Például az requestCode ellenőrzés nélküli használata Activity.startActivityForResult furcsa viselkedést okoz.

Szolgáltatások

A házirend-ké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 a Context.bindService mögöttes házirendkényszerítés Service.onBind miatt meghiúsulhatnak, és ServiceConnection.onNullBinding vagy .ServiceConnection.onServiceDisconnected A létrehozott kötött szolgáltatással való interakció a házirend-kényszerítés miatt kiválthatja SecurityException a Binder.onTransact.

A kötött szolgáltatások ügyfeleinek azt javasoljuk, hogy ellenőrizzék a szolgáltatás által okozott kivételeket. Ne engedje, hogy a kivételek propagálva legyenek 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 sikeres-e a futása:

  • Győződjön meg arról, hogy a build fordítása és buildje sikeresen megtörténik.
  • Konfigurálja a report jelzőt, majd nyissa meg a jelentésdokumentumot, és ellenőrizze, hogy osztály- és metóduscserék történnek-e:
    • Ha használja a beépülő modult, kövesse a Jelentéskészítés című szakasz lépéseit.
    • Ha a parancssori eszközt használja, vegye fel a jelölőt is --report .
  • Ha a beépülő modult használja, konfigurálja a verify jelzőt, és győződjön meg arról, hogy nem okoz hibákat. Lásd : Ellenőrzés.
  • Ellenőrizze még egyszer az összes kivételt (,excludeProjects és excludeClassesexcludeVariants) a build.gradle fájlban. Győződjön meg arról, hogy minden kizárás szükséges, és nem vonatkozik a védett adatokra. Korábban sok adatszivárgási hiba következett be a túlságosan agresszív kizárások miatt.
  • Az Intune Céges portál telepítése nélkül indítsa el a lefordított alkalmazást. Jelentkezzen be egy olyan Microsoft Entra-felhasználóval, akit nem céloz meg az alkalmazásvédelmi házirend. Győződjön meg arról, hogy az alkalmazás a várt módon működik.
    • Jelentkezzen ki, majd ismételje meg a tesztet a telepített Intune Céges portál telepítésével.

GYIK

Az alkalmazás korábban integrálta az SDK-t a build beépülő modul nélkül; hogyan használhatom a build bővítményt?

Az Intune App SDK korábbi verziói nem tartalmaztak automatikus módszert az osztály- és metóduscserék végrehajtására. A fejlesztőknek ezeket a cseréket manuálisan kellett elvégezniük 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 buildkészítő eszközt. Nincs szükség a forráskód módosítására. A projektnek továbbra is függőségként kell szerepelnie a MAM SDK-ban.

Következő lépések

Miután teljesítette az összes kilépési feltételt, folytassa a 4. fázissal: A mobileszköz-kezelési integráció alapjai