Aracılığıyla paylaş


Bir Uygulamayı Yayına Hazırlama

Bir uygulama kodlanıp test edildikten sonra, bir paketi dağıtım için hazırlamak gerekir. Bu paketi hazırlamanın ilk görevi, uygulamayı yayın için derlemektir ve bu da temel olarak bazı uygulama özniteliklerini ayarlamayı gerektirir.

Uygulamayı yayın için 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 bunu gerektirir.

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

  • APK'yi küçültme – Yönetilen kodda Xamarin.Android bağlayıcısı ve Java bayt kodunda ProGuard kullanılarak son APK'nın boyutu önemli ölçüde azaltılabilir.

  • Uygulamayı Koruma – Hata ayıklamayı devre dışı bırakarak, yönetilen kodu gizleyerek, hata ayıklama ve kurcalama önleme ekleyerek ve yerel derleme kullanarak kullanıcıların veya saldırganların uygulamada hata ayıklamasını, kurcalamasını veya tersine mühendislik yapmasını engelleyin.

  • Paketleme Özelliklerini Ayarla – Paketleme özellikleri, Android uygulama paketinin (APK) oluşturulmasını denetler. Bu adım APK'yı iyileştirir, varlıklarını korur ve ambalajı gerektiği gibi modülerleştirir. Ayrıca, kullanıcılarınıza cihazları için iyileştirilmiş bir Android Uygulama Paketi sağlayabilirsiniz.

  • Derleme – Bu adım, Yayın modunda derlendiğini doğrulamak için kodu ve varlıkları derler.

  • Yayımlama için Arşiv : Bu adım uygulamayı oluşturur ve imzalamak ve yayımlamak için bir arşive yerleştirir.

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 belirlemesi kesinlikle önerilir. Bazı uygulama marketleri, bir Android uygulamasının bir uygulama olmadan yayımlanmasına izin vermez. Icon özniteliğinin Application özelliği, Xamarin.Android projesi için uygulama simgesini belirtmek için kullanılır.

Visual Studio 2017 ve sonraki sürümlerde, aşağıdaki ekran görüntüsünde gösterildiği gibi proje Özellikleri'ninAndroid Bildirimi bölümünde uygulama simgesini belirtin:

Uygulama simgesini ayarlama

