Uygulama yayın için hazırlanıyor

Bir uygulama kodlandıktan ve test edildikten sonra dağıtım için bir paket hazırlamak gerekir. Bu paketi hazırlarken ilk görev, dağıtım için uygulama oluşturmak ve genellikle bazı uygulama özniteliklerinin ayarlanmasını gerektirir.

Yayın için uygulamayı derlemek için aşağıdaki adımları kullanın:

  • Uygulama simgesini belirtin – her Xamarin. Android uygulamasında bir uygulama simgesi belirtilmelidir. Teknik olarak gerekli olmasa da, Google Play gibi bazı pazarlar için gerekir.

  • Uygulamanın sürümü – Bu adım sürüm bilgilerinin başlatılmasını veya güncelleştirilmesini içerir. Bu, gelecekteki uygulama güncelleştirmeleri için önemlidir ve kullanıcıların hangi uygulama sürümünü yükledikleri hakkında farkında olmasını sağlar.

  • APK 'Yi daraltın : son APK 'ın boyutu, Yönetilen koddaki Xamarin. Android bağlayıcı ve Java bytecode üzerinde Proguard kullanılarak önemli ölçüde azaltılabilir.

  • Uygulamayı koruyun – hata ayıklamayı devre dışı bırakarak, yönetilen kodu gizleme, hata ayıklama ve izinsiz koruma ve yerel derlemeyi kullanma gibi kullanıcıların veya saldırganların uygulamayı hata ayıklamasını, değiştirmesine veya tersine mühendislik yapmasını engelleyin.

  • Paketleme özelliklerini ayarlama – paketleme özellikleri, Android uygulama paketinin (APK) oluşturulmasını denetler. Bu adım APK 'yi iyileştirir, varlıklarını korur ve ambalajları gerektiği gibi modüle leştirir. Ayrıca, kullanıcılarınıza cihazları için iyileştirilmiş bir Android uygulama paketi sağlayabilirsiniz.

  • Derle – Bu adım, kod ve varlıkları derleme modunda derlediğini doğrulamak için derler.

  • Yayımlama Için arşiv – Bu adım, uygulamayı oluşturur ve imzalama ve yayımlama için bir arşive koyar.

Bu adımların her biri aşağıda daha ayrıntılı olarak açıklanmıştır.

Uygulama simgesini belirtin

Her Xamarin. Android uygulamasının bir uygulama simgesi belirttiğinden kesinlikle önerilir. Bazı uygulama marketleri, Android uygulamalarının bir tane olmadan yayımlanmasına izin vermez. IconÖzniteliğin özelliği, Application bir Xamarin. Android projesi için uygulama simgesini belirtmek için kullanılır.

Visual Studio 2017 ve üzeri sürümlerde, aşağıdaki ekran görüntüsünde gösterildiği gibi proje özelliklerininAndroid bildirim bölümünde uygulama simgesini belirtin:

Uygulama simgesini ayarla

Bu örneklerde, @drawable/icon@drawable/icon konumunda bulunan bir simge dosyası anlamına gelir ( .png uzantısının kaynak adına dahil edilmediğini unutmayın). Bu öznitelik, bu örnek kod parçacığında gösterildiği gibi, Properties\AssemblyInfo.csdosyasında da bildirilemez:

[assembly: Application(Icon = "@drawable/icon")]

Normalde, using Android.Appusing Android.App ' nin üst kısmında (özniteliğin ad alanı ApplicationAndroid.App ) belirtilir; ancak, using zaten mevcut değilse bu ifadeyi eklemeniz gerekebilir.

Uygulamanın sürümü

