Перейти к содержанию

Вопросы

С недавнего времени при загрузке  обновлении приложений получаю:

Целевой уровень API для вашего приложения – 28. Чтобы обеспечить необходимую производительность и безопасность, целевой уровень API должен быть не ниже 29.
С августа 2020 года целевая версия новых приложений должна быть не менее Android 10 (API уровня 29)...
 

Спойлер

 

Delphi 10.3.3.

sdk29

ndk-r21

jdk-8.0.252.09

Снимок1.PNG

Снимок3.PNGСнимок4.PNGСнимок2.PNG

при компиляции в манифесте все равно     <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="28" />

пробовал принудительно в AndroidManifest.template.xml ставить targetSdkVersion 29, приложение вылетает при старте.

10.4. вообще корявое г... Что еще можно сделать?

 

Отредактировал IgorK11

Поделиться сообщением


Ссылка на сообщение

Рекомендуемые сообщения

  • 0

Есть фикс для этой проблемы.
Можете почитать на другом форуме https://forum.fgx-native.com/topic/530-delphi-1033-fix-для-sdk-29-android-10/
Решение рабочее, лично проверял.

Поделиться сообщением


Ссылка на сообщение
  • 0

 Здравствуйте.
Некоторые пользователи Delphi 10.3 столкнулись с тем что даже при указании SDK 29 в манифесте проекта, при запуске скомпилированного приложения на платформе Android 10 происходило его падение.
В августе 30 числа 2020 года было дано решение как пофиксить эту проблему.
Переход на версию Delphi 10.4 не для всех является приемлемым решением, по разным причинам, к примеру у кого то платные компоненты и нет возможности обновиться до актуальных версий.
Ниже представлен перевод статьи. В конце будет ссылка на оригинал.
Приведенное здесь решение нацелено на обновление функции 'dlopen' в файле 'ICU.inc' (он включен в файл 'System.pas'). Вот шаги, необходимые для решения указанной проблемы:

  1. Откройте проводник и перейдите в папку по следующему пути: C:\Program Files (x86)\Embarcadero\Studio\20.0\source
  2. Скопируйте файлы из архива "missing_source_files.zip", который приложен в посту, в папку source из пункта "1" (комментарий от переводчика: в "missing_source_files.zip" лежит папка "rtl" в которой две папки - "posix", "sys". Лично я сделал сначала backup папки rtl из папки source, что и вам советую. Затем скопировал rtl папку из "missing_source_files.zip" и вставил в папку source)
  3. Переходим по пути: C:\Program Files (x86)\Embarcadero\Studio\20.0\source\rtl\sys
  4. Открываем файл "ICU.inc" в текстовом редакторе (пожалуйста, сделайте backup файла 'ICU.inc' для пущей безопасности). (комментарий от переводчика: орудовать в этой папке без прав админа не вариант. Поэтому я советую сначала скопировать файл "ICU.inc" куда нибудь в другое место, к примеру в папку Documents и там уже открыть его в том же Блокноте и сделав необходимые изменения сохранить файл и затем уже переместить его в C:\Program Files (x86)\Embarcadero\Studio\20.0\source\rtl\sys с заменой)
  5. В текстовом редакторе надо изменить функцию InitICU:
    Было вот так:
    Спойлер
    
    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;

     

    А сделать надо что было вот так:
     

    Спойлер
    
    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;

     



     

  6. Сохраняем сделанные изменения в файле "ICU.inc"

  7. Возвращаемся в проводник и переходим в папку %USERPROFILE%

  8. Скопируйте файл "build.bat" из архива "build_script.zip" , который приложен в этому посту в папку из пункта 7.

  9. Запустите от имени Администратора файл "build.bat". (Он создаст папку %USERPROFILE%\build в которой будет несколько папок с файлами. Из них нам нужны будут только System.o, но об этом ниже)

  10. Возвращаемся в проводник и переходим в папку C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android\debug

  11. Скопируйте файл "System.o" из папки %USERPROFILE%\build\android\debug в папку из шага 10 (не забывайте сделать backup всех файл что вы заменяете, на всякий случай).

  12. Теперь переходим в проводник в папку C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android\release

  13. Скопируйте файл "System.o" из папки %USERPROFILE%\build\android\release в папку из шага 12 (не забывайте сделать backup всех файл что вы заменяете, на всякий случай).

  14. Переходим в проводник в папку C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android64\debug

  15. Скопируйте файл "System.o" из папки %USERPROFILE%\build\android64\debug  в папку из шага 14 (не забывайте сделать backup всех файл что вы заменяете, на всякий случай).

  16. Переходим в проводник в папку C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android64\release

  17. Скопируйте файл "System.o" из папки %USERPROFILE%\build\android64\release в папку из шага 16 (не забывайте сделать backup всех файл что вы заменяете, на всякий случай).

 

На этом всё. Автор данного перевода лично прошел по всем шагам и сделал всё как было сказано, а также протестил на приложении что уже было в PlayMarket'е но не запускалось под Android 10. Я его обновил и запустил как на Android ниже 10, так и на Android 10. 

ЕСЛИ ВЫ НЕ ДОВЕРЯЕТЕ ПЕРЕВОДУ И/ИЛИ ВЫЛОЖЕННЫМ ФАЙЛАМ, ТО НИЖЕ ДАНА ССЫЛКА НА ОРИГИНАЛ СТАТЬИ
// файлы выложенные здесь, взяты с форума где оригинал статьи.

Ссылка на оригинал https://quality.embarcadero.com/browse/RSP-27218
Если нет логина, то под споллером скрины экрана с форума ссылки выше:
 

Спойлер

image.thumb.png.b71b609bf99c0164cb19ba21f62332f4.png

image.thumb.png.e0827356357116ddafe297489c9efe03.png

 

 

Отдельное спасибо пользователю Stanislau Ihnatovich за сообщение в Telegram о том что есть решение

 

build_script.zipmissing_source_files.zip

 

Отредактировал brunnengi

Поделиться сообщением


Ссылка на сообщение

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...