Aracılığıyla paylaş


Android için Microsoft Intune Uygulama SDK'sı geliştirici kılavuzu

Android için Microsoft Intune Uygulama SDK'sı, yerel Java/Kotlin Android uygulamanıza Intune uygulama koruma ilkelerini (APP veya MAM ilkeleri olarak da bilinir) dahil etmenizi sağlar. Intune yönetilen uygulama, Intune Uygulama SDK'sı ile tümleştirilmiş uygulamadır. Intune yöneticileri, Intune uygulamayı etkin bir şekilde yönettiğinde uygulama koruma ilkelerini Intune yönetilen uygulamanıza kolayca dağıtabilir.

Önemli

Intune, Intune Uygulama SDK'sına yönelik güncelleştirmeleri düzenli olarak yayımlar. Güncelleştirmeleri 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 olmak için güncelleştirmeler için Intune Uygulama SDK depolarına abone olmanız önerilir.

İşletim sistemi güncelleştirmeleri hataya neden olabileceği için uygulamanızın sorunsuz çalışmaya devam ettiğinden emin olmak için her büyük işletim sistemi sürümünden önce zorunlu Intune Uygulama SDK'sı güncelleştirmelerini almayı planlayın. Büyük bir işletim sistemi sürümünden önceki en son sürüme güncelleştirmezseniz, hataya neden olan bir değişiklikle karşılaşma ve/veya uygulama koruma ilkelerini uygulamanıza uygulayamama riskiyle karşılaşabilirsiniz.

İşlem akışı

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

Microsoft Intune için üst düzey mimari diyagram.

Aşama Goals

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

Daha Ayrıntılı Sdk

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

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

Not

Uygulamaların artık SDK derleme araçlarıyla tümleştirilmesigerekir ve bu araçlar tüm bu değişiklikleri otomatik olarak gerçekleştirir.

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 çalışır. Örneğin, bir uygulama etkinliği şuna benzer bir devralma hiyerarşisiyle sonuçlanabilir: AppSpecificActivity genişletir MAMActivity genişletir Activity. MAM katmanı, uygulamanıza dünyanın yönetilen bir görünümünü sorunsuz bir şekilde sağlamak için sistem işlemlerine çağrıları filtreler.

Temel sınıflara ek olarak, uygulamanızın türetmeden kullanabileceği bazı sınıflar da (örneğin MediaPlayer) 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ştirmelerin çoğu listelenmiştir.

Android temel sınıfı Intune Uygulama SDK'sı değiştirme
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 (Yalnızca Bağlayıcı bir Android Arabirim Tanım Dili (AIDL) arabiriminden oluşturulmadıysa gereklidir)
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

Yeniden Adlandırılmış Yöntemler

Çoğu durumda, Android sınıfında kullanılabilen 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 adlandırılmış bir yöntem (genellikle ile MAMsoneki) sağlar. Örneğin, MAMActivity'den türetilirken geçersiz kılmak onCreate() ve çağırmak super.onCreate()yerine geçersiz Activity kılmalı onMAMCreate() ve çağrısı super.onMAMCreate()yapmalıdır. Java derleyicisi, MAM eşdeğeri yerine özgün yöntemin yanlışlıkla geçersiz kılınmasını önlemek için son kısıtlamaları zorunlu kılmalıdır.

Sarmalanmış Sistem Hizmetleri

