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


az Androidhoz készült App SDK Microsoft Intune fejlesztői útmutatója

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. A Intune által felügyelt alkalmazás az Intune App SDK-val integrálva van. Intune rendszergazdák egyszerűen telepíthetnek alkalmazásvédelmi szabályzatokat a Intune által felügyelt alkalmazásra, ha Intune aktívan kezeli az alkalmazást.

Fontos

Intune rendszeresen ad ki frissítéseket a Intune App SDK-hoz. Javasoljuk, hogy iratkozzon fel a frissítések Intune App SDK-adattárakba, 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 kötelező Intune App SDK-frissítéseket kell végrehajtania, 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 App SDK Intune folyamat látható:

Magas szintű architekturális diagram Microsoft Intune.

Szakasz Goals

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 a 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 androidos alaposztályokat a megfelelő MAM-megfelelőikre cserélik a Intune felügyeletének lehetővé tétele érdekében. 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 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 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 a 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 a végfelhasználó által kezdeményezett folyamatra is utalhat a Eszközkezelés (MDM) engedélyezéséhez. 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 a fiók regisztrálva lenne a Eszközkezelés. Hasonlóképpen, a felhasználó regisztrálhat egy eszközt Eszközkezelés anélkül, hogy SDK-val integrált alkalmazásokat kellene regisztrálnia 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 Céges portál-naplók ismertetése

Céges portál naplók olyan információkat tartalmaznak, amelyeket a Microsoft mérnökei a probléma kivizsgálása során 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ályzatbeállításokkal kapcsolatos leírásért tekintse meg az Android alkalmazásvédelmi szabályzatbeállításai Microsoft Intune. A beállítások Céges portál naplókban való megjelenítésének leírását az Ügyfélalkalmazás-védelmi naplók áttekintése című cikkben tekintheti meg. Ha a MAM-szabályzat kényszerítése nem a várt módon történik, javasoljuk, hogy ellenőrizze Céges portál naplókat vagy a diagnosztikai felhasználói felületet, ellenőrizze, hogy az alkalmazást a MAM-szabályzat kezeli-e, és győződjön meg arról, hogy a szabályzatbeállításoknak vannak-e várt értékei.

Az alábbi módokon gyűjthet Céges portál naplókat:

  • A Céges portál
    • Az 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 Céges portál naplók 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 Céges portál naplók gyűjtéséhez és a MAM-diagnosztika megtekintéséhez.
  • Hívja MAMPolicyManager.showDiagnostics(context) meg, hogy ugyanazt a felhasználói felületet jelenítse meg Céges portál naplók 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 a Intune szolgáltatásba a frissített szabályzatokért. Elkerülheti ezt a várakozást, és kényszerítheti a bejelentkezést a Céges portál:

  1. Indítsa el a Céges portál. 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 a Intune App SDK-t, az AndroidX-re való migrálás során a következőhöz hasonló hibaüzenet jelenhet meg:

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 élveznek SSO-előnyöket a Microsoft-szolgáltatásokban, és nem Intune fiókok nem használhatják. 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 Céges portál, és fejezze be a MAM-regisztrációs folyamatot, 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

A 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

A 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üldjön egy felügyelt alkalmazásnak. A szolgáltatás ellenőrzi a hívót, hogy csak a Céges 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

A Robolectric Intune App SDK-viselkedésének tesztelése 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.