MehmetX.com

Xamarin - Android APK Oluşturma - Diğer Detaylar

22.10.2017 00:32:37 | Okunma Sayisi : 275 | Yorum Sayisi : 0


Bir önceki Xamarin - Android APK Oluşturma isimli makalemde, minimum konfigürasyon ile Android APK oluşturmayı incelemiştik. Bu makalede biraz daha detaylı inceleyeceğiz.

Baştan sona tüm adımları tekrar yazmayıp, yalnızca ilave özellikleri anlatmaya çalışacağım.

1- Uygulama İkonunu Değiştirmek

Xamarin projesi varsayılan olarak aşağıdaki ikonu uygulamanız için otomatik olarak getirir.
xamarin_default_logo
Bu ikonu değiştirmek için 3 yöntem kullanabilirsiniz.

Bunlardan ilki;

Android projesine sağ tıklayıp Properties ve Android Manifest seçip, gelen ekranda Application Icon alanını kullanmanız gerekir. Bu alan, Android projesindeki Resources/drawable klasörünü okumaktadır. Bu klasör içerisinde icon.png ismi ile Xamarin' in varsayılan ikonu bulunmaktadır. Kendi ikonunuzu bu klasör içerisine aynı isimle (icon.png) kaydederseniz, mevcut Xamarin ikonu yerine kendi ikonunuz ayarlanmış olacaktır.

xamarin_android_change_icon.png

İkinci yöntem ise bu klasör içerisine farklı isimde bir ikon koyarak Application Icon alanındaki listeden ilgili ikonu seçmektir. Bunun için;
  • Android projesi içerisindeki Resource/drawable klasörüne sağ tıklayın
  • Add Existing Item seçin kullanmak istediğiniz ikon dosyasını seçin
  • Android Properties penceresini (yukarıdaki resim) kapatıp tekrar açın
  • Application Icon listesinden yeni eklediğiniz ikonu seçin ve kaydedin

Üçüncü yöntem ise; Android projesinin AssemblyInfo.cs dosyasına aşağıdaki attribute' u eklemektir.

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

xamarin_android_assembly_info_icon_property


2- APK Boyutunu Küçültmek