Bazı sistem hizmet 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öntemi çağırmak gerekir. Örneğin, çağrısının getSystemService(ClipboardManager.class).getPrimaryClip() çağrısı MAMClipboardManager.getPrimaryClip(getSystemService(ClipboardManager.class)olması gerekir. Yine gerekli derleme eklentisi bu değişiklikleri otomatik olarak yapar.

Android Sınıfı Intune Uygulama SDK'sı değiştirme
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ıflarda yöntemlerin çoğu sarmalanmıştır, örneğin, , , ve diğer sınıflarda sarmalanmış yalnızca bir veya iki yöntem vardır; örneğin, DownloadManager, PrintManager, PrintHelper, View, DragEventNotificationManager ve NotificationManagerCompat.PackageManagerContentResolverContentProviderClientClipboardManager

MDM ve MAM Kaydı

4. Aşama'nın Kayıt ve Kayıt bölümünde açıklandığı gibi 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 mam ilkeleri artık bu hesaba uygulanmalıdır.

"Kayıt" terimi, Cihaz Yönetimi (MDM) etkinleştirmek için son kullanıcı tarafından başlatılan işleme de başvurabilir. MDM kaydı, Uygulama Koruma İlkesi kaydından tamamen ayrıdır.

SDK ile tümleşik bir uygulamada, bu hesap Cihaz Yönetimi kaydedilmeden Uygulama Koruma İlkesi için kaydedilmiş bir hesap olabilir. Benzer şekilde, bir kullanıcı, Uygulama Koruma İlkesi'ne kayıtlı hesaplarla SDK ile tümleşik uygulamalar olmadan Cihaz Yönetimi için bir cihaz kaydedebilir.

Genellikle geliştiriciler ve yöneticiler kayıt konusuna başvurduğunda MDM kaydına başvururlar çünkü Uygulama Koruma İlkesi kaydı hem geliştiriciler hem de son kullanıcılar tarafından büyük ölçüde görünmez. MDM kaydı hakkında daha fazla bilgi için bkz. Android cihazlarını kaydetme.

Tümleştirme İpuçları

Şirket Portalı günlüklerini anlama

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

Özellikle, dosya DiagnosticsInfo-scrubbed.log MAM tarafından yönetilen uygulamalarla ilgili bilgileri ve bölümdeki MAM ilkesi ayrıntılarını PolicyDB Information içerir. Yönetilen her uygulamanın bölümünde bir girdisi PolicyDB Information vardır. MAM ilkesinin uygulamanızı doğru şekilde hedeflediğ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çan hesabın MAM ilkesi uygulanmadığını gösterir.

Her MAM ilkesi ayarıyla ilgili açıklama için Microsoft Intune'deki Android uygulama koruma ilkesi ayarlarına bakın. Bu ayarların Şirket Portalı günlüklerinde nasıl gösterileceğinin açıklaması için bkz. İstemci uygulama koruma günlüklerini gözden geçirme. MAM ilkesi beklendiği gibi uygulanmadığında, Şirket Portalı günlüklerini 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 biriyle toplayabilirsiniz:

  • Şirket Portalı aracılığıyla
    • Şirket Portalı uygulamasını açma
    • Sağ yukarı köşedeki üç nokta menüsünü seçin
    • Ayarlar'ı seçin
    • Tanılama Günlükleri'nin altında Günlükleri Kaydet'i seçin
    • Şirket Portalı günlüklerini kaydetmek için çıkış dizinini seçmek için istemi izleyin.
    • Günlükleri Android cihazınızdan yerel makinenize çekmek için komutunu kullanın adb shell pull .
  • [Yönetilen uygulama günlüklerine erişmek için Android için Microsoft Edge'i kullanın]. Bu, Şirket Portalı günlükleri 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ülemek için çağrısıMAMPolicyManager.showDiagnostics(context).

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

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

Varsayılan olarak, tümleşik uygulamalar etkin olduğunda her 30 dakikada bir güncelleştirilmiş ilke için Intune hizmetiyle iletişim kurar. Bu beklemeyi önleyebilir ve Şirket Portalı üzerinden bir check-in işlemi yapmaya zorlayabilirsiniz:

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

Bu işlem hemen bir iade zamanlar ve uygulamanıza ve hesabınıza hedeflenen güncel ilkeyi alır.

AndroidX Geçişi sorunlarını giderme

AndroidX'i kullanmadan önce Intune Uygulama SDK'sını tümleştirdiyseniz, AndroidX'e geçiş yaparken aşağıdaki gibi bir hatayla karşılaşabilirsiniz:

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

Uygulamanız SDK'nın eski destek sınıflarına başvurduğundan bu hatalar oluşabilir. MAM destek sınıfları, AndroidX'te 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ı kaldırılarak 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 paketlerindeki com.microsoft.intune.mam.client.support.v7com.microsoft.intune.mam.client.support.v4 MAM sınıflarına yapılan tüm başvuruları AndroidX eşdeğerleriyle değiştirerek elde edilen derleme zamanı hatalarını düzeltin. Örneğin, için başvurular MAMAppCompatActivity AndroidX'in AppCompatActivityolarak değiştirilmelidir. Yukarıda açıklandığı gibi MAM derleme eklentisi/aracı, Derleme zamanında uygun MAM eşdeğerleriyle AndroidX kitaplıklarındaki sınıfları 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 alternatif olarak Uygulama Koruma İlkeleri'ne kaydolabilir. Bu özellik öncelikli olarak MSAL ile tümleşik olmayan özel iş kolu uygulamalarını desteklemektir.

Uyarı

Varsayılan kayıt önemli dezavantajlarla 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 genel bir uygulama mağazasına taşınırsa varsayılan kayıt desteklenmez.

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

Not

Varsayılan kayıt, bağımsız buluta duyarlıdır.

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

  1. Uygulamanız MSAL'yi tümleştirirse veya SSO'yı etkinleştirmeniz gerekiyorsa MSAL'yi yapılandırın. Aksi takdirde bu adımı atlayabilirsiniz.

  2. Bildirimde etiketin altına <application> aşağıdaki değeri ekleyerek varsayılan kaydı etkinleştirin:

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

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

Yalıtılmış İşlemler

Intune Uygulama SDK'sı yalıtılmış işlemlere koruma uygulayamaz. Yalıtılmış işlemler (android:isolatedProcess) desteği için aşağıdaki meta veri etiketinin eklenmesi gerekir.

Uyarı

Uygulamanız bu meta verileri ekleyerek yalıtılmış işlemin kuruluş verilerini açığa çıkaramayacağını bildiriyor. Bunun garantisini uygulamanız sağlar.

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

Özel Ekran Yakalama Kısıtlamaları

Uygulamanız Android'in Windowdüzey FLAG_SECURE kısıtlamasını atlayan özel bir ekran yakalama özelliği içeriyorsa, özelliğe tam erişime izin vermeden önce ekran yakalama ilkesini denetlemeniz gerekir. Örneğin, uygulamanız geçerli görünümü PNG dosyasına işlemek için özel bir işleme altyapısı kullanıyorsa, önce öğesini denetlemeniz AppPolicy.getIsScreenCaptureAllowed()gerekir.

Uygulamanız herhangi bir özel veya üçüncü taraf ekran yakalama özelliği içermiyorsa, ekran yakalamaları kısıtlamak için herhangi bir işlem yapmanız gerekmez. Ekran yakalama ilkesi, tüm MAM tümleşik uygulamaları için 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 kaydı özellikleri aracılığıyla uygulamanızın ekranını yakalamaya çalışırsa yakalama, uygulamanızdan katılım olmadan otomatik olarak kısıtlanır.

İlke uygulama sınırlamaları

  • İçerik Çözümleyicilerini Kullanma: "Aktarma veya alma" Intune ilkesi, başka bir uygulamadaki içerik sağlayıcısına erişmek için içerik çözümleyici kullanımını engelleyebilir veya kısmen engelleyebilir. Bu, yöntemlerin null döndürmesine veya hata değeri oluşturmasına neden olur ContentResolver (örneğin, openOutputStream engellenirse oluşturur FileNotFoundException ). Uygulama, bir içerik çözümleyicisi aracılığıyla veri yazma hatasının ilkeden kaynaklanıp kaynaklanmadığını (veya ilkeden kaynaklanıp kaynaklanmayacağını) şu çağrıyı yaparak belirleyebilir:

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

    veya ilişkili etkinlik yoksa:

    MAMPolicyManager.getCurrentThreadPolicy().getIsSaveToLocationAllowed(contentURI);
    

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

Dışarı aktarılan hizmetler

Intune Uygulama SDK'sında bulunan 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 dosyasını içerir. Hizmet, yalnızca Şirket Portalı bildirim göndermesine izin verildiğinden emin olmak için çağıranı denetler.

Yansıma sınırlamaları

MAM temel sınıflarından bazıları (örneğin, , MAMActivityMAMDocumentsProvider) yalnızca belirli API düzeylerinin ü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 listelemek için yansıma kullanmak her zaman mümkün olmayabilir. Bu kısıtlama MAM ile sınırlı değildir; uygulamanın kendisi Android temel sınıflarından bu yöntemleri uygularsa uygulanacak kısıtlamayla aynıdır.

Robolectric

Robolectric altında Intune Uygulama SDK'sı davranışını test etme desteklenmez. Robolectric altında bulunan ve bunları gerçek cihazlarda veya öykünücülerde doğru şekilde taklit etmeyen davranışlar nedeniyle SDK'nın Robolectric altında çalıştırılmasıyla ilgili 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 MAMApplication'dan devralmayan bir uygulama sınıfıyla birim testi apk'nizi üretmektir.