IgorK11
-
Постов
15 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Активность репутации
-
IgorK11 отреагировална brunnengi в Android 10 (API уровня 29)
Здравствуйте.
Некоторые пользователи Delphi 10.3 столкнулись с тем что даже при указании SDK 29 в манифесте проекта, при запуске скомпилированного приложения на платформе Android 10 происходило его падение.
В августе 30 числа 2020 года было дано решение как пофиксить эту проблему.
Переход на версию Delphi 10.4 не для всех является приемлемым решением, по разным причинам, к примеру у кого то платные компоненты и нет возможности обновиться до актуальных версий.
Ниже представлен перевод статьи. В конце будет ссылка на оригинал.
Приведенное здесь решение нацелено на обновление функции 'dlopen' в файле 'ICU.inc' (он включен в файл 'System.pas'). Вот шаги, необходимые для решения указанной проблемы:
Откройте проводник и перейдите в папку по следующему пути: C:\Program Files (x86)\Embarcadero\Studio\20.0\source Скопируйте файлы из архива "missing_source_files.zip", который приложен в посту, в папку source из пункта "1" (комментарий от переводчика: в "missing_source_files.zip" лежит папка "rtl" в которой две папки - "posix", "sys". Лично я сделал сначала backup папки rtl из папки source, что и вам советую. Затем скопировал rtl папку из "missing_source_files.zip" и вставил в папку source) Переходим по пути: C:\Program Files (x86)\Embarcadero\Studio\20.0\source\rtl\sys Открываем файл "ICU.inc" в текстовом редакторе (пожалуйста, сделайте backup файла 'ICU.inc' для пущей безопасности). (комментарий от переводчика: орудовать в этой папке без прав админа не вариант. Поэтому я советую сначала скопировать файл "ICU.inc" куда нибудь в другое место, к примеру в папку Documents и там уже открыть его в том же Блокноте и сделав необходимые изменения сохранить файл и затем уже переместить его в C:\Program Files (x86)\Embarcadero\Studio\20.0\source\rtl\sys с заменой) В текстовом редакторе надо изменить функцию InitICU:
Было вот так: А сделать надо что было вот так:
Сохраняем сделанные изменения в файле "ICU.inc"
Возвращаемся в проводник и переходим в папку %USERPROFILE%
Скопируйте файл "build.bat" из архива "build_script.zip" , который приложен в этому посту в папку из пункта 7.
Запустите от имени Администратора файл "build.bat". (Он создаст папку %USERPROFILE%\build в которой будет несколько папок с файлами. Из них нам нужны будут только System.o, но об этом ниже)
Возвращаемся в проводник и переходим в папку C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android\debug
Скопируйте файл "System.o" из папки %USERPROFILE%\build\android\debug в папку из шага 10 (не забывайте сделать backup всех файл что вы заменяете, на всякий случай).
Теперь переходим в проводник в папку C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android\release
Скопируйте файл "System.o" из папки %USERPROFILE%\build\android\release в папку из шага 12 (не забывайте сделать backup всех файл что вы заменяете, на всякий случай).
Переходим в проводник в папку C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android64\debug
Скопируйте файл "System.o" из папки %USERPROFILE%\build\android64\debug в папку из шага 14 (не забывайте сделать backup всех файл что вы заменяете, на всякий случай).
Переходим в проводник в папку C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\android64\release
Скопируйте файл "System.o" из папки %USERPROFILE%\build\android64\release в папку из шага 16 (не забывайте сделать backup всех файл что вы заменяете, на всякий случай).
На этом всё. Автор данного перевода лично прошел по всем шагам и сделал всё как было сказано, а также протестил на приложении что уже было в PlayMarket'е но не запускалось под Android 10. Я его обновил и запустил как на Android ниже 10, так и на Android 10.
ЕСЛИ ВЫ НЕ ДОВЕРЯЕТЕ ПЕРЕВОДУ И/ИЛИ ВЫЛОЖЕННЫМ ФАЙЛАМ, ТО НИЖЕ ДАНА ССЫЛКА НА ОРИГИНАЛ СТАТЬИ
// файлы выложенные здесь, взяты с форума где оригинал статьи.
Ссылка на оригинал https://quality.embarcadero.com/browse/RSP-27218
Если нет логина, то под споллером скрины экрана с форума ссылки выше:
Отдельное спасибо пользователю Stanislau Ihnatovich за сообщение в Telegram о том что есть решение
build_script.zipmissing_source_files.zip
-
IgorK11 получил реакцию от gonzales в При публикации приложения на AppleStore вылезает ошибка - В каталог объектов xcode необходимо добавить значок приложения с разрешением 1024*1024 пикселей
набросал подробную инструкцию как делал на 10.3 собрав инфу с комментариев:
!!! Иконки в AppIcon.appiconset должны быть без прозрачности и альфа-канала, иначе получите ошибку ITMS-90717:Invalid App Store Icon.
1. распаковываем iOS1024fix.zip
2. заменяем иконки в asset_catalog\Assets.xcassets\AppIcon.appiconset\ и asset_catalog\Assets.xcassets\LaunchScreenImage.imageset\
3. если надо меняем цвет фона в asset_catalog\Assets.xcassets\LaunchScreenBackgroundColor.colorset\Contents.json
4. копируем папку asset_catalog на мак
5. в терминале перейти в неё, если скопировали на рабочий стол команда:
cd desktop/asset_catalog 6. выполняем команду:
actool --output-format human-readable-text --notices --warnings --app-icon AppIcon --output-partial-info-plist compilation_results/partial_Info.plist --target-device iphone --target-device ipad --minimum-deployment-target 11.0 --platform iphoneos --product-type com.apple.product-type.application --compile "compilation_results" "Assets.xcassets" в asset_catalog\compilation_results появятся 4 файла
7. копируем папку (или эти 4 файла) обратно c мака
8. в delphi компилируем ipa (Release / iOS Device 64-bit / Application Store)
9. Для удобства создадим папку "ios1024" в папке проекта
10. копируем файл iOSDevice64\Release\<ИмяПроекта>.Info.plist в папку "ios1024" убрав из имени "<ИмяПроекта>.", имя файла должно быть "Info.plist", регистр важен!
11. копируем из asset_catalog\compilation_results 4 файла в папку "ios1024"
12. копируем папку LaunchScreen.storyboardc в "ios1024" (именно папку а не её содержимое)
13. Редактируем Info.plist
13.1. Меняем:
<key>CFBundleIconFiles</key> <array> <string>ios_app_ico57</string> <string>ios_app_ico87</string> <string>ios_app_ico114</string> <string>ios_app_ico1024</string> <string>ios_app_ico60</string> <string>ios_app_ico120</string> <string>ios_app_ico180</string> <string>ios_spot_29</string> <string>ios_spot_40</string> <string>ios_spot_58</string> <string>ios_spot_80</string> <string>ios_spot_120</string> </array> на
<key>CFBundleIcons</key> <dict> <key>CFBundlePrimaryIcon</key> <dict> <key>CFBundleIconFiles</key> <array> <string>AppIcon60x60</string> </array> <key>CFBundleIconName</key> <string>AppIcon</string> </dict> </dict> <key>CFBundleIcons~ipad</key> <dict> <key>CFBundlePrimaryIcon</key> <dict> <key>CFBundleIconFiles</key> <array> <string>AppIcon60x60</string> <string>AppIcon76x76</string> </array> <key>CFBundleIconName</key> <string>AppIcon</string> </dict> </dict> 13.2. Удаляем в двух местах строки:
<key>CFBundleResourceSpecification</key> <string>ResourceRules.plist</string> 13.3. После строк:
<key>DTPlatformName</key> <string>iphoneos</string> добавляем:
<key>DTPlatformVersion</key> <string>13.5</string> 14. Заходим в delphi->Project->Deploment
15. Проверяем что бы выбран "iOS Device 64-bit"
16. Снимаем галочки с: (имена файлов будут ваши, ориентируйтесь по Option->Application->Icons)
17. в Deploment добавляем все файлы папки "ios1024"
18. изменяем Remote Path 5-и строкам:
19. компилируем IPA и отправляем через Transporter на маке
!!! При изменении версии билда в проекте не забываем изменить его в CFBundleVersion "ios1024"\Info.plist
iOS1024fix.zip
-
IgorK11 получил реакцию от Barbanel в При публикации приложения на AppleStore вылезает ошибка - В каталог объектов xcode необходимо добавить значок приложения с разрешением 1024*1024 пикселей
набросал подробную инструкцию как делал на 10.3 собрав инфу с комментариев:
!!! Иконки в AppIcon.appiconset должны быть без прозрачности и альфа-канала, иначе получите ошибку ITMS-90717:Invalid App Store Icon.
1. распаковываем iOS1024fix.zip
2. заменяем иконки в asset_catalog\Assets.xcassets\AppIcon.appiconset\ и asset_catalog\Assets.xcassets\LaunchScreenImage.imageset\
3. если надо меняем цвет фона в asset_catalog\Assets.xcassets\LaunchScreenBackgroundColor.colorset\Contents.json
4. копируем папку asset_catalog на мак
5. в терминале перейти в неё, если скопировали на рабочий стол команда:
cd desktop/asset_catalog 6. выполняем команду:
actool --output-format human-readable-text --notices --warnings --app-icon AppIcon --output-partial-info-plist compilation_results/partial_Info.plist --target-device iphone --target-device ipad --minimum-deployment-target 11.0 --platform iphoneos --product-type com.apple.product-type.application --compile "compilation_results" "Assets.xcassets" в asset_catalog\compilation_results появятся 4 файла
7. копируем папку (или эти 4 файла) обратно c мака
8. в delphi компилируем ipa (Release / iOS Device 64-bit / Application Store)
9. Для удобства создадим папку "ios1024" в папке проекта
10. копируем файл iOSDevice64\Release\<ИмяПроекта>.Info.plist в папку "ios1024" убрав из имени "<ИмяПроекта>.", имя файла должно быть "Info.plist", регистр важен!
11. копируем из asset_catalog\compilation_results 4 файла в папку "ios1024"
12. копируем папку LaunchScreen.storyboardc в "ios1024" (именно папку а не её содержимое)
13. Редактируем Info.plist
13.1. Меняем:
<key>CFBundleIconFiles</key> <array> <string>ios_app_ico57</string> <string>ios_app_ico87</string> <string>ios_app_ico114</string> <string>ios_app_ico1024</string> <string>ios_app_ico60</string> <string>ios_app_ico120</string> <string>ios_app_ico180</string> <string>ios_spot_29</string> <string>ios_spot_40</string> <string>ios_spot_58</string> <string>ios_spot_80</string> <string>ios_spot_120</string> </array> на
<key>CFBundleIcons</key> <dict> <key>CFBundlePrimaryIcon</key> <dict> <key>CFBundleIconFiles</key> <array> <string>AppIcon60x60</string> </array> <key>CFBundleIconName</key> <string>AppIcon</string> </dict> </dict> <key>CFBundleIcons~ipad</key> <dict> <key>CFBundlePrimaryIcon</key> <dict> <key>CFBundleIconFiles</key> <array> <string>AppIcon60x60</string> <string>AppIcon76x76</string> </array> <key>CFBundleIconName</key> <string>AppIcon</string> </dict> </dict> 13.2. Удаляем в двух местах строки:
<key>CFBundleResourceSpecification</key> <string>ResourceRules.plist</string> 13.3. После строк:
<key>DTPlatformName</key> <string>iphoneos</string> добавляем:
<key>DTPlatformVersion</key> <string>13.5</string> 14. Заходим в delphi->Project->Deploment
15. Проверяем что бы выбран "iOS Device 64-bit"
16. Снимаем галочки с: (имена файлов будут ваши, ориентируйтесь по Option->Application->Icons)
17. в Deploment добавляем все файлы папки "ios1024"
18. изменяем Remote Path 5-и строкам:
19. компилируем IPA и отправляем через Transporter на маке
!!! При изменении версии билда в проекте не забываем изменить его в CFBundleVersion "ios1024"\Info.plist
iOS1024fix.zip
-
IgorK11 получил реакцию от Ingalime в При публикации приложения на AppleStore вылезает ошибка - В каталог объектов xcode необходимо добавить значок приложения с разрешением 1024*1024 пикселей
набросал подробную инструкцию как делал на 10.3 собрав инфу с комментариев:
!!! Иконки в AppIcon.appiconset должны быть без прозрачности и альфа-канала, иначе получите ошибку ITMS-90717:Invalid App Store Icon.
1. распаковываем iOS1024fix.zip
2. заменяем иконки в asset_catalog\Assets.xcassets\AppIcon.appiconset\ и asset_catalog\Assets.xcassets\LaunchScreenImage.imageset\
3. если надо меняем цвет фона в asset_catalog\Assets.xcassets\LaunchScreenBackgroundColor.colorset\Contents.json
4. копируем папку asset_catalog на мак
5. в терминале перейти в неё, если скопировали на рабочий стол команда:
cd desktop/asset_catalog 6. выполняем команду:
actool --output-format human-readable-text --notices --warnings --app-icon AppIcon --output-partial-info-plist compilation_results/partial_Info.plist --target-device iphone --target-device ipad --minimum-deployment-target 11.0 --platform iphoneos --product-type com.apple.product-type.application --compile "compilation_results" "Assets.xcassets" в asset_catalog\compilation_results появятся 4 файла
7. копируем папку (или эти 4 файла) обратно c мака
8. в delphi компилируем ipa (Release / iOS Device 64-bit / Application Store)
9. Для удобства создадим папку "ios1024" в папке проекта
10. копируем файл iOSDevice64\Release\<ИмяПроекта>.Info.plist в папку "ios1024" убрав из имени "<ИмяПроекта>.", имя файла должно быть "Info.plist", регистр важен!
11. копируем из asset_catalog\compilation_results 4 файла в папку "ios1024"
12. копируем папку LaunchScreen.storyboardc в "ios1024" (именно папку а не её содержимое)
13. Редактируем Info.plist
13.1. Меняем:
<key>CFBundleIconFiles</key> <array> <string>ios_app_ico57</string> <string>ios_app_ico87</string> <string>ios_app_ico114</string> <string>ios_app_ico1024</string> <string>ios_app_ico60</string> <string>ios_app_ico120</string> <string>ios_app_ico180</string> <string>ios_spot_29</string> <string>ios_spot_40</string> <string>ios_spot_58</string> <string>ios_spot_80</string> <string>ios_spot_120</string> </array> на
<key>CFBundleIcons</key> <dict> <key>CFBundlePrimaryIcon</key> <dict> <key>CFBundleIconFiles</key> <array> <string>AppIcon60x60</string> </array> <key>CFBundleIconName</key> <string>AppIcon</string> </dict> </dict> <key>CFBundleIcons~ipad</key> <dict> <key>CFBundlePrimaryIcon</key> <dict> <key>CFBundleIconFiles</key> <array> <string>AppIcon60x60</string> <string>AppIcon76x76</string> </array> <key>CFBundleIconName</key> <string>AppIcon</string> </dict> </dict> 13.2. Удаляем в двух местах строки:
<key>CFBundleResourceSpecification</key> <string>ResourceRules.plist</string> 13.3. После строк:
<key>DTPlatformName</key> <string>iphoneos</string> добавляем:
<key>DTPlatformVersion</key> <string>13.5</string> 14. Заходим в delphi->Project->Deploment
15. Проверяем что бы выбран "iOS Device 64-bit"
16. Снимаем галочки с: (имена файлов будут ваши, ориентируйтесь по Option->Application->Icons)
17. в Deploment добавляем все файлы папки "ios1024"
18. изменяем Remote Path 5-и строкам:
19. компилируем IPA и отправляем через Transporter на маке
!!! При изменении версии билда в проекте не забываем изменить его в CFBundleVersion "ios1024"\Info.plist
iOS1024fix.zip