Birçok Delphi Android Yetki Hataları ve Çözümleri
Delphi ve Android 12 Yetkileri Hızlı Çözüm Rehberi
Öncelikle kesinlikle sizlerde bir hata ve kusur bulunmuyor , her şey Google tarafından alınan kararlar ve Embarcadero’nun bu kararlara karşı aldığı veya almadığı seçimler yada kararlarla hatalar oluşuyor.
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;
1
|
< 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.
Android 12 ve üzeri sürümler için AndroidManifest dosyanızda yer alması gereken android:exported özelliğinin yer almaması durumunda yapmanız gerekenler:
- C:\Users\SIZIN_KULLANICI\AppData\Roaming\Embarcadero\BDS\22.0 klasöründe yer alan AndroidManifest.xml dosyasını silin.
- Uygulama kök dizininde yer alan AndroidManifest.template.xml dosyasını silin.
- Delphi 11.2’yi yeniden başlatın.
- Build alın ve AndroidManifest.template.xml dosyasını kontrol edin. Activity node’u içerisinde ilgili exported özelliğinin eklendiğini gördükten sonra yüklemeyi sorunsuz gerçekleştirebilirsiniz.
Delphi 11.2 ile birlikte Android SDK paketini 30+ üzerine taşıdığınız için ApkSigner aracınızın aşağıdaki hatayı fırlatması mümkün.
[PAClient Error] Error: E7176 java.lang.UnsupportedClassVersionError: com/android/apksigner/ApkSignerTool has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0
- Tools > Options > Deployment > SDK Manager bölümüne giriyoruz.
- Sol tarafta Android 32-bit seçeneği altında kalın olan SDK paketini seçiyoruz.
- apksigner.jar location yazan bölümün path’ini şu şekilde güncelliyoruz:
C:\Users\Public\Documents\Embarcadero\Studio\22.0\CatalogRepository\AndroidSDK-2525-22.0.46141.0937\build-tools\32.0.0\lib\apksigner.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\android-support-v4.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\android-support-v4.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-ads-base.17.2.0.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-ads-base.17.2.0.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-ads-identifier.16.0.0.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-ads-lite.17.2.0.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-ads.17.2.0.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-ads.17.2.0.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-analytics-impl.16.0.8.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-analytics.16.0.8.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-analytics.16.0.8.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-base.16.0.1.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-base.16.0.1.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-basement.16.2.0.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-basement.16.2.0.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-gass.17.2.0.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-gass.17.2.0.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-identity.16.0.0.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-identity.16.0.0.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-maps.16.1.0.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-maps.16.1.0.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-measurement-base.16.4.0.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-measurement-sdk-api.16.4.0.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-stats.16.0.1.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-stats.16.0.1.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-tagmanager-v4-impl.16.0.8.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-tasks.16.0.1.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-tasks.16.0.1.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-wallet.16.0.1.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-wallet.16.0.1.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-firebase.firebase-analytics.16.4.0.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-firebase.firebase-analytics.16.4.0.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-firebase.firebase-common.16.1.0.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-firebase.firebase-common.16.1.0.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-firebase.firebase-iid-interop.16.0.1.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-firebase.firebase-iid-interop.16.0.1.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-firebase.firebase-iid.17.1.1.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-firebase.firebase-iid.17.1.1.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-firebase.firebase-measurement-connector.17.0.1.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-firebase.firebase-messaging.17.5.0.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-firebase.firebase-messaging.17.5.0.dex.jar
[PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\google-play-billing.dex.jar:
[PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\google-play-billing.dex.jar
[PAClient Error] Error: E7688 Compilation failed with an internal error.
[PAClient Error] Error: E7688 Exception in thread “main” java.lang.RuntimeException: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\google-play-billing.dex.jar
[PAClient Error] Error: E7688 at com.android.tools.r8.utils.w.a(SourceFile:92)
[PAClient Error] Error: E7688 at com.android.tools.r8.D8.main(D8.java:4)
[PAClient Error] Error: E7688 Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\google-play-billing.dex.jar
[PAClient Error] Error: E7688 at Version.fakeStackEntry(Version_3.0.73.java:0)
[PAClient Error] Error: E7688 at com.android.tools.r8.utils.w.a(SourceFile:68)
[PAClient Error] Error: E7688 at com.android.tools.r8.utils.w.a(SourceFile:28)
[PAClient Error] Error: E7688 at com.android.tools.r8.utils.w.a(SourceFile:27)
[PAClient Error] Error: E7688 at com.android.tools.r8.BaseCommand$Builder.build(BaseCommand.java:2)
[PAClient Error] Error: E7688 at com.android.tools.r8.D8.a(D8.java:4)
[PAClient Error] Error: E7688 at com.android.tools.r8.utils.w.a(SourceFile:84)
[PAClient Error] Error: E7688 … 1 more
[PAClient Error] Error: E7688 Caused by: java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\google-play-billing.dex.jar
[PAClient Error] Error: E7688 at com.android.tools.r8.utils.c$b.d(SourceFile:16)
[PAClient Error] Error: E7688 at com.android.tools.r8.BaseCommand$Builder.e(BaseCommand.java:3)
[PAClient Error] Error: E7688 at com.android.tools.r8.BaseCommand$Builder.a(BaseCommand.java:12)
[PAClient Error] Error: E7688 at com.android.tools.r8.BaseCommand$Builder.addProgramFiles(BaseCommand.java:3)
[PAClient Error] Error: E7688 at com.android.tools.r8.BaseCommand$Builder.addProgramFiles(BaseCommand.java:1)
[PAClient Error] Error: E7688 at com.android.tools.r8.b.a(SourceFile:133)
[PAClient Error] Error: E7688 at com.android.tools.r8.b.a(SourceFile:1)
[PAClient Error] Error: E7688 at com.android.tools.r8.D8Command.parse(D8Command.java:1)
[PAClient Error] Error: E7688 … 3 more
[PAClient Error] Error: E7688 Suppressed: java.lang.RuntimeException: com.android.tools.r8.internal.b: java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\google-play-billing.dex.jar
[PAClient Error] Error: E7688 at com.android.tools.r8.internal.UA.a(SourceFile:25)
[PAClient Error] Error: E7688 at com.android.tools.r8.BaseCommand$Builder.a(BaseCommand.java:3)
[PAClient Error] Error: E7688 at com.android.tools.r8.utils.w.a(SourceFile:24)
[PAClient Error] Error: E7688 at com.android.tools.r8.BaseCommand$Builder.build(BaseCommand.java:2)
[PAClient Error] Error: E7688 … 3 more
[PAClient Error] Error: E7688 Caused by: com.android.tools.r8.internal.b: java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\google-play-billing.dex.jar
[PAClient Error] Error: E7688 at com.android.tools.r8.internal.UA.a(SourceFile:14)
[PAClient Error] Error: E7688 at com.android.tools.r8.internal.UA.error(SourceFile:1)
[PAClient Error] Error: E7688 at com.android.tools.r8.utils.c$b.d(SourceFile:17)
[PAClient Error] Error: E7688 at com.android.tools.r8.BaseCommand$Builder.e(BaseCommand.java:3)
[PAClient Error] Error: E7688 at com.android.tools.r8.BaseCommand$Builder.a(BaseCommand.java:12)
[PAClient Error] Error: E7688 at com.android.tools.r8.BaseCommand$Builder.addProgramFiles(BaseCommand.java:3)
[PAClient Error] Error: E7688 at com.android.tools.r8.BaseCommand$Builder.addProgramFiles(BaseCommand.java:1)
[PAClient Error] Error: E7688 at com.android.tools.r8.b.a(SourceFile:133)
[PAClient Error] Error: E7688 at com.android.tools.r8.b.a(SourceFile:1)
[PAClient Error] Error: E7688 at com.android.tools.r8.D8Command.parse(D8Command.java:1)
[PAClient Error] Error: E7688 … 3 more
[PAClient Error] Error: E7688 [CIRCULAR REFERENCE:java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\google-play-billing.dex.jar]
Failed
Elapsed time: 00:00:27.4
Çözüm :
- projeAdi.dproj dosyasını bir text editor içerisinde açın.
- <EnabledSysJars></EnabledSysJars> etiketlerini bulun ve gövde içeriğini boşaltın. (<EnabledSysJars></EnabledSysJars> bu şekilde kalsın)
- Dosyayı kaydedin. Delphi 11.2’yi kapatıp yeniden açın.
- Sorunsuz bir şekilde build alabilirsiniz.
Delphi 10.3.3 ile sorunsuz bir şekilde çalışan SQLite x64 desteği, Delphi 10.4 (ve 10.4.1) ile birlikte problem oluşturmaktadır. Uygulamada SQLite’a erişmek istediğiniz bir form açıldığı anda sizi aşağıdaki hata karşılayacaktır.
[FireDAC][Phys][SQLite]-314. Cannot load vendor library [libsqlite.so or libdb_sql.so]. Hint: check it is in the PATH or application EXE directories, and has x86 bitness.
Çözüm Yöntemi ve Çözümü
Uygulamanın SQLite kütüphanelerini sorunsuz şekilde görmesi sayesinde başarılı bir derleme alabiliyorsanız, hatanızın tek kaynağı FireDAC’in SQLite için oluşturduğu Wrapper sınıfından kaynaklı olmasıdır.
Çözümü oldukça basit. FireDAC.Phys.SQLiteWrapper.Stat sınıfını ilgili formunuzun uses bölümüne ekleyin.
Uygulamanızı derlediğiniz zaman Android x64 için sorunsuz bir şekilde derlendiğini göreceksiniz.