Sürüm oluşturma, Android Uygulama Bakımı ve dağıtımı için önemlidir. Yerinde bir sürüm oluşturma işlemi yapılmadan bir uygulamanın nasıl güncelleştirileceğini belirlemek zordur. Android, sürüm oluşturmaya yardımcı olmak için iki farklı bilgi türünü tanır:

  • Sürüm numarası : uygulamanın sürümünü temsil eden bir tamsayı değeri (Android ve uygulama tarafından dahili olarak kullanılır). Çoğu uygulama bu değeri 1 olarak ayarlayıp, her derleme ile artırılır. Bu değerin sürüm adı özniteliği olan bir ilişkisi veya benzeşimi yok (aşağıya bakın). Uygulamalar ve yayımlama hizmetleri bu değeri kullanıcılara göstermemelidir. Bu değer AndroidManifest.xml dosyasında olarak depolanır .

  • Sürüm adı : yalnızca kullanıcıya uygulamanın sürümü (belirli bir cihaza yüklenmiş olarak) hakkında iletişim kurmak için kullanılan bir dizedir. Sürüm adı kullanıcılara veya Google Play görüntülenmek üzere tasarlanmıştır. Bu dize, Android tarafından dahili olarak kullanılmaz. Sürüm adı, kullanıcının cihazında yüklü olan derlemeyi belirlemesine yardımcı olacak herhangi bir dize değeri olabilir. Bu değer AndroidManifest.xml dosyasında olarak depolanır .

Visual Studio, bu değerler, aşağıdaki ekran görüntüsünde gösterildiği gibi proje özelliklerininAndroid bildirim bölümünde ayarlanabilir:

Sürüm numarasını ayarla

APK 'yı Küçült

Xamarin. Android APKs, gereksiz yönetilen kodu kaldıran Xamarin. Android bağlayıcı birleşimi ve kullanılmayan Java bytecode'U kaldıran Android SDK Proguard aracını daha küçük hale getirilebilir. Yapı işlemi önce, uygulamayı yönetilen kod (C#) düzeyinde iyileştirmek için Xamarin. Android bağlayıcı 'yı kullanır ve daha sonra APK 'yi Java bytecode düzeyinde iyileştirmek için ProGuard (etkinse) kullanır.

Bağlayıcıyı yapılandırma

Yayın modu paylaşılan çalışma zamanını kapatır ve uygulamanın yalnızca çalışma zamanında gereken Xamarin. Android parçalarını sevk edebilmesi için bağlamayı etkinleştirir. Xamarin. Android içindeki bağlayıcı , bir Xamarin. Android uygulaması tarafından hangi derlemelerin, türlerin ve tür üyelerinin kullanıldığını veya buna başvurulduğunu belirleyen statik analizi kullanır. Bağlayıcı daha sonra kullanılmayan tüm derlemeleri, türleri ve kullanılmayan (veya başvurulan) üyeleri atar. Bu, paket boyutunda önemli bir azalmaya neden olabilir. Örneğin, APK 'nin son boyutunun %83 oranında azaltılmaya yönelik HelloWorld örneğini düşünün:

  • Yapılandırma: None – Xamarin. Android 4.2.5 size = 17,4 MB.

  • Yapılandırma: yalnızca SDK derlemeleri – Xamarin. Android 4.2.5 size = 3,0 MB.

Proje özelliklerininAndroid seçenekler bölümünde bağlayıcı seçeneklerini ayarlayın:

Bağlayıcı seçenekleri

Bağlama açılır menüsü, bağlayıcıyı denetlemek için aşağıdaki seçenekleri sağlar:

  • Hiçbiri – bu, bağlayıcıyı kapatır; Hiçbir bağlama gerçekleştirilmez.

  • Yalnızca SDK derlemeleri – bu yalnızca Xamarin. Android için gerekenderlemeleri bağlayacaktır. Diğer derlemeler bağlanmayacak.

  • SDK ve Kullanıcı derlemeleri – bu, yalnızca Xamarin. Android için gerekli olanları değil, uygulamanın gerektirdiği tüm derlemeleri bağlayacaktır.

Bağlama bazı istenmeyen yan etkilere neden olabilir, bu nedenle bir uygulamanın fiziksel bir cihazdaki yayın modunda yeniden test edilmesi önemlidir.

ProGuard

Proguard , Java kodunu bağlayan ve gizleme yapan bir Android SDK aracıdır. ProGuard normalde, APK 'inizdeki büyük dahil edilen kitaplıkların (örneğin Google Play Hizmetleri) ayak izini azaltarak daha küçük uygulamalar oluşturmak için kullanılır. ProGuard kullanılmayan Java bytecode 'u kaldırır, bu da ortaya çıkan uygulamayı küçültür. Örneğin, küçük Xamarin. Android uygulamalarında ProGuard kullanmak genellikle boyut cinsinden %24 düşüş elde eder; birden çok kitaplık bağımlılığı olan daha büyük uygulamalarda ProGuard kullanımı genellikle daha büyük bir boyut azaltmaya erişir.

