Microsoft Intune App SDK for Android – fejlesztői útmutató

Az Androidhoz készült Microsoft Intune App SDK lehetővé teszi az Intune alkalmazásvédelmi szabályzatok (más néven MAM-házirendek) beépítését a natív Java/Kotlin Android-alkalmazásba. Az Intune által felügyelt alkalmazások integrálva vannak az Intune App SDK-val. Az Intune rendszergazdái egyszerűen telepíthetnek alkalmazásvédelmi szabályzatokat az Intune által felügyelt alkalmazásra, ha az Intune aktívan kezeli az alkalmazást.

Fontos

Az Intune rendszeresen ad ki frissítéseket az Intune App SDK-hoz. Javasoljuk, hogy fizessen elő az Intune App SDK adattáraira a frissítésekért, hogy beépíthesse a frissítést a szoftverfejlesztési kiadási ciklusba, és biztosíthassa, hogy az alkalmazások támogassák a legújabb alkalmazásvédelmi házirend-beállításokat.

Tervezze meg az Intune App SDK kötelező frissítéseinek elvégzését minden főbb operációsrendszer-kiadás előtt, így biztosítva az alkalmazás zökkenőmentes működését, mivel az operációsrendszer-frissítések kompatibilitástörő változásokat okozhatnak. Ha nem frissít a legújabb verzióra az operációs rendszer egyik főbb kiadása előtt, fennáll annak a veszélye, hogy hibát érintő módosításba ütközik, és/vagy nem tudja alkalmazni az appvédelmi házirendeket az alkalmazásra.

Folyamat folyamatábra

Az alábbi diagram az Android-alapú Intune App SDK folyamatát ismerteti:

Magas szintű architekturális diagram a Microsoft Intune-hoz.

Szakasz céljai

Az útmutató részletesebb információkat tartalmaz az Intune App SDK architektúrájáról, információkat tartalmaz a szokatlan integrációs lépésekről, és egyéb hasznos tartalmakat tartalmaz.

Az SDK részletesebben

Osztály- és metódushelyettesítők

A buildeszközök használatával az Intune App SDK megkísérli minimalizálni az Android-fejlesztők integrációs terhét. Az eszközök összeállítása előtt a fejlesztőknek minden cserét manuálisan kellett végrehajtaniuk.

Megjegyzés:

Az alkalmazásoknak most már integrálódniuk kell az SDK-buildeszközökkel, amelyek automatikusan elvégzik az összes cserét.

Az Android alaposztályokat a megfelelő MAM-megfelelői váltják fel az Intune-felügyelet engedélyezéséhez. Az SDK-osztályok az Android alaposztálya és az alkalmazás saját származtatott osztálya között élnek. Például előfordulhat, hogy egy alkalmazástevékenység öröklési hierarchiával végződik, amely így néz ki: AppSpecificActivity kiterjeszti MAMActivity a kiterjesztéseket Activity. A MAM-réteg szűri a rendszerműveletekre irányuló hívásokat, hogy zökkenőmentesen biztosítsa az alkalmazás számára a világ felügyelt nézetét.

Az alaposztályok mellett az alkalmazás által származtatás nélkül használt egyes osztályok is MediaPlayerrendelkeznek kötelező MAM-egyenértékekkel, és néhány metódushívást is le kell cserélni. Az alábbi táblázat számos mobileszköz-kezelési eszköz cseréjét sorolja fel.

