Xamarin - Android APK Oluşturma - Diğer Detaylar
22.10.2017 00:32:37 | Okunma Sayisi : 9301 | 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.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.
İ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.
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.
- 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.
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).
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)
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,
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.
0 Yorum