Bu örneklerde Resources @drawable/icon/drawable/icon.png konumunda bulunan bir simge dosyasına başvurur ( .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.cs dosyasında da bildirilebilir:

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

Normalde, using Android.AppAssemblyInfo.cs'nin en üst kısmında bildirilir (özniteliğin ad alanı Application, Android.App); ancak, henüz yoksa bu using ifadesini eklemeniz gerekebilir.

Uygulamanın Sürümü

Sürüm oluşturma, Android uygulama bakımı ve dağıtımı için önemlidir. Bir tür sürüm oluşturma işlemi yapılmadan, bir uygulamanın güncelleştirilip güncelleştirilmemesi veya nasıl güncelleştirilmesi gerektiğini belirlemek zordur. Android, sürüm oluşturma konusunda 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ğer 1 olarak ayarlı olarak başlar ve her derlemeyle artırılır. Bu değerin sürüm adı özniteliğiyle hiçbir ilişkisi veya benşimi yoktur (aşağıya bakın). Uygulamalar ve yayımlama hizmetleri bu değeri kullanıcılara görüntülememelidir. Bu değer AndroidManifest.xml dosyasında olarak android:versionCodedepolanır.

  • Sürüm Adı – Yalnızca uygulamanın sürümü hakkında kullanıcıya bilgi iletmek için kullanılan bir dizedir (belirli bir cihazda yüklü olduğu gibi). Sürüm adının kullanıcılara veya Google Play'de görüntülenmesi amaçlanmış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 tanımlamasına yardımcı olacak herhangi bir dize değeri olabilir. Bu değer AndroidManifest.xml dosyasında olarak android:versionNamedepolanır.

Visual Studio'da bu değerler, aşağıdaki ekran görüntüsünde gösterildiği gibi proje Özellikleri'ninAndroid Bildirimi bölümünde ayarlanabilir:

Sürüm numarasını ayarlama

APK'yi küçültme

Xamarin.Android API'leri, gereksiz yönetilen kodu kaldıran Xamarin.Android bağlayıcısının ve kullanılmayan Java bayt kodunu kaldıran Android SDK'dan ProGuard aracının bir bileşimi aracılığıyla küçültülebilir. Derleme işlemi, uygulamayı yönetilen kod (C#) düzeyinde iyileştirmek için ilk olarak Xamarin.Android bağlayıcısını kullanır ve daha sonra Apk'yi Java bayt kodu düzeyinde iyileştirmek için ProGuard (etkinleştirildiyse) kullanır.

Bağlayıcıyı yapılandırın

Yayın modu paylaşılan çalışma zamanını kapatır ve bağlamayı açar, böylece uygulama yalnızca çalışma zamanında gereken Xamarin.Android parçalarını gönderir. Xamarin.Android'deki bağlayıcı , bir Xamarin.Android uygulaması tarafından kullanılan veya başvurulan derlemeleri, türleri ve tür üyelerini belirlemek için statik analiz kullanır. Bağlayıcı daha sonra kullanılmayan (veya başvurulmayan) tüm kullanılmayan derlemeleri, türleri ve üyeleri atar. Bu, paket boyutunun önemli ölçüde azalmasına neden olabilir. Örneğin, APK'sının son boyutunda 83% azalmayla karşılaşan HelloWorld örneğini göz önünde bulundurun:

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

  • Yapılandırma: Yalnızca SDK Derlemeleri – Xamarin.Android 4.2.5 Boyut = 3,0 MB.

Proje Özellikleri'ninAndroid Seçenekleri bölümü aracılığıyla 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; bağlama gerçekleştirilmeyecek.

  • Yalnızca SDK Derlemeleri – Bu yalnızca Xamarin.Android için gerekli olan derlemeleri bağlar. Diğer derlemeler bağlanmayacaktır.

  • Sdk ve Kullanıcı Derlemeleri – Bu, yalnızca Xamarin.Android için gerekli olan derlemeleri değil, uygulamanın gerektirdiği tüm derlemeleri bağlar.

Bağlama, istenmeyen bazı 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 gizleyen bir Android SDK aracıdır. ProGuard normalde APK'nızdaki büyük dahil kitaplıkların (Google Play Services gibi) ayak izini azaltarak daha küçük uygulamalar oluşturmak için kullanılır. ProGuard kullanılmayan Java bayt kodunu kaldırarak sonuçta elde edilen uygulamayı küçültür. Örneğin, küçük Xamarin.Android uygulamalarında ProGuard kullanmak genellikle boyutu yaklaşık 24% azaltmaya neden olabilir. ProGuard'ı birden çok kitaplık bağımlılığına sahip daha büyük uygulamalarda kullanmak genellikle daha da büyük bir boyut azaltmaya neden olabilir.

ProGuard, Xamarin.Android bağlayıcısına alternatif değildir. Xamarin.Android bağlayıcısı yönetilen kodu, ProGuard ise Java bayt kodunu bağlar. Derleme işlemi ilk olarak uygulamadaki yönetilen (C#) kodu iyileştirmek için Xamarin.Android bağlayıcısını kullanır ve sonra Java bayt kodu düzeyinde APK'yı iyileştirmek için ProGuard (etkinleştirilirse) kullanır.

ProGuard'ı Etkinleştir seçeneği işaretlendiğinde, Xamarin.Android sonuçta elde edilen APK'da ProGuard aracını çalıştırır. ProGuard yapılandırma dosyası, derleme zamanında ProGuard tarafından oluşturulur ve kullanılır. Xamarin.Android, özel ProguardConfiguration derleme eylemlerini de destekler. Projenize özel bir ProGuard yapılandırma dosyası ekleyebilir, sağ tıklayabilir ve bu örnekte gösterildiği gibi derleme eylemi olarak seçebilirsiniz:

ProGuard varsayılan olarak devre dışıdır. ProGuard'ı Etkinleştir seçeneği yalnızca proje Yayın moduna ayarlandığında kullanılabilir. ProGuard'ı Etkinleştir işaretlenmedikçe tüm ProGuard derleme eylemleri yoksayılır. Xamarin.Android ProGuard yapılandırması APK'yı karartmıyor ve özel yapılandırma dosyalarıyla bile gizlemeyi etkinleştirmek mümkün değil. Gizleme kullanmak istiyorsanız, Dotfuscator ile Uygulama Güvenliği konusuna bakınız.

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

Uygulamayı Koruma

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

Bir Android uygulamasının geliştirilmesi sırasında, Java Hata Ayıklama Tel Protokolü (JDWP) kullanılarak hata ayıklama gerçekleştirilir. Bu, adb gibi araçların hata ayıklama amacıyla JVM ile iletişim kurmasına olanak tanıyan bir teknolojidir. JDWP, Xamarin.Android uygulamasının hata ayıklama derlemeleri için varsayılan olarak açıktır. Geliştirme sırasında JDWP önemli olsa da, yayımlanan uygulamalar için bir güvenlik sorunu oluşturabilir.

Önemli

Serbest bırakılmış bir uygulamada hata ayıklama durumu her zaman devre dışı bırakılmalıdır; çünkü bu durum devre dışı bırakılmazsa, JDWP aracılığıyla Java işlemine tam erişim sağlanabilir ve uygulama bağlamında rastgele kod çalıştırılabilir.

Android Bildirimi, uygulamanın hata ayıklanıp ayıklanamayacağını denetleyen özniteliğini içerir android:debuggable . android:debuggable özniteliğini false olarak ayarlamak iyi bir uygulama olarak kabul edilir. Bunu yapmanın en basit yolu, AssemblyInfo.cs koşullu derleme deyimi eklemektir:

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

Hata ayıklama derlemelerinin hata ayıklamayı kolaylaştırmak için bazı izinleri otomatik olarak ayarladığını unutmayın ( İnternet ve ReadExternalStorage gibi). Ancak yayın derlemeleri yalnızca açıkça yapılandırdığınız izinleri kullanır. Yayın derlemesine geçmenin uygulamanızın Hata Ayıklama derlemesinde bulunan bir izni kaybetmesine neden olduğunu fark ederseniz, İzinler'de açıklandığı gibi Gerekli izinler listesinde bu izni açıkça etkinleştirdiğinizden emin olun.

Dotfuscator ile Uygulama Koruması

Hata ayıklama devre dışı bırakılsa bile, saldırganların bir uygulamayı yeniden paketleyip yapılandırma seçeneklerini veya izinlerini eklemesi veya kaldırması mümkündür. Bu, onların uygulama üzerine tersine mühendislik yapmalarına, hata ayıklamalarına veya kurcalamalarına olanak sağlar. Dotfuscator Community Edition (CE), yönetilen kodu karartmak ve bir Xamarin.Android uygulamasına derleme esnasında çalışma zamanı güvenlik durumu algılama kodu ekleyerek uygulamanın kök erişimli bir cihazda çalışıp çalışmadığını algılamak ve yanıtlamak için kullanılabilir.

Dotfuscator CE, Visual Studio 2017'ye dahildir. Dotfuscator'ı kullanmak için Araçlar > Önleyici Koruma - Dotfuscator'a tıklayın.

Dotfuscator CE'yi yapılandırmak için bkz. Xamarin ile Dotfuscator Community Edition kullanma. Yapılandırıldıktan sonra Dotfuscator CE, oluşturulan her derlemeyi otomatik olarak korur.

Derlemeleri Yerel Koda Paketle

Bu seçenek etkinleştirildiğinde, derlemeler yerel paylaşılan bir kitaplıkta paketlenir. Bu, derlemelerin sıkıştırılmasını sağlar ve daha küçük .apk dosyalara izin verir. Montaj sıkıştırması da minimal bir karartma biçimi sağlar; bu tür bir karartma işlemine dayanılmamalıdır.

Bu seçenek kurumsal lisans gerektirir ve yalnızca Hızlı Dağıtım Kullan devre dışı bırakıldığında kullanılabilir. Derlemeleri yerel koda paketleme varsayılan olarak devre dışıdır.

Yerel Koda Paketle seçeneğinin derlemelerin yerel kodda derlenmiş olduğu anlamına gelmez. 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 Önceden Derlenmesini (AOT) etkinleştirir. Bu seçenek etkinleştirildiğinde, çalışma zamanından önce derlemeler önceden derlenerek Tam Zamanında (JIT) başlatma yükü en aza indirilir. Sonuçta elde edilen yerel kod, derlenmemiş derlemelerle birlikte APK'ye dahil edilir. Bu, daha kısa uygulama başlatma süresine neden olur, ancak biraz daha büyük APK boyutlarına neden olur.

AOT Derleme seçeneği kurumsal lisans 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 İyileştirme

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

Uyarı

LLVM Derleyiciyi İyileştirme seçeneği bir Kurumsal lisans gerektirir.

Paketleme Özelliklerini Ayarlama

Paketleme özellikleri, aşağıdaki ekran görüntüsünde gösterildiği gibi proje Özellikleri'ninAndroid Seçenekleri bölümünde ayarlanabilir:

Paketleme Özellikleri

Paylaşılan Çalışma Zamanı Kullan ve Hızlı Dağıtım Kullan gibi bu özelliklerin ç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 iyileştirildiğini, kurcalamaya karşı nasıl korunduğunu ve farklı mimarileri ve boyut kısıtlamalarını destekleyecek şekilde nasıl paketlenebileceğini belirleyen başka ayarlar da vardır.

Desteklenen Mimarileri Belirtme

Bir Xamarin.Android uygulamasını yayın için hazırlarken, desteklenen CPU mimarilerini belirtmek 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ştur (. APK) seçilen ABI başına

Bu seçenek etkinleştirildiğinde, desteklenen tüm ABI'ler için tek, büyük bir APK yerine desteklenen ABI'lerin her biri için bir APK oluşturulur (CPU Mimarileri'nde 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 65K yöntem sınırını atlamak için Android SDK araçları kullanılır. 65K yöntem sınırlaması, bir uygulamanın başvurduğunu Java yöntemlerinin sayısına (uygulamanın bağımlı olduğu kitaplıklardakiler dahil) bağlıdır; kaynak kodda yazılan yöntemlerin sayısına bağlı değildir. Bir uygulama yalnızca birkaç yöntem tanımlıyor ancak çok sayıda (veya büyük kitaplık) kullanıyorsa, 65.000 sınırının aşılması mümkündür.

Bir uygulamanın başvuruda bulunan her kitaplıktaki her yöntemi kullanmaması mümkündür; Bu nedenle, ProGuard (yukarıya bakın) gibi bir aracın kullanılmayan yöntemleri koddan kaldırabilmesi mümkündür. En iyi yöntem , Multi-Dex'i etkinleştirmeyi yalnızca kesinlikle gerekliyse etkinleştirmektir. Örneğin, uygulama ProGuard'ı kullandıktan sonra bile 65K'dan fazla Java yöntemine başvurur.

Multi-Dex hakkında daha fazla bilgi için bkz. Uygulamaları 64K Üzerinde Yöntemlerle Yapılandırma.

Android Uygulama Paketleri

Uygulama paketleri, doğrudan bir cihaza dağıtılamayacağından API'lerden farklıdır. Bu, tüm derlenmiş kodunuz ve kaynaklarınız ile yüklenmesi amaçlanan bir biçimdir. İmzalı uygulama paketinizi yüklediğinizde Google Play, uygulamanızın APK'lerini oluşturmak ve imzalamak ve Dinamik Teslimat kullanarak kullanıcılarınıza sunmak için gereken her şeye sahip olur.

Android Uygulama Paketleri desteğini etkinleştirmek için Android proje seçeneklerinizde Android Paket Biçimi özelliğinin değerini kabul bundle etmeniz gerekir. Bunu gerçekleştirmeden önce, uygulama paketleri yalnızca sürüm paketlerine yönelik olduğundan projenizi bir Release yapılandırma olarak değiştirdiğinizden emin olun.

Artık Arşiv Akışı'nı izleyerek bir uygulama paketi oluşturabilirsiniz. Bu, uygulamanız için bir uygulama paketi oluşturur.

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

Derleme

Yukarıdaki adımların tümü tamamlandıktan sonra uygulama derleme için hazırdır. Yayın modunda başarıyla derlendiğini doğrulamak için Derleme > Yeniden Derleme Çözümü'nü seçin. Bu adımın henüz bir APK üretmediğini unutmayın.

Uygulama Paketi'nin imzasında paketleme ve oturum açma konuları daha ayrıntılı olarak ele alınmaktadır.

Yayımlama Arşivi

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

Uygulamayı arşivle

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

Arşiv Yöneticisi

Arşiv oluşturmanın bir diğer yolu da Çözüm Gezgini'nde Çözüme sağ tıklayıp Tümünü Arşivle... öğesini seçmektir. Bu seçim çözümü oluşturur ve arşiv oluşturabilen tüm Xamarin projelerini arşivler:

Tümünü Arşivle

Hem Arşivle hem de Tümünü Arşivle , Arşiv Yöneticisi'ni otomatik olarak başlatır. Arşiv Yöneticisi'ni doğrudan başlatmak için Araçlar > Arşiv Yöneticisi... menü öğesine tıklayın:

Arşiv Yöneticisini Başlat

İstediğiniz zaman Çözüm düğümüne sağ tıklayıp Arşivleri Görüntüle seçeneğini seçerek çözümün arşivlerini görüntüleyin.

Arşivleri Görüntüle

Arşiv Yöneticisi

Arşiv Yöneticisi bir Çözüm Listesi bölmesinden, Arşivler Listesinden ve Ayrıntılar Panelinden oluşur:

Arşiv Yöneticisi Bölmeleri

Çözüm Listesi, en az bir arşivlenmiş projeye sahip 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 var olan bir arşivi yoksa bu alanın boş olabileceğini unutmayın.
  • Tüm Arşivler – Arşive sahip tüm çözümleri görüntüler.
  • Arama metin kutusu (en üstte): Tüm Arşivler listesinde listelenen çözümleri, metin kutusuna girilen arama dizesine göre filtreler.

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çili çözüm adıÇözüm Listesinde seçilen çözümün adını görüntüler. Arşivler Listesi'nde gösterilen tüm bilgiler bu seçili çözüme başvurur.
  • Platformlar Filtresi – Bu alan, arşivleri platform türüne (iOS veya Android gibi) göre filtrelemeyi mümkün kılar.
  • Arşiv Öğeleri – Seçili çözüm için arşiv listesi. Bu listedeki her öğe proje adını, oluşturma tarihini ve platformu içerir. Ayrıca, bir öğenin arşivlendiği veya yayımlandığı zaman ilerleme durumu gibi ek bilgiler de gösterebilir.

Ayrıntılar Panelinde her arşivle ilgili ek bilgiler görüntülenir. Ayrıca kullanıcının Dağıtım iş akışını başlatmasına veya dağıtımın oluşturulduğu klasörü açmasına da olanak tanır. Derleme Açıklamaları bölümü, derleme açıklamalarını arşive eklemeyi mümkün kılar.

Dağıtım

Uygulamanın arşivlenmiş bir sürümü yayımlamaya hazır olduğunda Arşiv Yöneticisi'nde arşivi seçin ve Dağıt... düğmesine tıklayın:

Dağıt düğmesi

Dağıtım Kanalı iletişim kutusunda uygulama hakkındaki bilgiler, dağıtım iş akışı ilerleme durumunun göstergesi ve dağıtım kanalları seçimi 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'yı diske kaydeder. Android imzalama kimliği oluşturmayı, Android uygulamaları için yeni bir imzalama sertifikası oluşturmayı ve uygulamanın geçici bir sürümünü diske yayımlamayı öğrenmek için Uygulama Paketini İmzalama bölümüne geçin. Bu, test için bir APK oluşturmanın iyi bir yoludur.

  • Google Play - Google Play'de imzalı bir APK yayımlar. Google Play mağazasında APK imzalamayı ve yayımlamayı öğrenmek için Google Play'de Yayımlama'ya devam edin.