ProGuard, Xamarin. Android bağlayıcısına bir alternatif değildir. ProGuard, Java bytecode 'u bağlalarken, Xamarin. Android bağlayıcı yönetilen kodu bağlar. Yapı işlemi önce, uygulamadaki yönetilen (C#) kodu iyileştirmek için Xamarin. Android bağlayıcı 'yı kullanır ve daha sonra APK 'yi Java bytecode düzeyinde iyileştirmek için ProGuard (etkinse) kullanır.

ProGuard 'ı etkinleştir Işaretlendiğinde, Xamarin. Android elde edilen apk üzerinde Proguard aracını çalıştırır. Proguard yapılandırma dosyası oluşturulur ve derleme zamanında ProGuard tarafından kullanılır. Xamarin. Android Ayrıca özel Proguardconfiguration derleme eylemlerini de destekler. Projenize özel bir ProGuard yapılandırma dosyası ekleyebilir, sağ tıklayıp bu örnekte gösterildiği gibi bir yapı eylemi olarak seçebilirsiniz:

ProGuard varsayılan olarak devre dışıdır. ProGuard 'ı etkinleştir seçeneği, yalnızca proje serbest bırakma moduna ayarlandığında kullanılabilir. ProGuard 'ı etkinleştir işaretli değilse, tüm Proguard derleme eylemleri yok sayılır. Xamarin. Android ProGuard yapılandırması APK 'yi göstermez ve özel yapılandırma dosyaları da dahil olmak üzere, gizleme özelliğini etkinleştirmek mümkün değildir. Gizleme kullanmak istiyorsanız, lütfen Dotfuscator Ile uygulama korumabölümüne bakın.

ProGuard aracını kullanma hakkında daha ayrıntılı bilgi için bkz. Proguard.

Uygulamayı Koruma

Hata Ayıklamayı Devre Dışı Bırakma

Android uygulaması geliştirme sırasında, hata ayıklama Java Hata Ayıklama Kablo Protokolü (JDWP) ile gerçekleştirilir. Bu, adb gibi araçların hata ayıklama amacıyla JVM ile iletişim kurmasına olanak sağlayan bir teknolojidir. JDWP, Xamarin.Android uygulamasının hata ayıklama derlemeleri için varsayılan olarak açıktır. JDWP geliştirme sırasında önemli olduğu gibi, yayımlanan uygulamalar için de bir güvenlik sorununa neden olabilir.

Önemli

Java sürecine tam erişim elde etmek ve bu hata ayıklama durumu devre dışı bırakılamazsa uygulama bağlamında rastgele kod yürütmek mümkün olduğu için (JDWP aracılığıyla) her zaman yayımlanan bir uygulamada hata ayıklama durumunu devre dışı bırakın.

Android Bildirimi, android:debuggable uygulamanın hata ayıklaması olup olmadığını kontrol eden özniteliğini içerir. özniteliğini olarak ayarlamak iyi bir uygulama android:debuggable olarak kabul false edilir. Bunu yapmak için en basit yol AssemblyInfo.csdosyasına bir koşullu derleme deyimi eklemektir:

#if DEBUG
[assembly: Application(Debuggable=true)]
#else
[assembly: Application(Debuggable=false)]
#endif

Hata ayıklama derlemeleri, hata ayıklamayı kolaylaştırmak için bazı izinleri otomatik olarak ayarlamış (internet ve ReadExternalStorage gibi). Ancak yayın derlemeleri yalnızca açıkça yapılandırmış olduğunuz izinleri kullanır. Yayın derlemesi'ne geçişin, uygulamanın Hata ayıklama derlemesinde mevcut olan bir izni kaybetmelerine neden olduğunu bulursanız, İzinler altında açıklandığı gibi Gerekli izinler listesinde bu izni açıkça etkinleştirmiş olduğunu doğrulayın.

