Microsoft IntuneMicrosoft Intune Uygulama SDK'sı Android Geliştirici Kılavuzu

Android için Microsoft Intune Uygulama SDK'sı, Intune uygulama koruma ilkelerini (MAM ilkeleri olarak da bilinir) yerel Java/Kotlin Android uygulamanıza dahil etmenize olanak tanır. Bir IntuneIntune-yönetilen uygulama, IntuneIntune App SDK ile tümleştirilmiş bir uygulamadır. IntuneIntune yöneticileri, IntuneIntune uygulamayı etkin olarak yönettiğinde, IntuneIntune-managed app to your IntuneIntune-managed app.

Önemli

IntuneIntune, IntuneIntune Uygulama SDK'sı için düzenli olarak güncelleştirmeler yayınlar. Güncelleştirmeyi yazılım geliştirme sürüm döngünüze dahil edebilmeniz ve uygulamalarınızın en son Uygulama Koruma İlkesi ayarlarını desteklediğinden emin olabilmeniz için güncelleştirmeler için Intune Uygulama SDK'sı depolarına abone olmanızı öneririz.

İşletim sistemi güncelleştirmeleri hataya neden olabilecek değişikliklere neden olabileceğinden, uygulamanızın sorunsuz bir şekilde çalışmaya devam etmesini sağlamak için her büyük işletim sistemi sürümünden önce zorunlu Intune Uygulama SDK'sı güncelleştirmeleri almayı planlayın. Önemli bir işletim sistemi sürümünden önce en son sürüme güncelleştirmezseniz, hataya neden olan bir değişiklikle karşılaşma ve/veya uygulamanıza uygulama koruma ilkelerini uygulayamama riskiyle karşı karşıya kalabilirsiniz.

Süreç akışı

Aşağıdaki diyagramda Android için Intune Uygulama SDK'sı işlem akışı sağlanır:

High-level architectural diagram for Microsoft IntuneMicrosoft Intune.

Aşama Hedefleri

Kılavuz, Intune Uygulama SDK'sının mimarisi hakkında daha fazla ayrıntı, yaygın olmayan tümleştirme adımları hakkında bilgiler ve diğer yararlı içerikler içerir.

Daha Ayrıntılı SDK

Sınıf ve Yöntem Değişimleri

Derleme araçları aracılığıyla, Intune Uygulama SDK'sı Android geliştiricilerinin entegrasyon yükünü en aza indirmeye çalışır. Derleme araçlarından önce, geliştiricilerin tüm değişiklikleri el ile gerçekleştirmesi gerekiyordu.

Not

Uygulamaların artık tüm bu değişiklikleri otomatik olarak gerçekleştirecek olan SDK derleme aracıyla tümleştirilmesi gerekiyor.

Android temel sınıfları, Intune yönetimini etkinleştirmek için ilgili MAM eşdeğerleriyle değiştirilir. SDK sınıfları, Android temel sınıfı ile uygulamanın bu sınıfın kendi türetilmiş sürümü arasında yer alır. Örneğin, bir uygulama etkinliği şuna benzer bir devralma hiyerarşisi ile sonuçlanabilir: AppSpecificActivity extends MAMActivity extends Activity. MAM katmanı, uygulamanıza sorunsuz bir şekilde dünyanın yönetilen bir görünümünü sağlamak için sistem işlemlerine yapılan çağrıları filtreler.

Temel sınıflara ek olarak, uygulamanızın türetilmeden kullanabileceği bazı sınıflar (örneğin MediaPlayer) da gerekli MAM eşdeğerlerine sahiptir ve bazı yöntem çağrılarının da değiştirilmesi gerekir. Aşağıdaki tabloda, MAM değişimlerinin çoğu listelenmektedir.

