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


Microsoft Intune App SDK androidos fejlesztői útmutató

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. 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.

Fontos

Az Intune rendszeresen kiadja az Intune App SDK frissítéseit. Javasoljuk, hogy iratkozzon fel az Intune App SDK-adattárak frissítéseire, hogy beépíthesse a frissítést a szoftverfejlesztési kiadási ciklusba, és biztosíthassa, hogy az alkalmazások támogatják a legújabb alkalmazásvédelmi szabályzat beállításait.

Tervezze meg, hogy minden nagyobb operációsrendszer-kiadás előtt el kell végeznie a kötelező Intune App SDK-frissítéseket, hogy az alkalmazás továbbra is zökkenőmentesen fusson, mivel az operációsrendszer-frissítések kompatibilitástörő változásokat okozhatnak. Ha egy fő operációsrendszer-kiadás előtt nem frissít a legújabb verzióra, fennáll annak a veszélye, hogy kompatibilitástörő változásba ütközik, és/vagy nem tud alkalmazásvédelmi szabályzatokat alkalmazni az alkalmazásra.

Folyamat

Az alábbi ábrán az Androidhoz készült Intune App SDK folyamatábra látható:

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

Szakaszcélok

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

Az SDK részletesebben

Osztály- és metóduscserék

A buildelési eszköz használatával az Intune App SDK megpróbálja minimalizálni az Android-fejlesztők integrációs terheit. A buildelési eszköz használata előtt a fejlesztőknek minden cserét manuálisan kellett végrehajtaniuk.

Megjegyzés:

Az alkalmazásoknak most integrálniuk kell az SDK buildelési eszközkészletével, amely automatikusan elvégzi ezeket a cseréket.

Az Intune-felügyelet engedélyezéséhez az androidos alaposztályokat a megfelelő MAM-megfelelőik váltják fel. Az SDK-osztályok az Android alaposztálya és az alkalmazás saját származtatott verziója között élnek. Az alkalmazástevékenységek például a következőhöz hasonló öröklési hierarchiával végződhetnek: AppSpecificActivity kiterjesztéseMAMActivity.Activity A MAM-réteg szűri a rendszerműveletek hívásait, hogy zökkenőmentesen biztosítsa az alkalmazásnak a világ felügyelt nézetét.

Az alaposztályokon kívül az alkalmazás egyes osztályai ( például MediaPlayer) is rendelkeznek a szükséges MAM-megfelelőkkel, és néhány metódushívást is le kell cserélni. Az alábbi táblázat felsorolja a MAM-cserék nagy részét.

Android alaposztály Az Intune App SDK cseréje
android.app.Activity MAMActivity
android.app.ActivityGroup MAMActivityGroup
android.app.AliasActivity MAMAliasActivity
android.app.Application 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) felületrő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 MAMViewGroup
android.view.SurfaceView MAMSurfaceView
android.opengl.GLSurfaceView MAMGLSurfaceView
android.widget.VideoView MAMVideoView

Átnevezett metódusok

Az Android-osztályban elérhető metódusok sok esetben véglegesként vannak megjelölve a MAM csereosztályban. Ebben az esetben a MAM helyettesítő osztálya egy hasonló nevű metódust biztosít (általában utótaggal MAM), amelyet felül kell bírálni. Ha például a MAMActivity-ből származik, a felülbírálás onCreate() és a hívás Activitysuper.onCreate()helyett felül kell bírálnia onMAMCreate() és meg kell hívnia a parancsotsuper.onMAMCreate(). A Java-fordítónak kötelezővé kell tennie a végső korlátozásokat, hogy megakadályozza az eredeti metódus véletlen felülbírálását a MAM-megfelelő helyett.

Burkolt Rendszerszolgáltatások

