Yorumları: 300
Konuları: 93
Kayıt Tarihi: 17-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 353 Acemi
(29-03-2021, Saat: 22:06)savasabd Adlı Kullanıcıdan Alıntı: Site yönetimi açısından bir sıkıntı olur mu bilmiyorum ama buyrun:
The reported issue (a segmentation fault raised after an attempt to call the 'u_strFromUTF8WithSub' ICU function) has not been reproduced before due to the fact that, an application that has the value of the 'targetSdkVersion' manifest attribute lesser than/equal to '28' runs on 'compatibility mode' on an 'Android 10.0' device [1]:
Alıntı:Also for app compatibility, the linker redirects absolute paths to ICU libraries in dlopen() calls, i.e. 'dlopen("/system/lib/libicuuc.so", ...)' and 'dlopen("/system/lib/libicui18n.so", ...)', redirect to the corresponding libraries in '/apex/com.android.runtime/lib/' for apps with 'targetSdkVersion < 29'.
After changing the value of the 'targetSdkVersion' attribute to '29', an application no longer runs on the mentioned 'compatibility mode' and, therefore, the 'dynamic linker' fails to load the 'ICU' libraries (these libraries are used in the implementation of helper methods for string handling). There is an important axiom that is valid for devices running an Android version greater than/equal to '5.0':
Alıntı:Calls to the 'dlopen' function should pass as first parameter a 'library name' instead of a 'library absolute path'.
BUG FIX
Please the bug provided here is aimed to update the uses of the 'dlopen' function in the 'ICU.inc' file (it is included into the 'System.pas' one) according to the above Android axiom. These are the steps needed to address the reported issue:
- Open the 'Windows Explorer' application.
- On the 'Windows Explorer' application...
- Navigate to the 'C:\Program Files (x86)\Embarcadero\Studio\20.0\source' folder.
- Copy the files from the 'missing_source_files.zip' attachment [1] to the current folder.
- Navigate to the 'C:\Program Files (x86)\Embarcadero\Studio\20.0\source\rtl\sys' folder.
- Open the 'ICU.inc' file in a text editor application (please backup the original version of the 'ICU.inc' file for safety purposes).
- On the text editor application...
- Change the definition of the 'InitICU' global function:
From
function InitICU: Boolean;
...
begin
ICUVersionNumber := -1;
Result := False;
{$IFDEF MACOS}
HICUUC := dlopen('/usr/lib/libicucore.dylib', RTLD_LAZY);
HICUI18N := HICUUC;
{$ELSEIF defined(LINUX)}
HICUUC := OpenICU_Lib('libicuuc.so');
HICUI18N := OpenICU_Lib('libicui18n.so');
{$ELSEIF defined(ANDROID32)}
HICUUC := dlopen('/system/lib/libicuuc.so', RTLD_LAZY);
HICUI18N := dlopen('/system/lib/libicui18n.so', RTLD_LAZY);
{$ELSE defined(ANDROID64)}
HICUUC := dlopen('/system/lib64/libicuuc.so', RTLD_LAZY);
HICUI18N := dlopen('/system/lib64/libicui18n.so', RTLD_LAZY);
{$ENDIF}
...
end;
To
function InitICU: Boolean; ... begin ICUVersionNumber := -1; Result := False;{$IFDEF MACOS} HICUUC := dlopen('/usr/lib/libicucore.dylib', RTLD_LAZY); HICUI18N := HICUUC;{$ELSEIF defined(LINUX)} HICUUC := OpenICU_Lib('libicuuc.so'); HICUI18N := OpenICU_Lib('libicui18n.so');{$ELSE defined(ANDROID)} HICUUC := dlopen('libicuuc.so', RTLD_LAZY); HICUI18N := dlopen('libicui18n.so', RTLD_LAZY);{$ENDIF} ... end;
- Save the changes done to the 'ICU.inc' file.
- Switch back to the 'Windows Explorer' application.
- Navigate to the '%USERPROFILE%' folder.
- Copy the 'build.bat' file from the 'build_script.zip' attachment [2] to the current folder.
- NOTE: Running that script causes the build artifacts from the compilation of the 'System' unit to be created in the '%USERPROFILE%\build' folder. Please use the 'OUTPUT_PATH' variable to change the path to those build artifacts. The changes done to the 'ICU.inc' file are not supposed to break the DCU compatibility of the 'System' unit and, therefore, the only build artifact that interests here is the 'System.o' file.
- Run the 'build.bat' file.
- Switch back to the 'Windows Explorer' application.
- Navigate to the 'C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android\debug' folder.
- Copy the 'System.o' file from the '%USERPROFILE%\build\android\debug' folder to the current folder (please backup the original version of the 'System.o' file for safety purposes).
- Navigate to the 'C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android\release' folder.
- Copy the 'System.o' file from the '%USERPROFILE%\build\android\release' folder to the current folder (please backup the original version of the 'System.o' file for safety purposes).
- Navigate to the 'C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android64\debug' folder.
- Copy the 'System.o' file from the '%USERPROFILE%\build\android64\debug' folder to the current folder (please backup the original version of the 'System.o' file for safety purposes).
- Navigate to the 'C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android64\release' folder.
- Copy the 'System.o' file from the '%USERPROFILE%\build\android64\release' folder to the current folder (please backup the original version of the 'System.o' file for safety purposes).
Please let me know if the mentioned steps are not addressing the reported issue.
Thankfully,
Horácio Filho
Yukarda bahsettiği dosyalar ekte.
Merhaba
Bu işlemi yaptıktan sonra SDK ayarlarını yeniden yükleyince yine android 11 üzerine debug yapamadım. "App not Installed." hatası alıyorum.
Son sdk manager sayfası görünümü şu şekilde:
APi 30 dosyalarını internetten indirip api leveli api 30 klasörü olarak gösterdim. tüm işlemleri tekrar yaptım.
"App not installed" hatası almaya devam ediyorum. Ne tavsiye edersiniz?
İyi çalışmalar.
Yorumları: 357
Konuları: 30
Kayıt Tarihi: 10-07-2017
Aktif Kullandığınız Delphi Sürümü:
- Delphi 10.3
- Lazarus / FPC
Rep Puanı: 4.215 Uzman
(15-04-2021, Saat: 21:02)41linea41 Adlı Kullanıcıdan Alıntı: (29-03-2021, Saat: 22:06)savasabd Adlı Kullanıcıdan Alıntı: Site yönetimi açısından bir sıkıntı olur mu bilmiyorum ama buyrun:
The reported issue (a segmentation fault raised after an attempt to call the 'u_strFromUTF8WithSub' ICU function) has not been reproduced before due to the fact that, an application that has the value of the 'targetSdkVersion' manifest attribute lesser than/equal to '28' runs on 'compatibility mode' on an 'Android 10.0' device [1]:
After changing the value of the 'targetSdkVersion' attribute to '29', an application no longer runs on the mentioned 'compatibility mode' and, therefore, the 'dynamic linker' fails to load the 'ICU' libraries (these libraries are used in the implementation of helper methods for string handling). There is an important axiom that is valid for devices running an Android version greater than/equal to '5.0':
BUG FIX
Please the bug provided here is aimed to update the uses of the 'dlopen' function in the 'ICU.inc' file (it is included into the 'System.pas' one) according to the above Android axiom. These are the steps needed to address the reported issue:
- Open the 'Windows Explorer' application.
- On the 'Windows Explorer' application...
- Navigate to the 'C:\Program Files (x86)\Embarcadero\Studio\20.0\source' folder.
- Copy the files from the 'missing_source_files.zip' attachment [1] to the current folder.
- Navigate to the 'C:\Program Files (x86)\Embarcadero\Studio\20.0\source\rtl\sys' folder.
- Open the 'ICU.inc' file in a text editor application (please backup the original version of the 'ICU.inc' file for safety purposes).
- On the text editor application...
- Change the definition of the 'InitICU' global function:
From
function InitICU: Boolean;
...
begin
ICUVersionNumber := -1;
Result := False;
{$IFDEF MACOS}
HICUUC := dlopen('/usr/lib/libicucore.dylib', RTLD_LAZY);
HICUI18N := HICUUC;
{$ELSEIF defined(LINUX)}
HICUUC := OpenICU_Lib('libicuuc.so');
HICUI18N := OpenICU_Lib('libicui18n.so');
{$ELSEIF defined(ANDROID32)}
HICUUC := dlopen('/system/lib/libicuuc.so', RTLD_LAZY);
HICUI18N := dlopen('/system/lib/libicui18n.so', RTLD_LAZY);
{$ELSE defined(ANDROID64)}
HICUUC := dlopen('/system/lib64/libicuuc.so', RTLD_LAZY);
HICUI18N := dlopen('/system/lib64/libicui18n.so', RTLD_LAZY);
{$ENDIF}
...
end;
To
function InitICU: Boolean; ... begin ICUVersionNumber := -1; Result := False;{$IFDEF MACOS} HICUUC := dlopen('/usr/lib/libicucore.dylib', RTLD_LAZY); HICUI18N := HICUUC;{$ELSEIF defined(LINUX)} HICUUC := OpenICU_Lib('libicuuc.so'); HICUI18N := OpenICU_Lib('libicui18n.so');{$ELSE defined(ANDROID)} HICUUC := dlopen('libicuuc.so', RTLD_LAZY); HICUI18N := dlopen('libicui18n.so', RTLD_LAZY);{$ENDIF} ... end;
- Save the changes done to the 'ICU.inc' file.
- Switch back to the 'Windows Explorer' application.
- Navigate to the '%USERPROFILE%' folder.
- Copy the 'build.bat' file from the 'build_script.zip' attachment [2] to the current folder.
- NOTE: Running that script causes the build artifacts from the compilation of the 'System' unit to be created in the '%USERPROFILE%\build' folder. Please use the 'OUTPUT_PATH' variable to change the path to those build artifacts. The changes done to the 'ICU.inc' file are not supposed to break the DCU compatibility of the 'System' unit and, therefore, the only build artifact that interests here is the 'System.o' file.
- Run the 'build.bat' file.
- Switch back to the 'Windows Explorer' application.
- Navigate to the 'C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android\debug' folder.
- Copy the 'System.o' file from the '%USERPROFILE%\build\android\debug' folder to the current folder (please backup the original version of the 'System.o' file for safety purposes).
- Navigate to the 'C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android\release' folder.
- Copy the 'System.o' file from the '%USERPROFILE%\build\android\release' folder to the current folder (please backup the original version of the 'System.o' file for safety purposes).
- Navigate to the 'C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android64\debug' folder.
- Copy the 'System.o' file from the '%USERPROFILE%\build\android64\debug' folder to the current folder (please backup the original version of the 'System.o' file for safety purposes).
- Navigate to the 'C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android64\release' folder.
- Copy the 'System.o' file from the '%USERPROFILE%\build\android64\release' folder to the current folder (please backup the original version of the 'System.o' file for safety purposes).
Please let me know if the mentioned steps are not addressing the reported issue.
Thankfully,
Horácio Filho
Yukarda bahsettiği dosyalar ekte.
Merhaba
Bu işlemi yaptıktan sonra SDK ayarlarını yeniden yükleyince yine android 11 üzerine debug yapamadım. "App not Installed." hatası alıyorum.
Son sdk manager sayfası görünümü şu şekilde:
APi 30 dosyalarını internetten indirip api leveli api 30 klasörü olarak gösterdim. tüm işlemleri tekrar yaptım.
"App not installed" hatası almaya devam ediyorum. Ne tavsiye edersiniz?
İyi çalışmalar.
NDK ayarlarını da yaptığınızı varsayarak, bu tür durumlar farklı bir sertifika ile uygulama imzalandığında olur genellikle, telefondan uygulamayı önce de belirttiğim şekilde temizleyin ve projeyi de temizleyin (projeye sağ tıklayıp clean'a basarak) hatta Debug klasörünü kontrol edip dosya varsa silin ve tekrar deneyin.
Yorumları: 152
Konuları: 11
Kayıt Tarihi: 04-08-2016
Rep Puanı: 333 Acemi
(15-04-2021, Saat: 21:02)41linea41 Adlı Kullanıcıdan Alıntı: (29-03-2021, Saat: 22:06)savasabd Adlı Kullanıcıdan Alıntı: Site yönetimi açısından bir sıkıntı olur mu bilmiyorum ama buyrun:
The reported issue [color=gray].......
Merhaba
Bu işlemi yaptıktan sonra SDK ayarlarını yeniden yükleyince yine android 11 üzerine debug yapamadım. "App not Installed." hatası alıyorum.
Son sdk manager sayfası görünümü şu şekilde:
APi 30 dosyalarını internetten indirip api leveli api 30 klasörü olarak gösterdim. tüm işlemleri tekrar yaptım.
"App not installed" hatası almaya devam ediyorum. Ne tavsiye edersiniz?
İyi çalışmalar.
Merhaba; SDK API Level Location kısmında Android-11 olarak yazıyor, normalde Api 30 yüklediğinizi söylemiştiniz, Android-30 olması gerekmiyor mu?
Ayrıca kendimde devam eden sorunu herkese belirteyim belki yardım alabilirim.
Delphi 10.4.2 indirip kurdum ancak Android 11 de çalışmadı, Tekrar 10.3 kurup ilgili düzeltmeyi yaptım ancak yine de projeye ait AndroidManifest.xml hedef SDK seviyesi 28 den yukarı çıkmıyor. Bu 10.4.2'de de aynı şekildeydi. Nerede hata yapıyor olabilirim?, bu sorunu nasıl çözebilirim veya nasıl bir yol izlemem gerekli?
Yorumları: 357
Konuları: 30
Kayıt Tarihi: 10-07-2017
Aktif Kullandığınız Delphi Sürümü:
- Delphi 10.3
- Lazarus / FPC
Rep Puanı: 4.215 Uzman
25-04-2021, Saat: 08:44
(Son Düzenleme: 25-04-2021, Saat: 08:44, Düzenleyen: savasabd.)
(25-04-2021, Saat: 03:16)10.Köy Adlı Kullanıcıdan Alıntı: (15-04-2021, Saat: 21:02)41linea41 Adlı Kullanıcıdan Alıntı: Merhaba
Bu işlemi yaptıktan sonra SDK ayarlarını yeniden yükleyince yine android 11 üzerine debug yapamadım. "App not Installed." hatası alıyorum.
Son sdk manager sayfası görünümü şu şekilde:
APi 30 dosyalarını internetten indirip api leveli api 30 klasörü olarak gösterdim. tüm işlemleri tekrar yaptım.
"App not installed" hatası almaya devam ediyorum. Ne tavsiye edersiniz?
İyi çalışmalar.
Merhaba; SDK API Level Location kısmında Android-11 olarak yazıyor, normalde Api 30 yüklediğinizi söylemiştiniz, Android-30 olması gerekmiyor mu?
Ayrıca kendimde devam eden sorunu herkese belirteyim belki yardım alabilirim.
Delphi 10.4.2 indirip kurdum ancak Android 11 de çalışmadı, Tekrar 10.3 kurup ilgili düzeltmeyi yaptım ancak yine de projeye ait AndroidManifest.xml hedef SDK seviyesi 28 den yukarı çıkmıyor. Bu 10.4.2'de de aynı şekildeydi. Nerede hata yapıyor olabilirim?, bu sorunu nasıl çözebilirim veya nasıl bir yol izlemem gerekli?
AndroidManifest.template.xml dosyasındaki ilgili satırı aşağıdaki gibi (hedef sdk'ya göre) kendiniz değiştirin.
<uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="29" />
Yorumları: 300
Konuları: 93
Kayıt Tarihi: 17-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 353 Acemi
(25-04-2021, Saat: 03:16)10.Köy Adlı Kullanıcıdan Alıntı: (15-04-2021, Saat: 21:02)41linea41 Adlı Kullanıcıdan Alıntı: Merhaba
Bu işlemi yaptıktan sonra SDK ayarlarını yeniden yükleyince yine android 11 üzerine debug yapamadım. "App not Installed." hatası alıyorum.
Son sdk manager sayfası görünümü şu şekilde:
APi 30 dosyalarını internetten indirip api leveli api 30 klasörü olarak gösterdim. tüm işlemleri tekrar yaptım.
"App not installed" hatası almaya devam ediyorum. Ne tavsiye edersiniz?
İyi çalışmalar.
Merhaba; SDK API Level Location kısmında Android-11 olarak yazıyor, normalde Api 30 yüklediğinizi söylemiştiniz, Android-30 olması gerekmiyor mu?
Ayrıca kendimde devam eden sorunu herkese belirteyim belki yardım alabilirim.
Delphi 10.4.2 indirip kurdum ancak Android 11 de çalışmadı, Tekrar 10.3 kurup ilgili düzeltmeyi yaptım ancak yine de projeye ait AndroidManifest.xml hedef SDK seviyesi 28 den yukarı çıkmıyor. Bu 10.4.2'de de aynı şekildeydi. Nerede hata yapıyor olabilirim?, bu sorunu nasıl çözebilirim veya nasıl bir yol izlemem gerekli?
Merhaba
Siz SDK manager dan klasör yolunu işaret ettiğinizden klasöre istediğiniz ismi verebilirsiniz.
Ben bu yandex aramasında çıkan sonuçlardan birinden offline olarak indirip kurduğum için ismi android 11 olarak kalmış.
@ savasabd söylediği gibi xml dosyasında gerekli değişikliği yaparak android 11 için debug yapabilirsiniz.
İyi çalışmalar.
Yorumları: 261
Konuları: 29
Kayıt Tarihi: 14-03-2021
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 2.701 Uzman
25-04-2021, Saat: 13:08
(Son Düzenleme: 25-04-2021, Saat: 13:08, Düzenleyen: Mr.X.)
IDE kısmına son SDK ve NDK sürümlerinin tanımını yapmış olmamıza rağmen, Neden AndroidManifest.template.xml dosyasında manuel olarak targetSdkVersion kısmına son SDK API düzenlemesi yaparız ?
Yorumları: 152
Konuları: 11
Kayıt Tarihi: 04-08-2016
Rep Puanı: 333 Acemi
(25-04-2021, Saat: 08:44)savasabd Adlı Kullanıcıdan Alıntı: (25-04-2021, Saat: 03:16)10.Köy Adlı Kullanıcıdan Alıntı: Delphi 10.4.2 indirip kurdum ancak Android 11 de çalışmadı, Tekrar 10.3 kurup ilgili düzeltmeyi yaptım ancak yine de projeye ait AndroidManifest.xml hedef SDK seviyesi 28 den yukarı çıkmıyor. Bu 10.4.2'de de aynı şekildeydi. Nerede hata yapıyor olabilirim?, bu sorunu nasıl çözebilirim veya nasıl bir yol izlemem gerekli?
AndroidManifest.template.xml dosyasındaki ilgili satırı aşağıdaki gibi (hedef sdk'ya göre) kendiniz değiştirin.
<uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="29" />
Merhaba; AndroidManifes.template.xml ile hedef SDK'yı 29 yaptım. Derlediğimde aşağıdaki hatayı alıyorum.
Önceki yüklü uygulamayı sildim, emülatör cihazını değiştirdim ve uygulama ismini versiyon numarasını değiştirdiğim halde, ikinci olarak SDK adreslerinde hata vermemesine rağmen şimdi bu hatayı veriyor. Hata çözümünü deneyerekte arıyorum kendim çözebilirsem burada paylaşacağım. Daha önce bu sorunla karşılaşıp çözmüş var mıydı?
Yorumları: 850
Konuları: 149
Kayıt Tarihi: 07-12-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.177 Uzman
@ savasabd merhabalar
gerekli dosyalar.zip dosyasını indirdiğimde dosya açılmıyor.
Müsait olduğunuzda kontrol edebilmeniz mümkünmüdür.
Teşekkürler
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz.
Yorumları: 859
Konuları: 9
Kayıt Tarihi: 17-11-2016
Rep Puanı: 1.774 Programcı
delphi 10.4.2 sürümü geçiş yaparsanız bu sorun ortadan kalkıyor.
https://www.delphican.com/showthread.php?tid=6185
Yorumları: 124
Konuları: 2
Kayıt Tarihi: 31-08-2021
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 550 Acemi
merhaba,
delphi 11 ile birlikde derlediği boş demoyu, android studio ile kurduğum x86 android 11 emulatör imajında çalıştıramadım,
sanırım hala daha x86 için delphi compileri derlemiyor, sadece armv7+v8
x86 emulatör imaj da çalıştırmanın bir yolu varmıdır? yoksa arm imaj mı yüklemek şart?
|