Android temel sınıfı IntuneIntune Uygulama SDK'sı değişimi
android.app. Etkinlik MAMActivity
android.app.ActivityGroup MAMActivityGroup
android.app.AliasActivity MAMAliasAktivitesi
android.app. Uygulama MAMApplication
android.app.Dialog MAMDialog
android.app.AlertDialog.Builder MAMAlertDialogBuilder
android.app.DialogFragment MAMDialogFragment
android.app.ExpandableListActivity MAMExpandableListActivity
android.app. Parça MAMFragment
android.app.IntentService MAMIntentService
android.app.LauncherActivity MAMLauncherAktivitesi
android.app.ListActivity MAMListActivity
android.app.ListFragment MAMListFragment
android.app.NativeActivity MAMNativeActivity
android.app.PendingIntent MAMPendingIntent
android.app. Hizmet 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 (Yalnızca Bağlayıcı bir Android Arabirim Tanımlama Dili (AIDL) arabiriminden oluşturulmadıysa gereklidir)
android.media.MediaPlayer MAMMediaPlayer
android.media.MediaMetadataRetriever MAMMediaMetadataRetriever
android.media.Medya Kaydedici MAMMediaRecorder
android.provider.DocumentsProvider MAMDocumentsProvider
android.preference.PreferenceActivity MAMPreferansEtkinliği
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.Metni Düzenle 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

Yeniden adlandırılan yöntemler

Çoğu durumda, Android sınıfında bulunan bir yöntem, MAM değiştirme sınıfında son olarak işaretlenmiştir. Bu durumda, MAM değiştirme sınıfı, bunun yerine geçersiz kılmanız gereken benzer şekilde adlandırılmış bir yöntem (genellikle ile soneklidir MAM) sağlar. Örneğin, MAMActivity'den türetilirken, geçersiz kılmak onCreate() ve çağırmak super.onCreate()yerine, Activity geçersiz kılmalı onMAMCreate() ve çağırmalıdır super.onMAMCreate(). Java derleyicisi, MAM eşdeğeri yerine orijinal yöntemin yanlışlıkla geçersiz kılınmasını önlemek için son kısıtlamaları uygulamalıdır.

Sarılmış Sistem Hizmetleri