Egyes rendszerszolgáltatás-osztályok esetében statikus metódust kell meghívni egy MAM burkolóosztályon ahelyett, hogy közvetlenül meghívja a kívánt metódust a szolgáltatáspéldányon. A hívásának getSystemService(ClipboardManager.class).getPrimaryClip() például a hívásává kell válnia.MAMClipboardManager.getPrimaryClip(getSystemService(ClipboardManager.class) Ismét, a szükséges build beépülő modul automatikusan elvégzi ezeket a csere.

Android-osztály Az Intune App SDK cseréje
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ályokban a metódusok többsége be van burkolva, például , ClipboardManagerContentProviderClient, ContentResolverés PackageManager míg más osztályok csak egy vagy két metódust burkolnak, példáulDownloadManager, , PrintManager, PrintHelper, View, DragEventNotificationManager és NotificationManagerCompat.

MDM- és MAM-regisztráció

A 4. fázis Regisztráció és Regisztráció szakaszában leírtak szerint az Intune App SDK "regisztrálja" azokat a fiókokat, amelyeket az alkalmazás regisztrál, hogy a fiók szabályzattal legyen védve. A fiók kezelése a regisztráció sikerességét követően történik, és a MAM-szabályzatokat erre a fiókra kell alkalmazni.

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

Az SDK-val integrált alkalmazások rendelkezhetnek olyan fiókkal, amely regisztrálva van az Alkalmazásvédelmi szabályzathoz anélkül, hogy ez a fiók regisztrálva lenne az eszközkezeléshez. Hasonlóképpen, a felhasználók regisztrálhattak egy eszközt az Eszközkezeléshez anélkül, hogy az SDK-val integrált alkalmazások lettek volna regisztrálva az App Protection-szabályzathoz regisztrált fiókokkal.

Amikor a fejlesztők és a rendszergazdák a regisztrációra hivatkoznak, általában MDM-regisztrációra utalnak, mivel az alkalmazásvédelmi szabályzatok regisztrálása nagyrészt láthatatlan mind a fejlesztők, mind a végfelhasználók számára. Az MDM-regisztrációval kapcsolatos további részletekért lásd: Android-eszközök regisztrálása .

Integrációs tippek

A Vállalati portál naplóinak ismertetése

A Céges portál naplói olyan információkat tartalmaznak, amelyeket a Microsoft mérnökei a probléma kivizsgálása érdekében használnak. Néhány napló hasznos lehet az SDK-t integráló fejlesztők számára is.

A fájl DiagnosticsInfo-scrubbed.log különösen a MAM által kezelt alkalmazásokról és a MAM-szabályzat részleteiről tartalmaz információkat a PolicyDB Information szakaszban. Minden felügyelt alkalmazás rendelkezik egy bejegyzéssel a PolicyDB Information szakaszban. Itt meg kell keresnie az alkalmazás csomagnevét annak ellenőrzéséhez, hogy a MAM-szabályzat megfelelően van-e megcélzva az alkalmazáshoz. Ha itt nem látja az alkalmazás csomagnevét, az azt jelzi, hogy a bejelentkezett fiókra nincs alkalmazva MAM-szabályzat.

Az egyes MAM-szabályzatok beállításairól az Android alkalmazásvédelmi szabályzatbeállításai a Microsoft Intune-ban című témakörben olvashat. Ha meg szeretné tudni, hogyan jelennek meg ezek a beállítások a Vállalati portál naplóiban, tekintse meg az ügyfélalkalmazás-védelmi naplók áttekintését ismertető cikket. Ha a MAM-szabályzat érvényesítése nem a várt módon történik, javasoljuk, hogy ellenőrizze a Céges portál naplóit vagy a diagnosztikai felhasználói felületet, ellenőrizze, hogy az alkalmazást a MAM-szabályzat felügyeli-e, és győződjön meg arról, hogy a szabályzatbeállítások rendelkeznek a várt értékekkel.

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

  • A Vállalati portálon keresztül
    • A Céges portál alkalmazás megnyitása
    • Válassza a három pont menüt a jobb felső sarokban
    • Beállítások kiválasztása
    • A Diagnosztikai naplók területen válassza a Naplók mentése lehetőséget
    • Az utasításokat követve válassza ki a kimeneti könyvtárat a Vállalati portál naplóinak mentéséhez.
    • A adb shell pull paranccsal lekérheti a naplókat androidos eszközéről a helyi gépre.
  • [Felügyelt alkalmazásnaplók elérése az Android Microsoft Edge-ben]. Ez megjeleníti a felhasználói felületet a Vállalati portál naplóinak gyűjtéséhez és a MAM-diagnosztika megtekintéséhez.
  • Hívja MAMPolicyManager.showDiagnostics(context) meg ugyanazt a felhasználói felületet a Céges portál naplóinak gyűjtéséhez.

Gyors tesztelés a szabályzat módosításával

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

Alapértelmezés szerint az integrált alkalmazások aktív állapotban 30 percenként bejelentkeznek az Intune szolgáltatásba a frissített szabályzatokért. Ezt a várakozást elkerülheti, és a Céges portálon keresztül kényszerítheti a bejelentkezést:

  1. Indítsa el a Vállalati portált. Nem kell bejelentkeznie.
  2. Válassza a ... menü ikont.
  3. Válassza a Beállítások lehetőséget.
  4. Görgessen a "Felügyeleti szabályzat" nevű beállításhoz.
  5. Nyomja le a Szinkronizálás gombot.

Ezzel azonnal beütemez egy bejelentkezést, és lekéri az alkalmazásra és a fiókra vonatkozó naprakész szabályzatot.

AndroidX-migrálás hibaelhárítása

Ha az AndroidX használata előtt integrálta az Intune App SDK-t, a következőhöz hasonló hibaüzenet jelenhet meg az AndroidX-re való migrálás során:

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

Ezek a hibák azért fordulhatnak elő, mert az alkalmazás az SDK örökölt támogatási osztályára hivatkozik. A MAM támogatási osztályai az AndroidX-ben áthelyezett Android-támogatási osztályokat burkolják. Az ilyen hibák elhárításához cserélje le az összes MAM támogatási osztály hivatkozását az AndroidX-megfelelőikre. Ez úgy érhető el, hogy először eltávolítja a MAM támogatási kódtár függőségeit a Gradle-buildfájlokból. A szóban forgó sorok az alábbihoz hasonlóan néznek ki:

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 fordítási idővel kapcsolatos hibákat úgy, hogy a és com.microsoft.intune.mam.client.support.v4 a com.microsoft.intune.mam.client.support.v7 csomagban lévő MAM-osztályokra mutató hivatkozásokat az AndroidX-megfelelőikre cseréli. A hivatkozásait MAMAppCompatActivity például androidosra AppCompatActivitykell módosítani. Ahogy fentebb említettük, a MAM build beépülő modulja/eszköze automatikusan átírja az osztályokat az AndroidX-kódtárakban a megfelelő MAM-megfelelőkkel fordításkor.

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 alapértelmezett regisztráció nevű egyszerűsített folyamaton keresztül. Ez a funkció elsősorban azokat a privát üzletági alkalmazásokat támogatja, amelyek nem integrálták az MSAL-t.

Figyelmeztetés

Az alapértelmezett regisztráció jelentős kompromisszumokkal jár, ezért nem ajánlott. Az alapértelmezett regisztrációt használó alkalmazások nem támogatják a feltételes hozzáférést, nem használják ki az egyszeri bejelentkezést a Microsoft-szolgáltatásokkal, és nem használhatják a nem Intune-fiókok. Ha az alkalmazás nyilvános alkalmazás-áruházba kerül, az alapértelmezett regisztráció nem támogatott.

Az alapértelmezett regisztráció kényszeríti a végfelhasználót, hogy telepítse a Vállalati portált, és végezze el a MAM-regisztráció folyamatát, mielőtt engedélyezi a felhasználókat az alkalmazásba.

Megjegyzés:

Az alapértelmezett regisztráció a szuverén felhőérzékeny.

Engedélyezze az alapértelmezett regisztrációt az alábbi lépésekkel:

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

  2. Az alapértelmezett regisztráció 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.DefaultMAMServiceEnrollment" android:value="true" />
    
  3. Engedélyezze a szükséges MAM-szabályzatot úgy, hogy hozzáadja 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" />
    

Izolált folyamatok

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

Figyelmeztetés

A metaadatok hozzáadásával az alkalmazás deklarálhatja, hogy az izolált folyamat nem tehet közzé szervezeti adatokat. Az alkalmazás felelős ennek garantálásáért.

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

Egyéni képernyőrögzítési korlátozások

Ha az alkalmazás olyan egyéni képernyőrögzítési funkciót tartalmaz, amely megkerüli az Android -level FLAG_SECURE korlátozásátWindow, akkor a funkcióhoz való teljes hozzáférés engedélyezése előtt ellenőriznie kell a képernyőfelvételi szabályzatot. Ha például az alkalmazás egyéni renderelő motort használ az aktuális nézet PNG-fájlba való megjelenítéséhez, először ellenőriznie kell a következőt AppPolicy.getIsScreenCaptureAllowed(): .

Ha az alkalmazás nem tartalmaz egyéni vagy külső képernyőrögzítési funkciókat, nem kell semmilyen műveletet elvégeznie a képernyőfelvételek korlátozásához. A képernyőfelvételi szabályzat automatikusan érvénybe lép az Window összes MAM-integrált alkalmazás szintjén.

Az operációs rendszer vagy egy másik alkalmazás által az alkalmazásban való rögzítésre Window tett kísérletek szükség szerint le lesznek tiltva. Ha például egy felhasználó megkísérli rögzíteni az alkalmazás képernyőjét az Android beépített képernyőképén vagy képernyőfelvételi funkcióin keresztül, a rögzítés automatikusan korlátozva lesz az alkalmazás részvétele nélkül.

Szabályzatkényszerítési korlátozások

  • Tartalomfeloldók használata: Az "átvitel vagy fogadás" Intune-szabályzat letilthatja vagy részlegesen letilthatja a tartalomfeloldó használatát a tartalomszolgáltató elérésére egy másik alkalmazásban. Ez azt eredményezi ContentResolver , hogy a metódusok null értéket adnak vissza, openOutputStream vagy hibaértéket ad vissza (például blokkolva FileNotFoundException lesz). Az alkalmazás meghatározhatja, hogy az adatok tartalomfeloldón keresztüli írásának sikertelenségét szabályzat (vagy szabályzat) okozta-e a hívás végrehajtása:

    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öbb identitással rendelkező alkalmazásoknak gondoskodniuk kell arról, hogy a szálidentitás megfelelően legyen beállítva (vagy explicit identitást adjanak á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 Vállalati portál értesítéseket küldjön egy felügyelt alkalmazásnak. A szolgáltatás ellenőrzi a hívót, hogy csak a Vállalati portál küldjön értesítéseket.

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

Egyes MAM-alaposztályok (például , MAMActivityMAMDocumentsProvider) olyan metódusokat tartalmaznak (az eredeti Android-alaposztályok alapján), amelyek csak bizonyos API-szintek felett található paraméter- vagy visszatérési típusokat használnak. Emiatt előfordulhat, hogy nem mindig lehet tükröződés használatával számba venni az alkalmazás-összetevők összes metódusát. Ez a korlátozás nem korlátozódik a MAM-ra, hanem ugyanaz a korlátozás, amely akkor lenne érvényes, ha maga az alkalmazás implementálta 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. A Robolectric alatt futtatott SDK-val kapcsolatos ismert problémákat a Robolectricben előforduló olyan viselkedések miatt, amelyek nem pontosan utánozzák azokat valós eszközökön vagy emulátorokon.

Ha az alkalmazást a Robolectric alatt kell tesztelnie, az ajánlott megkerülő megoldás az, ha az alkalmazásosztály logikáját egy segédeszközre helyezi át, és az egységtesztelési apk-t egy olyan alkalmazásosztálysal hozza létre, amely nem öröklődik a MAMApplicationtől.