MehmetX.com | Xamarin - Android APK Oluşturma - Diğer Detaylar
22.10.2017 00:32:37 | Okunma Sayisi : 1757 | 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.
Bu ikonu değiştirmek için 3 yöntem kullanabilirsiniz.
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.
İ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")]
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.
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.
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)
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.
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).
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.
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.
Visual Studio' nun sağ üst köşesinde bulunan Quick Launch' a dotfuscator yazın,
Install kısmında gelen PreEmptive Protection - Dotfuscator seçin,
Gelen pencerede Install' a tıklayın.
Kurulum tamamlandıktan sonra Visual Studio menüsünden Tools -> PreEmptive Protection - Dotfuscator şeklinde erişebilirsiniz.
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 - 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.
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.