Bazı sistem hizmeti sınıfları için, hizmet örneğinde istenen yöntemi doğrudan çağırmak yerine MAM sarmalayıcı sınıfında statik bir yöntem çağırmak gerekir. Örneğin, bir çağrının getSystemService(ClipboardManager.class).getPrimaryClip() bir çağrı MAMClipboardManager.getPrimaryClip(getSystemService(ClipboardManager.class)haline gelmesi gerekir. Yine, gerekli derleme eklentisi bu değişiklikleri otomatik olarak yapar.

Android Sınıfı IntuneIntune Uygulama SDK'sı değişimi
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

Bazı sınıfların yöntemlerinin çoğu kaydırılmıştır, örneğin, , ContentResolver, ve PackageManager diğer sınıfların yalnızca bir veya iki yöntemi kaydırılmıştır, örneğin, ClipboardManagerDownloadManager, ViewNotificationManagerPrintManagerPrintHelperDragEventve .NotificationManagerCompatContentProviderClient

MDM ve MAM Kaydı

4. Aşama'nın Kayıt ve Kayıt bölümünde tartışıldığı gibi, Intune Intune Uygulama SDK'sı, hesabınızın ilkeyle korunması için uygulamanızın kaydettiği hesapları "kaydeder". Bu kayıt başarılı olduktan sonra hesap yönetilir hale gelir ve artık bu hesaba MAM ilkelerinin uygulanması gerekir.

"Kayıt" terimi, son kullanıcı tarafından başlatılan Cihaz Yönetimi (MDM) etkinleştirme işlemini de ifade edebilir. MDM kaydı, Uygulama Koruma İlkesi kaydından tamamen ayrıdır.

SDK ile tümleşik bir uygulama, Uygulama Koruma İlkesi için kayıtlı bir hesaba sahip olabilir ve bu hesap Cihaz YönetimiCihaz Yönetimi için kaydedilebilir. Benzer şekilde, bir kullanıcı, Uygulama Koruma İlkesi'ne kayıtlı hesaplarla SDK ile tümleşik uygulamalara sahip olmadan bir cihazı Cihaz Yönetimi için kaydetmiş olabilir.

Uygulama Koruma İlkesi kaydı hem geliştiriciler hem de son kullanıcılar tarafından büyük ölçüde görünmez olduğundan, geliştiriciler ve yöneticiler genellikle kayıttan bahsederken MDM kaydına atıfta bulunurlar. MDM kaydı hakkında daha fazla bilgi için Android cihazları kaydetme konusuna bakın.

Tümleştirme İpuçları

Şirket Portalı günlüklerini anlama

Şirket PortalıŞirket Portalı günlükleri, Microsoft mühendislerinin sorun araştırmaları için kullandığı bilgileri içerir. Bazı günlükler, SDK'yı entegre eden geliştiriciler için de yararlı olabilir.

Dosyada DiagnosticsInfo-scrubbed.log özellikle MAM tarafından yönetilen uygulamalar ve bu bölümdeki PolicyDB Information MAM ilke ayrıntıları hakkında bilgiler yer alır. Yönetilen her uygulamanın bölümde bir girişi PolicyDB Information vardır. MAM ilkesinin uygulamanıza doğru şekilde hedeflendiğini onaylamak için uygulamanızın paket adını burada aramanız gerekir. Uygulamanızın paket adını burada görmüyorsanız, oturum açmış hesaba MAM ilkesinin uygulanmadığını gösterir.

Her MAM ilke ayarının açıklaması için Microsoft IntuneMicrosoft Intune bölümündeki Android uygulama koruma ilkesi ayarlarına bakın. Bu ayarların Şirket Portalı Şirket Portalı günlüklerinde nasıl görüneceğine ilişkin bir açıklama için İstemci uygulama koruma günlüklerini inceleme bölümüne bakın. MAM ilkesi beklendiği gibi zorunlu tutulmadığında, Şirket Portalı günlükleri veya tanılama kullanıcı arabirimini denetlemenizi, uygulamanızın MAM ilkesi tarafından yönetildiğini doğrulamanızı ve ilke ayarlarının beklenen değerlere sahip olduğunu onaylamanızı öneririz.

Şirket Portalı günlüklerini aşağıdaki yollardan birini kullanarak toplayabilirsiniz:

  • Şirket Portalı aracılığıyla
    • Şirket Portalı uygulamasını açın
    • Sağ üst köşedeki üç nokta menüsünü seçin
    • Ayarları şeç
    • Tanılama Günlükleri altında Günlükleri Kaydet'i seçin
    • TŞirket Portalı Şirket Portalı günlüklerini kaydetmek için çıktı dizinini seçme istemini izleyin.
    • Günlükleri Android cihazınızdan yerel makinenize çekmek için komutu kullanın adb shell pull .
  • [Yönetilen uygulama günlüklerine erişmek için Android için Microsoft Edge kullanın]. Bu, Şirket Portalı Şirket Portalı günlüklerini toplamak ve MAM tanılamalarını görüntülemek için kullanıcı arabirimini görüntüler.
  • Şirket Portalı günlüklerini toplamak için aynı kullanıcı arabirimini görüntüleme çağrısıMAMPolicyManager.showDiagnostics(context).

Değişen ilkeyle hızlı bir şekilde test etme

Uygulamanızın Intune Uygulama SDK'sı tümleştirmesini geliştirirken ve test ederken, test kullanıcınız için Uygulama Koruma İlkesi ayarlarını sık sık değiştirebilirsiniz.

Varsayılan olarak, tümleşik uygulamalar etkin olduklarında her 30 dakikada bir güncelleştirilmiş ilke için Intune hizmetini denetler. Bu beklemeyi önleyebilir ve Şirket Portalı üzerinden iade etmeye zorlayabilirsiniz:

  1. Şirket Portalı başlatın. Oturum açmanız gerekmez.
  2. Şunu seçin: ... menü simgesi.
  3. Ayarlar'ı seçin.
  4. "Yönetim İlkesi" adlı ayara ilerleyin.
  5. Eşitle düğmesine basın.

Bu, hemen bir check-in planlayacak ve uygulamanıza ve hesabınıza yönelik güncel politikayı alacaktır.

AndroidX Geçişinde Sorun Giderme

AndroidX'ten yararlanmadan önce Intune Uygulama SDK'sını entegre ettiyseniz, AndroidX'e geçiş yaparken aşağıdakine benzer bir hatayla karşılaşabilirsiniz:

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

Bu hatalar, uygulamanız SDK'nın eski destek sınıflarına başvurduğu için oluşabilir. MAM destek sınıfları, AndroidX'e taşınan Android destek sınıflarını sarmalar. Bu tür hatalarla mücadele etmek için tüm MAM destek sınıfı başvurularını AndroidX eşdeğerleriyle değiştirin. Bu, önce Gradle derleme dosyalarınızdan MAM destek kitaplığı bağımlılıklarını kaldırarak elde edilebilir. Söz konusu satırlar aşağıdakine benzer olacaktır:

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

Ardından, ve com.microsoft.intune.mam.client.support.v4 paketlerindeki com.microsoft.intune.mam.client.support.v7 MAM sınıflarına yapılan tüm başvuruları AndroidX eşdeğerleriyle değiştirerek ortaya çıkan derleme zamanı hatalarını düzeltin. Örneğin, referanslar MAMAppCompatActivity AndroidX'in AppCompatActivity. Yukarıda tartışıldığı gibi, MAM derleme eklentisi/aracı, AndroidX kitaplıklarındaki sınıfları derleme zamanında uygun MAM eşdeğerleriyle otomatik olarak yeniden yazar.

Sınırlamalar ve Özel Durumlar

Varsayılan kayıt

Uygulamanız, varsayılan kayıt adı verilen basitleştirilmiş bir işlem aracılığıyla uygulama koruma ilkelerine alternatif olarak kaydolabilir. Bu özellik öncelikle MSAL ile tümleştirilmemiş özel iş kolu uygulamalarını desteklemeye yöneliktir.

Uyarı

Varsayılan kayıt önemli ödünlerle birlikte gelir ve önerilmez. Varsayılan kayıttan yararlanan uygulamalar Koşullu Erişimi desteklemez, Microsoft hizmetleriyle SSO'dan yararlanmaz ve Intune olmayan hesaplar tarafından kullanılamaz. Uygulamanız bir genel uygulama mağazasına gönderilirse, varsayılan kayıt desteklenmez.

Varsayılan kayıt, kullanıcıların uygulamanıza girmesine izin vermeden önce son kullanıcıyı Şirket Portalı yüklemeye ve bir MAM kayıt akışını tamamlamaya zorlar.

Not

Varsayılan kayıt, hakim buluta duyarlıdır.

Aşağıdaki adımlarla varsayılan kaydı etkinleştirin:

  1. Uygulamanız MSAL'yi tümleştiriyorsa veya SSO'yu etkinleştirmeniz gerekiyorsa MSAL'yi yapılandırın. Tersi durumda, bu adımı atlayabilirsiniz.

  2. Etiketin altındaki <application> bildirime aşağıdaki değeri ekleyerek varsayılan kaydı etkinleştirin:

    <meta-data android:name="com.microsoft.intune.mam.DefaultMAMServiceEnrollment" android:value="true" />
    
  3. Etiketin altındaki <application> bildirime aşağıdaki değeri ekleyerek gereken MAM ilkesini etkinleştirin:

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

Yalıtılmış Süreçler

The IntuneIntune Uygulama SDK'sı yalıtılmış işlemlere koruma uygulayamaz. İzole işlemler (android:isolatedProcess) için destek, aşağıdaki meta veri etiketinin eklenmesini gerektirir.

Uyarı

Bu meta verileri ekleyerek, uygulamanız yalıtılmış işlemin kuruluş verilerini kullanıma sunamayacağını bildiriyor. Başvurunuz bunu garanti etmekten sorumludur.

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

Custom Screen CaptureCapture Restrictions

Uygulamanız, Android'in düzeyindeki FLAG_SECURE kısıtlamayı Windowatlayan özel bir ekran yakalama özelliği içeriyorsa, özelliğe tam erişime izin vermeden önce ekran yakalama ilkesini kontrol etmeniz gerekir. Örneğin, uygulamanız geçerli görünümü bir PNG dosyasına işlemek için özel bir işleme motoru kullanıyorsa, önce AppPolicy.getIsScreenCaptureAllowed().

Uygulamanız özel veya üçüncü taraf ekran yakalama özellikleri içermiyorsa ekran yakalamalarını kısıtlamak için herhangi bir işlem yapmanız gerekmez. Ekran yakalama ilkesi, tüm MAM tümleşik uygulamaları düzeyinde otomatik olarak uygulanır Window .

İşletim sistemi veya başka bir uygulama tarafından uygulamanızda yakalama Window girişimleri gerektiği gibi engellenir. Örneğin, bir kullanıcı Android'in yerleşik ekran görüntüsü veya ekran kaydetme özellikleri aracılığıyla uygulamanızın ekranını yakalamaya çalışırsa, yakalama, uygulamanızdan katılım olmadan otomatik olarak kısıtlanacaktır.

İlke uygulama sınırlamaları

  • İçerik Çözümleyicileri Kullanma: "Aktar veya al" IntuneIntune ilkesi, başka bir uygulamadaki içerik sağlayıcıya erişmek için içerik çözümleyicinin kullanımını engelleyebilir veya kısmen engelleyebilir. Bu, yöntemlerin null döndürmesine veya bir hata değeri atmasına neden olur ContentResolver (örneğin, openOutputStream engellenirse atar FileNotFoundException ). Uygulama, bir içerik çözümleyici aracılığıyla veri yazma hatasının ilkeden mi kaynaklandığını (veya ilkeden kaynaklanıp kaynaklanmayacağını) şu çağrıyı yaparak belirleyebilir:

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

    veya ilişkili bir etkinlik yoksa:

    MAMPolicyManager.getCurrentThreadPolicy().getIsSaveToLocationAllowed(contentURI);
    

    Bu ikinci durumda, çok kimlikli uygulamalar iş parçacığı kimliğini uygun şekilde ayarlamaya (veya bir getPolicyForIdentity çağrıya açık bir kimlik geçirmeye) özen göstermelidir.

Dışarı aktarılan hizmetler

Intune App SDK'sına dahil edilen AndroidManifest.xml dosyası, Şirket Portalı yönetilen bir uygulamaya bildirim göndermesine izin vermek için dışarı aktarılan bir hizmet olması gereken MAMNotificationReceiverService içerir. Hizmet, yalnızca Şirket Portalı bildirim göndermesine izin verildiğinden emin olmak için arayanı denetler.

Yansıma sınırlamaları

MAM temel sınıflarından bazıları (örneğin, MAMActivity, MAMDocumentsProvider), yalnızca belirli API seviyelerinin üzerinde bulunan parametre veya dönüş türlerini kullanan yöntemler (özgün Android temel sınıflarına göre) içerir. Bu nedenle, uygulama bileşenlerinin tüm yöntemlerini numaralandırmak için yansımayı kullanmak her zaman mümkün olmayabilir. Bu kısıtlama MAM ile sınırlı değildir, uygulamanın kendisi bu yöntemleri Android temel sınıflarından uyguladıysa geçerli olacak kısıtlamanın aynısıdır.

Robolektrik

Test IntuneIntune Uygulama SDK'sı Robolectric altında desteklenmiyor. Robolectric altında bulunan ve gerçek cihazlarda veya öykünücülerdekileri doğru bir şekilde taklit etmeyen davranışlar nedeniyle SDK'yı Robolectric altında çalıştıran bilinen sorunlar vardır.

Uygulamanızı Robolectric altında test etmeniz gerekiyorsa, önerilen geçici çözüm, uygulama sınıfı mantığınızı bir yardımcıya taşımak ve birim testi apk'nizi MAMApplication'dan devralmayan bir uygulama sınıfıyla üretmektir.