Android alaposztály Az Intune App SDK helyettesítése
android.app.Tevékenység MAMActivity
android.app.ActivityGroup MAMActivityGroup
android.app.AliasActivity MAMAliasActivity
android.app. Alkalmazás MAMApplication
android.app.Dialog MAMDialog
android.app.AlertDialog.Builder MAMAlertDialogBuilder
android.app.DialogFragment MAMDialogFragment
android.app.ExpandableListActivity MAMExpandableListActivity
android.app.Fragment MAMFragment
android.app.IntentService MAMIntentService
android.app.LauncherActivity MAMLauncherActivity
android.app.ListActivity MAMListActivity
android.app.ListFragment MAMListFragment
android.app.NativeActivity MAMNativeActivity
android.app.PendingIntent MAMPendingIntent
android.app.Service MAMService
android.app.TabActivity MAMTabActivity
android.app.TaskStackBuilder MAMTaskStackBuilder
android.app.backup.BackupAgent MAMBackupAgent
android.app.backup.BackupAgentHelper MAMBackupAgentHelper
android.app.backup.FileBackupHelper MAMFileBackupHelper
android.app.backup.SharePreferencesBackupHelper MAMSharedPreferencesBackupHelper
android.app.job.JobService MAMJobService
android.content.BroadcastReceiver MAMBroadcastReceiver
android.content.ContentProvider MAMContentProvider
android.os.Binder MAMBinder (Csak akkor szükséges, ha a Binder nem Android Interface Definition Language (AIDL) interfészről jön létre)
android.media.MediaPlayer MAMMediaPlayer
android.media.MediaMetadataRetriever MAMMediaMetadataRetriever
android.media.MediaRecorder MAMMediaRecorder
android.provider.DocumentsProvider MAMDocumentsProvider
android.preference.PreferenceActivity MAMPreferenceActivity
android.widget.PopupWindow MAMPopupMenu
android.widget.PopupWindow MAMPopupWindow
android.widget.ListPopupWindow MAMListPopupWindow
android.widget.TextView MAMTextView
android.widget.AutoCompleteTextView MAMAutoCompleteTextView
android.widget.CheckedTextView MAMCheckedTextView
android.widget.EditText MAMEditText
android.inputmethodservice.ExtractEditText MAMExtractEditText
android.widget.MultiAutoCompleteTextView MAMMultiAutoCompleteTextView
android.view.LayoutInflater MAMLayoutInflater
android.view.ViewGroup MAMViewCsoport
android.view.SurfaceView MAMSurfaceView
android.opengl.GLSurfaceView MAMGLSurfaceView
android.widget.VideoView MAMVideoView

Átnevezett metódusok

Sok esetben az Android osztályban elérhető módszerek a MAM helyettesítő osztályában véglegesként lettek megjelölve. Ebben az esetben a MAM helyettesítő osztály egy hasonló nevű (általában utótaggal kiegészített MAM) módszert biztosít, amelyet felül kell bírálni. Ha például a MAMActivity-ből származtat, felülírás onCreate() és hívás super.onCreate()helyett felül Activity kell bírálnia onMAMCreate() és hívnia super.onMAMCreate()kell . A Java-fordítónak érvényesítenie kell a végső korlátozásokat, hogy megakadályozza az eredeti metódus véletlen felülbírálását a mobileszköz-kezelési mód megfelelője helyett.

Wrapped System Services