Android projelerinde; Xamarin.Android Linker ile kullanılmayan managed kodları (C# kodlarını), ProGuard ile de kullanılmayan Java Bytecode' ları kaldırarak APK boyutunda azalma sağlayabilirsiniz.

Build (derleme) işlemi; başlangıçta Xamarin.Android Linker ile managed kod seviyesinde uygulamayı optimize eder, ardından ProGuard ile Java ByteCode seviyesinde APK' yı optimize eder.


Linker;
hangi assembly' lerin, hangi tiplerin (types) ve hangi tip üyelerinin Xamarin Android projesi tarafından kullanılıp kullanılmadığını bir takım analizler ile tespit eder ve kullanılmayan ve referans edilmeyen assembly, tip ve tip üyelerini çıkartarak optimizasyon yapar.

Xamarin Android projesinin Configuration' ını Debug' dan Release' e aldığınız zaman Linker otomatik olarak aktif edilir. Tekrar Debug' a aldığınız zaman otomatik olarak pasif edilir.

Linker ayarlarına; Android Xamarin Projesi -> Properties -> Android Options -> Linker Properties şeklinde erişebilirsiniz.

xamarin_android_apk_linker.png
Buradaki Linking listesini açtığınız zaman 3 adet seçenek göreceksiniz. Bunlar;
  • None: (Linker' ı kapalı tutar)
  • Sdk Assemblies Only: (Yalnızca Xamarin.Android tarafından gerek duyulan assembly' ler için linking uygular, diğerleri için uygulamaz)
  • Sdk and User Assemblies: (Uygulama tarafından gerek duyulan tüm assembly' ler için linking uygular)
 
ProGuard;
Java koduna link işlemi uygulayan bir Android SDK' sıdır ancak Xamarin.Android Linker' a bir alternatif değildir. Xamarin.Android Linker managed C# kodunu optimize ederken, ProGuard Java kodunu (bytecode seviyesinde) optimize eder. Linker ve ProGuard aynı anda uygulanabilir. ProGuard varsayılan olarak kapalı durumdadır.

Aktif etmek için (yalnızca Release mod için yapabilirsiniz);
Android Xamarin Projesi -> Properties -> Android Options -> Packaging properties -> Enable ProGuard seçeneğini işaretlemesiniz.

xamarin_android_enable_proguard.png
 

Linker kullanmadan, Linker kullanarak ve hem Linker hem de ProGuard kullanarak oluşan APK boyutları şu şekildedir (farklı uygulamalarda farklı sonuçlar alıyor olacaksınız).

xamarin_android_apk_linker_compare
Linker ve ProGuard uyguladığınız uygulamayı cihaz üzerinde tüm fonksiyonaliteleri ile test etmenizde fayda var. Aksi taktirde beklenmedik etkiler ile karşılaşma ihtimaliniz vardır.

 

3- Uygulamayı Korumak

Geliştirdiğiniz uygulamanın kötü niyetli kişiler tarafından debug edilmesini, decompile edilmesini engellemek için bir takım yöntemler mevcuttur. Bunları şu şekilde sıralayabiliriz.
  • Debugging' i kapatmak
  • Dotfuscator ile uygulamayı korumaya almak
  • Assembly' leri native koda dahil etmek (bundling)
Debugging' i kapatmak için AssemblyInfo.cs dosyasına aşağıdaki kod bloğunu eklemeniz yeterlidir.

xamarin_android_apk_disable_debugging
Bu kod bloğu, uygulama Debug modda iken Debugging' i aktif, Debug modda değilken pasif edecektir.

Visual Studio 2015 Update 3 ve sonrası bir sürüm kullanıyorsanız; PreEmptive Protection - Dotfuscator  ile uygulamanızı korumaya alabilirsiniz.

Kullanmak için
Visual Studio' nun sağ üst köşesinde bulunan Quick Launch' a dotfuscator yazın,

visual_studio_quick_launch
Install kısmında gelen PreEmptive Protection - Dotfuscator seçin,

visual_studio_quick_launch_dotfuscator.png
Gelen pencerede Install' a tıklayın.
preemptive_protection_dotufscator.png
Kurulum tamamlandıktan sonra Visual Studio menüsünden Tools -> PreEmptive Protection - Dotfuscator şeklinde erişebilirsiniz.

visual_studio_menu_tools_preemptive_protection_dotufscator.png
Bu seçim sonrası karşınıza lisans sözleşmesi gelecek, OK' e bastıktan sonra da bir kayıt formu açılacaktır. Kayıt işlemini tamamladıktan sonra mailinize gelen Confirmation Number' ı girerek aşağıdaki ekrana ulaşmış olacaksınız.

preemptive_protection_dotufscator_welcome_page.png
PreEmptive Protection - Dotfuscator ile uygulmanın kodlarını karmaşıklaştırma konusuna sonraki bir makalede detaylı bir şekilde değineceğim.


Assembly' leri native koda dahil etmek için;

Android Xamarin Projesi -> Properties -> Android Options -> Packaging properties altındaki Bundle assemblies into native code seçeneğini işaretlemeniz yeterlidir.

bundle_assemblies_into_native_code

Bu seçenek; assembly' lerin native koda dönüştürüleceği anlamına gelmez, managed assembly' lerin native koda gömülmesini sağlar.

Yine bu konu ile bağlantılı olan AOT (Ahead Of Time) Compilation ve LLVM (Low Level Virtual Machine) başlıklarını Xamarin.Forms Performans ve Açılış Hızlandırma Yöntemleri - Xamarin Serisi Bölüm 3 isimli makalemde inceleyebilirsiniz.  

0 Yorum




page-top