16-01-2023, Saat: 01:51
(Son Düzenleme: 16-01-2023, Saat: 01:55, Düzenleyen: Abdullah ILGAZ.
Sebep: Delphi ve Android 12 Yetkileri Hızlı Çözüm Rehberi ayrı konu başlığına taşındı.
)
Anahtar kelimeler / Keywords: Delphi, FMX, FireMonkey, Mobil, Uygulama, Android, Platform, Bluetooth, Printer, Yazıcı, Version, Versiyon, Permission, Yetki, İzin, Hata, Problem, Issue, Bug, Fix, Delphi Android Bluetooth Printing, Delphi Android 12 Bluetooth Permissions, Bluetooth Permission for Android 12 with Delphi Android
Merhaba,
Konu ile ilgili ortak acıları paylaştığım kullanıcılara erişmek ve duyguları paylaşmak için küçük bir maintenance hikayesi oluşturdum. Eğer doğrudan sonuca gitmek istiyorsanız bu bölümü atlayın ve Delphi ve Android 12 Yetkileri Hızlı Çözüm Rehberi bölümünü inceleyin.
İyi okumalar.
Delphi XE5'ten Delphi 11.2'e Android Geliştirme ve Maintenance Hikayesi
Delphi XE2(Eylül 2011)'nin duyurulması ile birlikte Delphi nihayet 2000-2006 yıllarındaki istikrarına hızlı tırmanışla geri dönmüştü. Üstelik AWS ve Microsoft Azure destekleri, REST desteği, command-line araçlar-dokümantasyon vs, Delphi Prism, RadPHP ve yeni kütüphane FireMonkey. Artık eski VCL uygulamalarını FireMonkey tabanına taşıyıp iPhone, iPod Touch, iPad gibi cihazlarda çalıştırabilecek, Windows dışında da MacOS üzerinde uygulamalar yapabilecektik. Yine bu sürüm, Windows 64'e native desteğin geldiği ilk sürüm olmuştu.
Heyecanlı bekleyiş sürerken peşpeşe XE3(Eylül 2012), XE4(Nisan 2013) ve XE5(Eylül 2013) çıkageldi. XE5, teknik olarak Android'e doğrudan destek verilen ilk sürüm oldu. İlk çıktıları aldığım akıllı telefonum HTC Wildfire S ise Android 2.3 sürümündeydi. İlk Google Play Console deneyimimi de aynı zamanda gerçekleştirmiştim. (Bkz: Gaz Lambası, son güncellenme tarihi 21 Eki 2013)
O günlerde Android 2.3 sonrasında hızlı bir şekilde Android 4.0.3 ve 4.1-4.2-4.3 destekleri peşpeşe XE5'e gelmişti.
Geliştirdiğim ilk kurumsal uygulamalar 4.0.3 ve 4.3 sürümlerinde uzun süre çalıştı. Birkaç küçük konfigürasyon ile 5.0 ile de çalıştılar. Ne zaman ki Android Marshmallow (6.0) ortaya çıktı, işler biraz karışmaya başladı. Her şey Idera çatısı altına geçiş yapıldıktan sonra farklı bir çizgiye evrildi.
Idera ile çıkan ilk sürüm 10.1 Berlin (Nisan 2016) oldu. Ne yazık ki Delphi XE5'ten XE8'e geçmiş olan ben ve benim gibi kullanıcıların uygulamalarını indiren kullanıcılar desteklenmeyen sürüm uyarısı ile karşılaştılar ve XE8'e bir patch gelmeyeceğini, 10.1'e yükseltilmesi gerektiğini öğrendi.
10.1 Berlin (Nisan 2016)'i satın aldıktan sonra XE8 ve öncesinde oluşturulan dproj dosyaları hata üretmeye başladı ve File > New Project ile ilerleyip projenin içeriğini taşımak dışında bir yöntem geliştirilemedi.
10.3 Rio (Kasım 2018) sürecinde de API Level 26 desteği tanıtıldı. Yine aynı şekilde alt sürümlerde daha ileriye gitme imkanı sağlanmadı. Buna karşın, 10.3.3 (Kasım 2019) ile birlikte Android 64 bit hayatımıza girdi ve yakın zamanda Google politikaları hızla değişmeye başladı. Önce Dev Console içinde anketler, tanımlamalar, uygulama kapsamı, hedef kitlesi, yayınlanacak ülkeler, sağladığı harici entegrasyonlar derken kapalı devre uygulamalarda test için giriş bilgileri taleplerine evrildi. En son ülke bazında vergilendirme politikaları ile faal bir şekilde Dev Console yöneticiliği yapılması gerekir bir hale geldi.
İşte buraya kadar okuduklarınız çoğu kişinin internette okuyup bulabileceği veya bizzat kendisinin yaşadığı süreçleri anlatan kısa bir hikayeydi. Bundan sonrasında ise çok daha tuhaf bir şey ile karşılaştım.
Android 12
Bu arkadaş ne kendisinden öncekilere benziyordu, ne de kendinden sonra gelenler ona benzeyecek. Tüm google yetkilendirme politikalarının değiştiği ve Apple çizgisine kaydığı, politikalar değişirken de yazılı kuralları manipüle ederek geliştiricilere haddinden fazla yük çıkartan bir sürüm oldu.
Bir Delphi Android geliştiricisine ne gibi zararları oldu? derseniz, buyurun:
- Android JNI Wrapper API Level daha düşük olduğu için Android 11 ve altı sürümlerde uygulanan yetki politikaları geçerli oldu. Bu durum, Android 12 kullanıcılarına has runtime'da alınması gereken yetkilendirme stratejisi ile sizi çelişkiye sürükledi.
- AndroidManifest.xml dosyasının ürettiği uses-permissions etiketleri ise MaxVersion gibi özellikleri ile API Level 30'a kendisini sabitledi.
Sonuç olarak, Android 4.0.3'te yazdığım ve zaman içerisinde 5-6-7-8-9-10 ve 11 sürümlerinde sorunsuz çalıştırmayı başardığım harici entegrasyonlar (bluetooth printer, web service, dosya erişimleri vb.) Android 12 sürümünde hatalar üretmeye başladı. Konunun temeline indiğimde ise çok farklı şeylerle karşılaştım.
İşte bunlarla benden sonra karşılaşanların bu curcunada boğulmaması için hap bilgi niteliğinde Android 12 ile Bluetooth ve benzeri yetki yapısı revize gören işlemlerle geliştirme yapan arkadaşların problemleri en hızlı aşabileceği Delphi ve Android 12 Yetkileri Hızlı Çözüm Rehberi'ni oluşturmaya karar verdim.
Bu konunun sizlere faydalı olmasını temenni ediyorum.
Delphi ve Android 12 Yetkileri Hızlı Çözüm Rehberi
Merhaba,
Konu ile ilgili ortak acıları paylaştığım kullanıcılara erişmek ve duyguları paylaşmak için küçük bir maintenance hikayesi oluşturdum. Eğer doğrudan sonuca gitmek istiyorsanız bu bölümü atlayın ve Delphi ve Android 12 Yetkileri Hızlı Çözüm Rehberi bölümünü inceleyin.
İyi okumalar.
Delphi XE5'ten Delphi 11.2'e Android Geliştirme ve Maintenance Hikayesi
Delphi XE2(Eylül 2011)'nin duyurulması ile birlikte Delphi nihayet 2000-2006 yıllarındaki istikrarına hızlı tırmanışla geri dönmüştü. Üstelik AWS ve Microsoft Azure destekleri, REST desteği, command-line araçlar-dokümantasyon vs, Delphi Prism, RadPHP ve yeni kütüphane FireMonkey. Artık eski VCL uygulamalarını FireMonkey tabanına taşıyıp iPhone, iPod Touch, iPad gibi cihazlarda çalıştırabilecek, Windows dışında da MacOS üzerinde uygulamalar yapabilecektik. Yine bu sürüm, Windows 64'e native desteğin geldiği ilk sürüm olmuştu.
Heyecanlı bekleyiş sürerken peşpeşe XE3(Eylül 2012), XE4(Nisan 2013) ve XE5(Eylül 2013) çıkageldi. XE5, teknik olarak Android'e doğrudan destek verilen ilk sürüm oldu. İlk çıktıları aldığım akıllı telefonum HTC Wildfire S ise Android 2.3 sürümündeydi. İlk Google Play Console deneyimimi de aynı zamanda gerçekleştirmiştim. (Bkz: Gaz Lambası, son güncellenme tarihi 21 Eki 2013)
O günlerde Android 2.3 sonrasında hızlı bir şekilde Android 4.0.3 ve 4.1-4.2-4.3 destekleri peşpeşe XE5'e gelmişti.
Geliştirdiğim ilk kurumsal uygulamalar 4.0.3 ve 4.3 sürümlerinde uzun süre çalıştı. Birkaç küçük konfigürasyon ile 5.0 ile de çalıştılar. Ne zaman ki Android Marshmallow (6.0) ortaya çıktı, işler biraz karışmaya başladı. Her şey Idera çatısı altına geçiş yapıldıktan sonra farklı bir çizgiye evrildi.
Idera ile çıkan ilk sürüm 10.1 Berlin (Nisan 2016) oldu. Ne yazık ki Delphi XE5'ten XE8'e geçmiş olan ben ve benim gibi kullanıcıların uygulamalarını indiren kullanıcılar desteklenmeyen sürüm uyarısı ile karşılaştılar ve XE8'e bir patch gelmeyeceğini, 10.1'e yükseltilmesi gerektiğini öğrendi.
10.1 Berlin (Nisan 2016)'i satın aldıktan sonra XE8 ve öncesinde oluşturulan dproj dosyaları hata üretmeye başladı ve File > New Project ile ilerleyip projenin içeriğini taşımak dışında bir yöntem geliştirilemedi.
10.3 Rio (Kasım 2018) sürecinde de API Level 26 desteği tanıtıldı. Yine aynı şekilde alt sürümlerde daha ileriye gitme imkanı sağlanmadı. Buna karşın, 10.3.3 (Kasım 2019) ile birlikte Android 64 bit hayatımıza girdi ve yakın zamanda Google politikaları hızla değişmeye başladı. Önce Dev Console içinde anketler, tanımlamalar, uygulama kapsamı, hedef kitlesi, yayınlanacak ülkeler, sağladığı harici entegrasyonlar derken kapalı devre uygulamalarda test için giriş bilgileri taleplerine evrildi. En son ülke bazında vergilendirme politikaları ile faal bir şekilde Dev Console yöneticiliği yapılması gerekir bir hale geldi.
İşte buraya kadar okuduklarınız çoğu kişinin internette okuyup bulabileceği veya bizzat kendisinin yaşadığı süreçleri anlatan kısa bir hikayeydi. Bundan sonrasında ise çok daha tuhaf bir şey ile karşılaştım.
Android 12
Bu arkadaş ne kendisinden öncekilere benziyordu, ne de kendinden sonra gelenler ona benzeyecek. Tüm google yetkilendirme politikalarının değiştiği ve Apple çizgisine kaydığı, politikalar değişirken de yazılı kuralları manipüle ederek geliştiricilere haddinden fazla yük çıkartan bir sürüm oldu.
Bir Delphi Android geliştiricisine ne gibi zararları oldu? derseniz, buyurun:
- Android JNI Wrapper API Level daha düşük olduğu için Android 11 ve altı sürümlerde uygulanan yetki politikaları geçerli oldu. Bu durum, Android 12 kullanıcılarına has runtime'da alınması gereken yetkilendirme stratejisi ile sizi çelişkiye sürükledi.
- AndroidManifest.xml dosyasının ürettiği uses-permissions etiketleri ise MaxVersion gibi özellikleri ile API Level 30'a kendisini sabitledi.
Sonuç olarak, Android 4.0.3'te yazdığım ve zaman içerisinde 5-6-7-8-9-10 ve 11 sürümlerinde sorunsuz çalıştırmayı başardığım harici entegrasyonlar (bluetooth printer, web service, dosya erişimleri vb.) Android 12 sürümünde hatalar üretmeye başladı. Konunun temeline indiğimde ise çok farklı şeylerle karşılaştım.
İşte bunlarla benden sonra karşılaşanların bu curcunada boğulmaması için hap bilgi niteliğinde Android 12 ile Bluetooth ve benzeri yetki yapısı revize gören işlemlerle geliştirme yapan arkadaşların problemleri en hızlı aşabileceği Delphi ve Android 12 Yetkileri Hızlı Çözüm Rehberi'ni oluşturmaya karar verdim.
Bu konunun sizlere faydalı olmasını temenni ediyorum.
Delphi ve Android 12 Yetkileri Hızlı Çözüm Rehberi