Megosztás a következőn keresztül:


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ályokonMAMActivity, é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:

  1. Nyissa meg az alkalmazásprojektet az Android Studióban, és nyissa meg az Új > fájl > modult.
  2. Válassza az Importálás lehetőséget. JAR/. AAR-csomag.
  3. Válassza a Microsoft.Intune.MAM.SDK.aar elemet a modul létrehozásához. AAR-fájltípus .
  4. 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>.
  5. 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 Activityműködik, mint , onMAMCreate ugyanúgy onCreatefog 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ési Activityelemek 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, productiona következőket adhatja meg: MAMnoMAMreleasedebug
    • 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 a excludeProjects
  • :product:foo-project A újra van írva, kivéve a következőt com.contoso.SplashActivity: , amelyet a program kihagy, mert a excludeClasses
  • 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 a mam-build\libs\bar.jar
  • zap.jarnincs ú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.Applicationhozza 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.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> .

  • 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 vissza null. Győződjön meg arról, hogy az null 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ául MAMClipboard.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 az requestCode 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.onServiceDisconnectedvagy 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és excludeVariants) 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.