16-01-2023, Saat: 01:52
(Son Düzenleme: 08-03-2023, Saat: 09:59, Düzenleyen: Abdullah ILGAZ.)
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
Mart 2023 Update:
Delphi'nin güncel bir sürümde üretilen projeniz varsa 4. adımda yer alan manifest dosyası, projenin kökdizininde yer alan AndroidManifest.template.xml baz alınarak üretiliyor. Bu dosyayı silip bir build alın. Sonra bu dosyanın içinde özelleştirmelerinizi gerçekleştirip gerçek build'i alın.
Örnek özelleştirme:
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Delphi ve Android 12 Yetkileri Hızlı Çözüm Rehberi
Öncelikle belirtmeliyim ki, ne sizde, ne uygulamanızda bir eksik yada kusur bulunmuyor. Her şey Google tarafından alınan radikal kararlar ve Embarcadero'nun bu kararlara karşı aldığı veya almadığı aksiyon yada kadarlarla ilgili.
1) Android 12 için API Level 30'un üstüne çıkmanız gerekiyor ve hali hazırda bir aab bundle dosyası üreterek yaşam döngüsünü tamamlayabiliyorsunuz.
2) Uygulamanızın kökdizinine üretilen AndroidManifest.xml dosyasını silin. Bu dosyanın baz alındığı template, eski sürümlerinizden geldiği için başınızı ağrıtacaktır.
3) AppData > Roaming > Embarcadero dizininde yer alan AndroidManifestTemplate dosyasını düzenleyerek;
Şeklinde ihtiyacınız olan yetki tanımını eklemeniz gerekiyor.
4) Eğer <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" /> bu şekilde bir kayıt varsa Sdk Level 30 sizin için sorun oluşturacaktır. Çünkü Android 12 için 30+ bir Sdk Level gerekiyor.
5) Project > Options içinde yaptığınız permission taleplerinizi iptal etmelisiniz. Böylelikle Embarcadero'nun kendi belirlediği maxSdkVersion 30 kuralını devredışı bırakarak kendimiz ezmiş olacağız.
6) Son olarak Dproj dosyasında eski sürümlerden gelen jar sürüm bağımlılıkları var. Bunları da uçurmanız gerekiyor ki sağlıklı derleme alabilin. <EnabledSysJars></EnabledSysJars> şeklinde içini boşalttıktan sonra sorunsuz bir şekilde uygulamalarınızı 2023 model Google Play Store'a gönderebilirsiniz.
Tebrikler!
Ayrıca Bakınız:
[Çözümlü] Delphi 11.2 ile Google Play'e uygulama yükleme hatası (android:exported)
[Çözümlü] Delphi 11.2 ile Android 32-bit ApkSignerTool hatası
[Çözümlü] Delphi 11.2 güncellemesi sonrası android-support-v4.dex.jar hatası
Delphi 10.4.1 Sydney ile Android 64-Bit uygulamada SQLite Hatası ve Çözümü
Mart 2023 Update:
Delphi'nin güncel bir sürümde üretilen projeniz varsa 4. adımda yer alan manifest dosyası, projenin kökdizininde yer alan AndroidManifest.template.xml baz alınarak üretiliyor. Bu dosyayı silip bir build alın. Sonra bu dosyanın içinde özelleştirmelerinizi gerçekleştirip gerçek build'i alın.
Örnek özelleştirme:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="%package%" android:versionCode="%versionCode%" android:versionName="%versionName%" android:installLocation="%installLocation%"> <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" /> <%uses-permission%> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> <uses-permission android:name="android.permission.BLUETOOTH_SCAN" /> <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <queries> <%queries-child-elements%> </queries> <application android:persistent="%persistent%"
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Delphi ve Android 12 Yetkileri Hızlı Çözüm Rehberi
Öncelikle belirtmeliyim ki, ne sizde, ne uygulamanızda bir eksik yada kusur bulunmuyor. Her şey Google tarafından alınan radikal kararlar ve Embarcadero'nun bu kararlara karşı aldığı veya almadığı aksiyon yada kadarlarla ilgili.
1) Android 12 için API Level 30'un üstüne çıkmanız gerekiyor ve hali hazırda bir aab bundle dosyası üreterek yaşam döngüsünü tamamlayabiliyorsunuz.
2) Uygulamanızın kökdizinine üretilen AndroidManifest.xml dosyasını silin. Bu dosyanın baz alındığı template, eski sürümlerinizden geldiği için başınızı ağrıtacaktır.
3) AppData > Roaming > Embarcadero dizininde yer alan AndroidManifestTemplate dosyasını düzenleyerek;
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" android:usesPermissionFlags="neverForLocation" />
Şeklinde ihtiyacınız olan yetki tanımını eklemeniz gerekiyor.
4) Eğer <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" /> bu şekilde bir kayıt varsa Sdk Level 30 sizin için sorun oluşturacaktır. Çünkü Android 12 için 30+ bir Sdk Level gerekiyor.
5) Project > Options içinde yaptığınız permission taleplerinizi iptal etmelisiniz. Böylelikle Embarcadero'nun kendi belirlediği maxSdkVersion 30 kuralını devredışı bırakarak kendimiz ezmiş olacağız.
6) Son olarak Dproj dosyasında eski sürümlerden gelen jar sürüm bağımlılıkları var. Bunları da uçurmanız gerekiyor ki sağlıklı derleme alabilin. <EnabledSysJars></EnabledSysJars> şeklinde içini boşalttıktan sonra sorunsuz bir şekilde uygulamalarınızı 2023 model Google Play Store'a gönderebilirsiniz.
Tebrikler!
Ayrıca Bakınız:
[Çözümlü] Delphi 11.2 ile Google Play'e uygulama yükleme hatası (android:exported)
[Çözümlü] Delphi 11.2 ile Android 32-bit ApkSignerTool hatası
[Çözümlü] Delphi 11.2 güncellemesi sonrası android-support-v4.dex.jar hatası
Delphi 10.4.1 Sydney ile Android 64-Bit uygulamada SQLite Hatası ve Çözümü