Dotfuscator ile Uygulama Koruması

Hata ayıklama devre dışı bırakılmışolsa bile saldırganların bir uygulamayı yeniden pakete eklemesi veya kaldırması mümkündür. Bu sayede uygulama üzerinde ters mühendislik, hata ayıklama veya kurcalama olabilir. Dotfuscator Community Edition (CE), yönetilen kodu karartma ve uygulamanın kök verili bir cihazda çalıştırıldı mı olduğunu algılamak ve yanıtlamak için derleme zamanında bir Xamarin.Android uygulamasına çalışma zamanı güvenlik durumu algılama kodu ekleme için kullanılabilir.

Dotfuscator CE, Visual Studio 2017'ye dahildir. Dotfuscator'ı kullanmak için Araçlar PreEmptive Protection - Dotfuscator 'a tıklayın.

Dotfuscator CE'yi yapılandırmak için bkz. Xamarin ile Dotfuscator Community Sürümünü Kullanma. Yapılandırıldığında, Dotfuscator CE oluşturulan her derlemeyi otomatik olarak korur.

Derlemeleri Yerel Kodda Paketle

Bu seçenek etkinleştirildiğinde, derlemeler yerel paylaşılan kitaplıkta paket haline gelir. Bu, derlemelerin sıkıştırarak daha küçük dosyalara izin .apk verir. Derleme sıkıştırması da çok az bir kararma biçimi sağlar; bu tür karartmalara dayanmama gerekir.

Bu seçenek bir Enterprise gerektirir ve yalnızca Hızlı Dağıtımı Kullan devre dışı bırakılmıştır. Derlemeleri yerel koda paketle varsayılan olarak devre dışıdır.

Yerel Kodda Paketle seçeneğinin,derlemelerin yerel kodda derlenmiş olduğu anlamına olmadığını unutmayın. Derlemeleri yerel kodda derlemek için AOT Derlemesi kullanmak mümkün değildir.

AOT Derlemesi

AOT Derleme seçeneği (Paketleme Özellikleri sayfasında) derlemelerin Zamanından Önce (AOT) derlemelerini sağlar. Bu seçenek etkinleştirildiğinde, derlemeleri çalışma zamanından önce önceden derlemek tarafından Tam Zamanında (JIT) başlatma ek yükü en aza indirgener. Sonuçta elde edilen yerel kod, APK'ye, tamamlanmamış derlemelerle birlikte dahil edilir. Bu da uygulama başlatma süresinin daha kısa olmasıyla sonuç verir ancak APK boyutlarının biraz daha büyük olması gerekir.

AOT Derleme seçeneği, bir Enterprise veya daha yüksek bir lisans gerektirir. AOT derlemesi yalnızca proje Yayın modu için yapılandırıldığında kullanılabilir ve varsayılan olarak devre dışı bırakılır. AOT Derlemesi hakkında daha fazla bilgi için bkz. AOT.

LLVM Derleyiciyi En Iyi Duruma Getirme

LLVM Derleyiciyi İyileştiricisi daha küçük ve daha hızlı derlenmiş kod oluşturabilir ve AOT ile derlenmiş derlemeleri yerel koda dönüştürür, ancak daha yavaş derleme süreleri için. LLVM derleyicisi varsayılan olarak devre dışıdır. LLVM derleyicisi kullanmak için önce AOT Derleme seçeneğinin etkinleştirilmesi gerekir (Paketleme Özellikleri sayfasında).

Not

LLVM Derleyiciyi En Iyi Duruma Getirme seçeneği, bir Enterprise gerektirir.

Paketleme Özelliklerini Ayarlama

Paketleme özellikleri, aşağıdaki ekran görüntüsünde gösterildiğigibi, Özelliklerprojesinin Android Seçenekleri bölümünde belirtebilirsiniz:

Paketleme Özellikleri

Paylaşılan Çalışma Zamanı Kullan ve Hızlı Dağıtım Kullangibi bu özelliklerin birçoğu Hata Ayıklama moduna yöneliktir. Ancak uygulama Yayın modu için yapılandırıldığında, uygulamanın boyut ve yürütme hızı için nasıl en iyi duruma getirilmiş olduğunu,üzerinde oynanmaya karşı nasıl korundığını ve farklı mimarileri ve boyut kısıtlamalarını destekleyecek şekilde nasıl paketlendiğini belirleyen başka ayarlar da vardır.