Egyes rendszerszolgáltatás-osztályoknál statikus metódust kell hívni egy MAM-burkoló osztályon ahelyett, hogy közvetlenül a kívánt metódust hívnák meg a szolgáltatás példányán. Például a behívó hívásnak getSystemService(ClipboardManager.class).getPrimaryClip() a következőre MAMClipboardManager.getPrimaryClip(getSystemService(ClipboardManager.class)irányuló hívássá kell válnia: . A szükséges buildbővítmény automatikusan elvégzi ezeket a cseréket.

Android osztály Az Intune App SDK helyettesítése
android.content.ClipboardManager MAMClipboard
android.content.ContentProviderClient MAMContentProviderClientManagement
android.content.ContentResolver MAMContentResolverManagement
android.content.pm.PackageManager MAMPackageManagement
android.app.DownloadManager MAMDownloadManagement
android.print.PrintManager MAMPrintManagement
android.view.view MAMViewManagement
android.view.DragEvent MAMDragEventManagement
android.view.LayoutInflater MAMLayoutInflaterManagement
android.app.NotificationManager MAMNotificationManagement
android.app.blob.BlobStoreManager MAMBlobStoreManager
android.app.blob.BlobStoreManager.Session MAMBlobStoreManager.Session

Egyes osztályok legtöbb metódusa be van csomagolva (például ClipboardManager, , ContentResolverContentProviderClient), míg PackageManager más osztályokba csak egy vagy két metódus van csomagolva (például DownloadManager, PrintManager, PrintHelper, View, NotificationManagerDragEventés NotificationManagerCompat.

Mobileszköz-kezelési és mobileszköz-kezelési szolgáltatás regisztrálása

Ahogy azt a 4. szakasz Regisztráció és regisztráció lapján tárgyaltuk, az Intune App SDK "regisztrálja" azokat a fiókokat, amelyeket az alkalmazás regisztrál, hogy a fiókot házirend védje. A sikeres regisztráció után a fiók felügyelete alá vonul, és a mobileszköz-kezelési házirendeket alkalmazni kell a fiókra.

A "regisztráció" kifejezés utalhat az Eszközkezelés (MDM) engedélyezésének végfelhasználó által kezdeményezett folyamatára is. Az MDM-regisztráció teljesen elkülönül az alkalmazásvédelmi házirend regisztrációjától.

Egy SDK-ba integrált alkalmazás anélkül is regisztrálhat fiókot az alkalmazásvédelmi szabályzathoz, hogy az adott fiók regisztrálva lenne az Eszközkezelésben. Hasonlóképpen, a felhasználók regisztrálhatnak egy eszközt az Eszközkezelés szolgáltatásra anélkül, hogy SDK-val integrált alkalmazásokkal rendelkeztek volna az alkalmazásvédelmi szabályzatra regisztrált fiókokkal.

Amikor a fejlesztők és rendszergazdák a regisztrációra hivatkoznak, általában az MDM-regisztrációra utalnak, mivel az alkalmazásvédelmi házirend regisztrációja nagyrészt láthatatlan mind a fejlesztők, mind a végfelhasználók számára. Az MDM-re való regisztrációról további információt az Android-eszközök regisztrálása című témakörben talál.

Integrációs tippek

A Céges portál naplóinak ismertetése

Céges portál naplói olyan információkat tartalmaznak, amelyeket a Microsoft mérnökei a problémák kivizsgálásához használnak. A naplók némelyike hasznos lehet az SDK-t integráló fejlesztők számára is.

A fájl DiagnosticsInfo-scrubbed.log többek között a mobileszköz-kezelés által kezelt appokról és a mobileszköz-kezelési házirendre vonatkozó részletes információkat PolicyDB Information tartalmazza. Minden felügyelt apphoz tartozik bejegyzés a PolicyDB Information szakaszában. Itt érdemes ellenőriznie az app csomagnevét, hogy meggyőződjön arról, hogy a mobileszköz-kezelési házirend megfelelően van megcélozva az alkalmazáshoz. Ha itt nem látja az alkalmazás csomagjának nevét, az azt jelenti, hogy a bejelentkezett fiókra nincs mobileszköz-kezelési házirend alkalmazva.

Az egyes mobileszköz-kezelési házirend-beállítások leírásáért tekintse meg az Android appvédelmi házirendjének beállításait a Microsoft Intune-ban. Ha szeretné megtudni, hogyan jelennek meg ezek a beállítások a Céges portál naplóiban, tekintse meg az Ügyfélapp-védelmi naplók áttekintését. Ha a mobileszköz-kezelési házirend nem az elvárásoknak megfelelően van érvényben, javasoljuk, hogy ellenőrizze a Céges portál naplóit vagy a diagnosztikai felhasználói felületet, ellenőrizze, hogy az appot mobileszköz-kezelési házirend kezeli-e, és győződjön meg arról, hogy a házirendbeállítások megfelelnek a várt értékeknek.

A Céges portál naplóit az alábbi módok egyikével gyűjtheti össze:

  • A Céges portálon keresztül
    • A Céges portál alkalmazás megnyitása
    • Válassza a jobb felső sarokban található három pont menüt
    • Válassza a Beállítások lehetőséget
    • A Diagnosztikai naplók területen válassza a Naplók mentése elemet
    • Az utasításokat követve válassza ki a kimeneti könyvtárat a Céges portál naplóinak mentéséhez.
    • A paranccsal adb shell pull húzza le a naplókat az androidos eszközéről a helyi gépre.
  • [A felügyelt alkalmazásnaplók eléréséhez használja a Microsoft Edge Android-verzióját]. Ez megjeleníti a Céges portál naplóinak összegyűjtésére és a mobileszköz-kezelési diagnosztika megtekintésére szolgáló felhasználói felületet.
  • Hívás MAMPolicyManager.showDiagnostics(context) ugyanazon felhasználói felület megjelenítéséhez a Céges portál naplóinak összegyűjtéséhez.

Gyors tesztelés a házirend módosításával

Az Intune App SDK alkalmazás integrációjának fejlesztése és tesztelése során gyakran módosíthatja a tesztfelhasználóra vonatkozó alkalmazásvédelmi házirend beállításait.

Alapértelmezés szerint az integrált alkalmazások 30 percenként bejelentkeznek a frissített házirendekre az Intune szolgáltatással, ha aktívak. Elkerülheti ezt a várakozást, és kényszerítheti a bejelentkezést a Céges portál használatával:

  1. Indítsa el a Céges portált. Nem kell bejelentkeznie.
  2. Válassza a ... menüikonra.
  3. Válassza a Beállítások lehetőséget.
  4. Görgessen a "Kezelési házirend" beállításhoz.
  5. Nyomja le a Szinkronizálás gombot.

Ezzel a művelettel azonnal ütemezheti a bejelentkezést, és lekéri az alkalmazásra és fiókra vonatkozó naprakész házirendeket.

Az AndroidX-áttelepítés hibaelhárítása

Ha az AndroidX használata előtt integrálta az Intune App SDK-t, az alábbihoz hasonló hiba léphet fel az AndroidX-re való áttelepítés során:

incompatible types: android.support.v7.app.ActionBar cannot be converted to androidx.appcompat.app.ActionBar

Ezek a hibák akkor fordulhatnak elő, ha az alkalmazás az SDK korábbi támogatási osztályaira hivatkozik. A mobilalkalmazás-kezelési támogatási osztályok az AndroidX-be áthelyezett Android-támogatási osztályokat foglalják magukba. Az ilyen hibák elkerülése érdekében cserélje le az összes mobileszköz-kezelési segédosztály-hivatkozást a megfelelő AndroidX-fiókokra. Ezt úgy érheti el, hogy először eltávolítja a MAM-támogatási könyvtárfüggőségeket a Gradle-buildfájlokból. A szóban forgó sorok az alábbihoz hasonlóak lesznek:

implementation "com.microsoft.intune.mam:android-sdk-support-v4:$intune_mam_version"
implementation "com.microsoft.intune.mam:android-sdk-support-v7:$intune_mam_version"

Ezután javítsa ki a keletkező fordítási idejű hibákat úgy, hogy az and com.microsoft.intune.mam.client.support.v4 csomagokban com.microsoft.intune.mam.client.support.v7 lévő összes MAM-osztályra mutató hivatkozást lecseréli az azoknak megfelelő AndroidX-csomagokra. Például az alábbi MAMAppCompatActivity hivatkozásokat az AndroidX-re kell módosítani.AppCompatActivity Ahogy fentebb említettük, a MAM build bővítmény/eszköz fordításkor automatikusan átírja az AndroidX könyvtárakban lévő osztályokat a megfelelő MAM-megfelelőkkel.

Korlátozások és különleges esetek

Alapértelmezett regisztráció

Az alkalmazás alternatív módon regisztrálhat az alkalmazásvédelmi szabályzatokra egy egyszerűsített folyamattal, az alapértelmezett regisztrációval. Ez a funkció elsősorban az MSAL-t nem integráló privát üzletági alkalmazások támogatására szolgál.

Figyelmeztetés

Az alapértelmezett regisztráció jelentős kompromisszumokkal jár, ezért nem ajánlott. Az alapértelmezett regisztrációt kihasználó alkalmazások nem támogatják a feltételes hozzáférést, nem részesülnek a Microsoft-szolgáltatásokkal együtt, és nem Intune-fiókok sem használhatják őket. Ha az alkalmazást nyilvános alkalmazásboltba szállítjuk, az alapértelmezett regisztráció nem támogatott.

Az alapértelmezett regisztráció arra kényszeríti a végfelhasználót, hogy telepítse a Céges portál, és hajtsa végre a mobileszköz-kezelési regisztrációs folyamatot, mielőtt beengedné a felhasználókat az alkalmazásba.

Megjegyzés:

Az alapértelmezett regisztráció a szuverén felhőre támaszkodik.

Engedélyezze az alapértelmezett regisztrációt a következő lépésekkel:

  1. Ha az alkalmazás integrálja az MSAL-t, vagy engedélyeznie kell az egyszeri bejelentkezést, konfigurálja az MSAL-t. Ha nem, akkor kihagyhatja ezt a lépést.

  2. Engedélyezze az alapértelmezett regisztrációt a következő érték hozzáadásával a jegyzékfájlhoz a <application> címke alatt:

    <meta-data android:name="com.microsoft.intune.mam.DefaultMAMServiceEnrollment" android:value="true" />
    
  3. A szükséges MAM-házirend engedélyezéséhez adja hozzá a következő értéket a jegyzékfájlhoz a <application> címke alatt:

    <meta-data android:name="com.microsoft.intune.mam.MAMPolicyRequired" android:value="true" />
    

Elkülönített folyamatok

Az Intune App SDK nem tud védelmet alkalmazni az elkülönített folyamatokra. Az elkülönített folyamatok (android:isolatedProcess) támogatásához meg kell adni az alábbi metaadatcímkét.

Figyelmeztetés

E metaadatok hozzáadásával az alkalmazás deklarálja, hogy az elkülönített folyamat nem teheti elérhetővé a szervezeti adatokat. Az alkalmazás felelős azért, hogy ezt garantálja.

<meta-data android:name="com.microsoft.intune.mam.AllowIsolatedProcesses" android:value="true" />

Egyéni képernyő-Rögzítés korlátozások

Ha az alkalmazás olyan egyéni képernyőfelvételi funkciót tartalmaz, amely megkerüli az WindowAndroid -szintű FLAG_SECURE korlátozását, ellenőriznie kell a képernyőkép-rögzítési házirendet, mielőtt engedélyezné a funkció teljes hozzáférését. Ha például az alkalmazás egyéni renderelőmotor használatával jeleníti meg az aktuális nézetet PNG-fájlként, akkor először ellenőriznie AppPolicy.getIsScreenCaptureAllowed()kell, hogy .

Ha az alkalmazás nem tartalmaz sem egyéni vagy harmadik féltől származó képernyőfelvétel-készítési funkciókat, akkor semmit sem kell tennie a képernyőfelvételek korlátozása érdekében. A képernyőfelvételi házirend automatikusan érvényesül Window az összes integrált MAM-alkalmazás szintjén.

Az operációs rendszer vagy más alkalmazás által az alkalmazásban található rögzítési Window kísérleteket szükség szerint blokkolja. Ha például egy felhasználó az Android beépített képernyőkép- vagy képernyőfelvételi funkcióival próbálja rögzíteni az alkalmazás képernyőjét, a rögzítés automatikusan korlátozva lesz az alkalmazás részvétele nélkül.

A házirend-kényszerítés korlátozásai

  • Tartalomfeloldók használata: Az "átvitel vagy fogadás" Intune-házirend blokkolhatja vagy részlegesen letilthatja a tartalomfeloldó használatát a tartalomszolgáltató eléréséhez egy másik alkalmazásban. Ez azt fogja okozni ContentResolver , openOutputStream hogy a metódusok null értéket adjanak vissza, vagy hibaértéket dobjanak (például hibát ad vissza FileNotFoundException , ha le van tiltva). Az alkalmazás a hívással meg tudja állapítani, hogy a tartalomfeloldón keresztül történő adatírás sikertelenségét egy házirend okozta-e (vagy a házirend okozná):

    MAMPolicyManager.getPolicy(currentActivity).getIsSaveToLocationAllowed(contentURI);
    

    vagy ha nincs társított tevékenység:

    MAMPolicyManager.getCurrentThreadPolicy().getIsSaveToLocationAllowed(contentURI);
    

    Ebben a második esetben a többszörös identitást használó alkalmazásoknak ügyelniük kell arra, hogy megfelelően állítsa be a szálidentitást (vagy explicit identitást adjon át egy getPolicyForIdentity hívásnak).

Exportált szolgáltatások

Az Intune App SDK-ban található AndroidManifest.xml fájl tartalmazza a MAMNotificationReceiverService szolgáltatást, amelynek exportált szolgáltatásnak kell lennie ahhoz, hogy a Céges portál értesítéseket küldhessen egy felügyelt alkalmazásnak. A szolgáltatás ellenőrzi a hívót, és biztosítja, hogy csak a Céges portál küldhessen értesítéseket.

Tükröződési korlátozások

Néhány MAM-alaposztály (például MAMActivity, ) MAMDocumentsProviderolyan metódusokat tartalmaz (az Android eredeti alaposztályai alapján), amelyek csak bizonyos API-szintek felett jelenlévő paraméter- vagy visszatérési típusokat használnak. Emiatt előfordulhat, hogy nem mindig lehet tükrözést használni az alkalmazásösszetevők összes metódusának felsorolására. Ez a korlátozás nem korlátozódik a MAM-re, hanem ugyanaz a korlátozás, amely akkor lenne érvényben, ha az alkalmazás maga implementálná ezeket a metódusokat az Android alaposztályaiból.

Robolectric

Az Intune App SDK viselkedésének tesztelése a Robolectric alatt nem támogatott. Ismert problémák merülnek fel az SDK Robolectric alatt való futtatásakor a Robolectric alatti viselkedés miatt, amely nem pontosan utánozza a valós eszközökön vagy emulátorokon lévőket.

Ha tesztelnie kell az alkalmazást a Robolectric alatt, az ajánlott kerülő megoldás az, hogy az alkalmazásosztály logikáját egy segítőbe helyezi, és az egységtesztelő apk-t egy olyan alkalmazásosztállyal hozza létre, amely nem örökli a MAMApplication-től.