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ó:
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 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 | 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 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:
- Indítsa el a Céges portál. 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 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 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 é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:
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
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 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
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 , 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
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.