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ó:
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 Activity
super.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 , ClipboardManager
ContentProviderClient
, ContentResolver
és PackageManager
míg más osztályok csak egy vagy két metódust burkolnak, példáulDownloadManager
, , PrintManager
, PrintHelper
, View
, DragEvent
NotificationManager
é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:
- Indítsa el a Vállalati portált. Nem kell bejelentkeznie.
- Válassza a ... menü ikont.
- Válassza a Beállítások lehetőséget.
- Görgessen a "Felügyeleti szabályzat" nevű beállításhoz.
- 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 AppCompatActivity
kell 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:
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.
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" />
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 blokkolvaFileNotFoundException
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 , MAMActivity
MAMDocumentsProvider
) 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.