Desteklenen Mimarileri Belirtme

Bir Xamarin.Android uygulamasını yayına hazırlarken, desteklenen CPU mimarilerini belirtmeniz gerekir. Tek bir APK, birden çok farklı mimariyi desteklemek için makine kodu içerebilir. Birden çok CPU mimarisini destekleme hakkında ayrıntılı bilgi için bkz. CPU Mimarileri.

Bir Paket () oluşturma. APK) per Selected ABI

Bu seçenek etkinleştirildiğinde, desteklenen tüm ABI'ler için tek ve büyük bir APK yerine desteklenen ABI'nin her biri için bir APK oluşturulur (CPUMimarileri'nin altında açıklandığı gibi Gelişmiş sekmesinde seçilidir). Bu seçenek yalnızca proje Yayın modu için yapılandırıldığında ve varsayılan olarak devre dışı bırakıldığında kullanılabilir.

Multi-Dex

Multi-Dex'i Etkinleştir seçeneği etkinleştirildiğinde, .dex dosya biçiminin 65.000 yöntem sınırını atlamak için Android SDK araçları kullanılır. 65.000 yöntem sınırlaması, bir uygulamanın başvurması (uygulamanın bağlı olduğu kitaplıklar dahil) Java yöntemlerinin sayısına bağlıdır; kaynak kodunda yazılan yöntemlerin sayısına dayalı değildir. Bir uygulama yalnızca birkaç yöntem tanımladığı ancak çok sayıda (veya büyük kitaplık) kullandığında, 65.000 sınırı aşılır.

Bir uygulama, başvurulan her kitaplıkta her yöntemi kullanmaz; Bu nedenle, ProGuard gibi bir araç (yukarıya bakın) kullanılmayan yöntemleri koddan kaldırabilir. En iyi yöntem Multi-Dex'i etkinleştirmeyi yalnızca kesinlikle gerekli olduğu zaman etkinleştirmektir. Başka bir ifadeyle uygulama, ProGuard'ı kullandıktan sonra bile 65.000'den fazla Java yöntemine başvurur.

Multi-Dex hakkında daha fazla bilgi için bkz. Configure Apps with Over 64K Methods.

Android Uygulama Paketleri

Uygulama paketleri, doğrudan bir cihaza dağıtılamayıldığından, APK'lardan farklıdır. Bunun yerine, derlenmiş tüm kodunuz ve kaynaklarınız ile birlikte karşıya yüklenmek üzere tasarlanmış bir biçimdir. İmzalı uygulama paketinizi karşıya yükledikten sonra, Google Play API'lerini oluşturmak ve imzalamak ve Dinamik Teslim kullanarak kullanıcılarınıza hizmet vermek için gereken her şeye sahip olur.

Android Uygulama Paketleri için desteği etkinleştirmek için, Android proje seçeneklerinizin içindeki Android Paket Biçimi bundle özelliğinin değerini kabul etmek gerekir. bundle Bunu yapmadan önce, uygulama paketleri yalnızca sürüm paketlerine yönelik olduğundan projenizi bir Release yapılandırmaya değiştirebilirsiniz.

Artık Arşiv Flow. Bu, uygulamanız için bir uygulama paketi oluşturulur.

Android Uygulama Paketleri hakkında daha fazla bilgi için bkz. Android Uygulama Paketleri.

Derlemek

Yukarıdaki adımların hepsi tamamlandıktan sonra uygulama derleme için hazırdır. Yayın modunda başarıyla derlemesi olduğunu doğrulamak için Çözümü Yeniden Derleme'yi seçin. Bu adımın henüz bir APK üretmesi olmadığını unutmayın.

Uygulama Paketini İmzalama, paketlemeyi ve imzalamayı daha ayrıntılı bir şekilde açıklar.

Yayımlama için Arşiv

Yayımlama işlemini başlamak için, Çözüm Gezgini'de projeye sağ tıklayın ve Arşivle... bağlam menü öğesini seçin:

Uygulamayı arşivleme

Arşiv... , Arşiv Yöneticisi'ni başlatıyor ve bu ekran görüntüsünde gösterildiği gibi Uygulama paketi arşivleme işlemini başlatıyor:

Arşiv Yöneticisi

Arşiv oluşturmanın bir diğer yolu da Çözüm Gezgini'de Çözüm'e sağ tıklar ve çözümü oluşturan ve arşiv oluşturan tüm Xamarin projelerini arşivler:

Tümünü Arşivle

Arşiv veArşiv her ikisi de arşiv yöneticisiotomatik olarak başlatılır. Arşiv yöneticisini doğrudan başlatmak için Araçlar arşiv yöneticisi... menü öğesine tıklayın:

Arşiv yöneticisini Başlat

Çözüm düğümüne sağ tıklayıp Arşivi görüntüle' yi seçerek çözümün arşivleri her zaman Arşiv:

Arşivleri görüntüle

Arşiv Yöneticisi

Arşiv yöneticisi bir çözüm listesi bölmesinden, bir Arşiv listesindenve bir Ayrıntılar panelindenoluşur:

Arşiv Yöneticisi bölmeleri

Çözüm listesi , en az bir arşivlenmiş proje bulunan tüm çözümleri görüntüler. Çözüm listesi aşağıdaki bölümleri içerir:

  • Geçerli çözüm – geçerli çözümü görüntüler. Geçerli çözümün mevcut bir arşivi yoksa, bu alanın boş olabileceğini unutmayın.
  • Tüm arşivler – bir arşivi olan tüm çözümleri görüntüler.
  • Arama metin kutusu (en üstte) – tüm arşivler listesinde listelenen çözümlerin metin kutusuna girilen arama dizesine göre filtreleyeceğini.

Arşivler listesi seçili çözüm için tüm arşivlerin listesini görüntüler. Arşivler listesi aşağıdaki bölümleri içerir:

  • Seçilen çözüm adıçözüm listesindeseçilen çözümün adını görüntüler. Arşivler listesinde gösterilen tüm bilgiler bu seçili çözüme başvurur.
  • Platformlar filtresi – Bu alan, arşivleri platform türüne göre (IOS veya Android gibi) filtrelemeye olanak tanır.
  • Arşiv öğeleri – seçili çözüm için arşivlerin listesi. Bu listedeki her öğe proje adını, oluşturma tarihini ve platformunu içerir. Ayrıca, bir öğe arşivlenmekte veya yayımlandığında ilerleme durumu gibi ek bilgiler de gösterilebilir.

Ayrıntılar paneli her Arşiv hakkında ek bilgiler görüntüler. Ayrıca, kullanıcının dağıtım iş akışını başlatmasını veya dağıtımın oluşturulduğu klasörü açmasını sağlar. Yapı açıklamaları bölümü arşive derleme açıklamalarını dahil etme olanağı sunar.

Dağıtım

Uygulamanın arşivlenmiş bir sürümü yayımlamaya hazırsanız Arşiv yöneticisinde Arşivi seçin ve dağıt... düğmesine tıklayın:

Dağıt düğmesi

Dağıtım kanalı iletişim kutusunda uygulamayla ilgili bilgiler, dağıtım iş akışı ilerlemesinin göstergesi ve dağıtım kanalları seçeneği gösterilir. İlk çalıştırmada iki seçenek sunulur:

Dağıtım kanalını seçin

Aşağıdaki dağıtım kanallarından birini seçmek mümkündür:

  • Geçici: Android cihazlara dışarıdan yüklenebilen imzalı bir APK diske kaydeder. Android imzalama kimliği oluşturma, Android uygulamaları için yeni bir imzalama sertifikası oluşturma ve uygulamanın geçici bir sürümünü diske yayımlama hakkında bilgi edinmek Için uygulama paketini imzalamaya devam edin. Bu, test için APK oluşturmanın iyi bir yoludur.

  • Google Play : Google Play için imzalanmış bir APK yayımlar. Google Play deposunda bir APK 'yi nasıl imzalayacağınızı ve yayımlayacağınızı öğrenmek için Google Play yayımlamaya devam edin.