Перейти к содержанию
Fire Monkey от А до Я
  • 0

Требования к целевому уровню API с августа 2018 г.


Barvin

Вопрос

При сабмите приложения на play market получаю такое сообщение. Подскажите что и где нужно поменять в опциях проекта? Спасибо.

Требования к целевому уровню API с августа 2018 г.

Предупреждение

Целевой уровень API для вашего приложения – 14. Чтобы обеспечить необходимую производительность и безопасность, целевой уровень API должен быть не ниже 26.

С августа 2018 года целевая версия новых приложений должна быть не менее Android 8.0 (API уровня 26).
С ноября 2018 года целевая версия обновляемых приложений должна быть не менее Android 8.0 (API уровня 26).

Совет

Измените целевой уровень API для приложения.

 

Ссылка на комментарий

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

  • 0
3 минуты назад, Barvin сказал:

При сабмите приложения на play market получаю такое сообщение. Подскажите что и где нужно поменять в опциях проекта? Спасибо.

Требования к целевому уровню API с августа 2018 г.

Предупреждение

Целевой уровень API для вашего приложения – 14. Чтобы обеспечить необходимую производительность и безопасность, целевой уровень API должен быть не ниже 26.

С августа 2018 года целевая версия новых приложений должна быть не менее Android 8.0 (API уровня 26).
С ноября 2018 года целевая версия обновляемых приложений должна быть не менее Android 8.0 (API уровня 26).

Совет

Измените целевой уровень API для приложения.

 

Файл AndroidManifest.template.xml в папке проекта (это шаблон манифеста). 

Строка:

    <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" />

Если вы откомпилируете проект и посмотрите подготовленный средой файл манифеста в папке

\Android\Debug\AndroidManifest.xml

то увидите что приложение предназначено для API десятилетней давности:

    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" />

Гугль от вас просит примерно такого

    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="26" />

Измените шаблон AndroidManifest.template.xml:

    <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="26" />

 

Изменено пользователем Евгений Корепов
Ссылка на комментарий
  • 0
6 часов назад, Alex7wrt сказал:

ИМХО, можно разместить версию с Target SDK 14, чтобы собрать как можно большую аудиторию, а в ноябре обновить приложение до 26.

Аудитория никак не изменится. Ведь minSdkVersion="14" все равно перекроет и все старые устройства.

Ссылка на комментарий
  • 0
54 минуты назад, ENERGY сказал:

 А новое СДК нужно ставить или достаточно манифест поменять?

У меня в настройках Delphi  - SDK 24, поменял манифест на 26, откомпилил и закинул на Google Play - вроде прошло. Но будем ждать августа.

Я так думаю, гугловцы пошли на этот шаг еще и для того, чтобы почистить Play Market от старых и необновляемых приложений.

Ссылка на комментарий
  • 0

В приложении нужен доступ к WiFi, соответственно используются разрешения Access WiFi State, Change wifi multicast state, Change wifi state.

Tokyo 10.2.3.

В шаблон AndroidManifest.template.xml: вставляю эту строку  <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="26" />, поскольку в конечном итоге приложение нужно разместить в play market, но с этой строкой после запуска приложение никак не реагирует на функции связанные с Wifi, если оставляю строку по умолчанию <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" />, то всё работает.
В Rio вроде из коробки target 26, но для Rio еще не завезли компонент который используется в приложении и неизвестно когда будет.
Понимаю что это связанно с новыми правилами разрешений, но может есть какой-то способ заставить работать в Tokyo со строкой обманкой targetSdkVersion="26" ?

Ссылка на комментарий
  • 1
В 03.04.2019 в 16:51, Dev сказал:

В приложении нужен доступ к WiFi, соответственно используются разрешения Access WiFi State, Change wifi multicast state, Change wifi state.

Tokyo 10.2.3.

В шаблон AndroidManifest.template.xml: вставляю эту строку  <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="26" />, поскольку в конечном итоге приложение нужно разместить в play market, но с этой строкой после запуска приложение никак не реагирует на функции связанные с Wifi, если оставляю строку по умолчанию <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" />, то всё работает.
В Rio вроде из коробки target 26, но для Rio еще не завезли компонент который используется в приложении и неизвестно когда будет.
Понимаю что это связанно с новыми правилами разрешений, но может есть какой-то способ заставить работать в Tokyo со строкой обманкой targetSdkVersion="26" ?

Ставьте целевой уровень 26 и используйте KastriFree https://github.com/DelphiWorlds/KastriFree

Ссылка на комментарий
  • 0

Спасибо большое!
задам наверно глупый вопрос, никогда еще не устанавливал,  пользовался тем что есть по умолчанию, но не у кого больше спросить последовательность действий, как установить целевой уровень? через SDK Manager?

Ссылка на комментарий
  • 0

обновил

1.jpg.59edc8d2ba4a17be6a84a70c4a8eb10b.jpg

2.jpg.bee29a50c63b432f20fe95d434677acb.jpg

 

нажимаю кнопку добавить, появляется этот диалог

3.jpg.2190d1e464a0f7a073df0aee8f795218.jpg

а что делать дальше не знаю, подскажите пожалуйста.

или может вобще это делается все не так?

 

 

разобрался с добавлением SDK.


но теперь вопрос следующий, нужно в файл  AndroidManifest.template.xml: вручную редактировать эту строку  <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="26"
или студия сама теперь будет собирать проекты с таргет 26?

Изменено пользователем Dev
Ссылка на комментарий
  • 0
21 час назад, mazayhin сказал:

Ставьте целевой уровень 26 и используйте KastriFree https://github.com/DelphiWorlds/KastriFree

немного разобрался, попробовал demo по это ссылке, оригинал работает, но когда начал со своими разрешениями запускать, программа вылетает при нажатии на кнопку, для меня показалось этот вариант очень тяжелым.
нашел другой https://github.com/CarlosHe/AndroidPermission 
здесь все понятно расписано что куда разложить по папкам и сам код примера более прозрачный для моих знаний.
но опять загвоздка, нет тех разрешений которые мне нужны в файле FMX.Permissions.Android.pas

ACCESS_WIFI_STATE

CHANGE_WIFI_STATE

CHANGE_WIFI_MULTICAST_STATE

есть только эти:

TAndroidPermission = (apREAD_CALENDAR, apWRITE_CALENDAR, apCAMERA, apCONTACTS, apREAD_CONTACTS, apWRITE_CONTACTS, apGET_ACCOUNTS, apLOCATION,
    apACCESS_FINE_LOCATION, apACCESS_COARSE_LOCATION, apMICROPHONE, apRECORD_AUDIO, apPHONE, apREAD_PHONE_STATE, apREAD_PHONE_NUMBERS, apCALL_PHONE,
    apANSWER_PHONE_CALLS, apREAD_CALL_LOG, apWRITE_CALL_LOG, apADD_VOICEMAIL, apUSE_SIP, apPROCESS_OUTGOING_CALLS, apSENSORS, apBODY_SENSORS, apSMS,
    apSEND_SMS, apRECEIVE_SMS, apREAD_SMS, apRECEIVE_WAP_PUSH, apRECEIVE_MMS, apSTORAGE, apREAD_EXTERNAL_STORAGE, apWRITE_EXTERNAL_STORAGE);

я добавил в этот файл свои, приложение собирается, но при нажатии на кнопку не реагирует, не вылазит окно с запросом разрешения.
поковырялся и нашел в папке Lib Студии эти два файла, FMX.Permissions.Android.dcu, FMX.Permissions.Android.o. открыл их в блокноте и обнаружил что там есть перечисленные разрешения которые есть pas файле.
Можно как то изготовить эти два файла уже с моими добавленными разрешениями на основе этого FMX.Permissions.Android.файла? или это вобще бред, выкинуть все с головы и не тратить время

Изменено пользователем Dev
Ссылка на комментарий
  • 1
В 06.04.2019 в 21:00, Dev сказал:

немного разобрался, попробовал demo по это ссылке, оригинал работает, но когда начал со своими разрешениями запускать, программа вылетает при нажатии на кнопку, для меня показалось этот вариант очень тяжелым.
нашел другой https://github.com/CarlosHe/AndroidPermission 
здесь все понятно расписано что куда разложить по папкам и сам код примера более прозрачный для моих знаний.
но опять загвоздка, нет тех разрешений которые мне нужны в файле FMX.Permissions.Android.pas

ACCESS_WIFI_STATE

CHANGE_WIFI_STATE

CHANGE_WIFI_MULTICAST_STATE

есть только эти:


TAndroidPermission = (apREAD_CALENDAR, apWRITE_CALENDAR, apCAMERA, apCONTACTS, apREAD_CONTACTS, apWRITE_CONTACTS, apGET_ACCOUNTS, apLOCATION,
    apACCESS_FINE_LOCATION, apACCESS_COARSE_LOCATION, apMICROPHONE, apRECORD_AUDIO, apPHONE, apREAD_PHONE_STATE, apREAD_PHONE_NUMBERS, apCALL_PHONE,
    apANSWER_PHONE_CALLS, apREAD_CALL_LOG, apWRITE_CALL_LOG, apADD_VOICEMAIL, apUSE_SIP, apPROCESS_OUTGOING_CALLS, apSENSORS, apBODY_SENSORS, apSMS,
    apSEND_SMS, apRECEIVE_SMS, apREAD_SMS, apRECEIVE_WAP_PUSH, apRECEIVE_MMS, apSTORAGE, apREAD_EXTERNAL_STORAGE, apWRITE_EXTERNAL_STORAGE);

я добавил в этот файл свои, приложение собирается, но при нажатии на кнопку не реагирует, не вылазит окно с запросом разрешения.
поковырялся и нашел в папке Lib Студии эти два файла, FMX.Permissions.Android.dcu, FMX.Permissions.Android.o. открыл их в блокноте и обнаружил что там есть перечисленные разрешения которые есть pas файле.
Можно как то изготовить эти два файла уже с моими добавленными разрешениями на основе этого FMX.Permissions.Android.файла? или это вобще бред, выкинуть все с головы и не тратить время

Странно, что смогли разобраться с тем, что надо заменять в папках студии, ну и подключать уже кастомное активити в манифесте.

Из DW надо подключить только пару файлов и все.

Вы в манифесте добавили эти разрешения?

И да, запрашивать у пользователя их не надо (потому, думаю, запрос и не выдает система). Для всех ваших разрешений указано Protection level: normal. Запрос нужен для тех, что dangerous.

https://developer.android.com/reference/android/Manifest.permission.html#ACCESS_WIFI_STATE и далее по тексту

https://developer.android.com/guide/topics/permissions/overview (If your app lists normal permissions in its manifest (that is, permissions that don't pose much risk to the user's privacy or the device's operation), the system automatically grants those permissions to your app. )

Изменено пользователем mazayhin
Ссылка на комментарий
  • 0
15 часов назад, mazayhin сказал:

Вы в манифесте добавили эти разрешения?

может быть неправильно, но я делаю так, выбираю разрешения которые нужны в опциях проекта, удаляю из проекта файл AndroidManifest.template.xml и папку Android если они до этого были уже созданы и студия сама сформирует и добавит в манифест выбранные разрешения.

15 часов назад, mazayhin сказал:

запрашивать у пользователя их не надо (потому, думаю, запрос и не выдает система)

если мы в коде укажем что нужно получить разрешение, то приложение будет его запрашивать даже если оно разрешено по умолчанию андроидом. В Rio сделали классно,  разбили на три категории и наглядно видно для каких пунктов понадобятся от пользователя разрешения.

повторюсь, у меня вся беда началась с того что если в файле AndroidManifest.template.xml оставить строку  <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" /> то в приложении все функции связанные с Wifi работают, но с этой строкой не получится выложить приложение в плей маркет, нужно менять в наглую на <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="26" />  но с этой строкой функции Wifi  переставали работать и я подумал что это из-за того что нужно разрешения пользователя.
Прошло много времени с того момента когда задал здесь этот вопрос, теперь конечно уже разобрался,  Вы правы, для 
ACCESS_WIFI_STATE, CHANGE_WIFI_STATE, CHANGE_WIFI_MULTICAST_STATE не нужны разрешения начиная с Андроид 6, но функции Wifi работать не будут, даже если запросить разрешения у пользователя и он их разрешит, оказывается с Андроид 6 нужно еще включить ACCESS_COARSE_LOCATION или ACCESS_FINE_LOCATION  тогда все функции WiFi будут работать, но для этих 100% нужно разрешение пользователя.
 

В 05.04.2019 в 20:02, mazayhin сказал:

используйте KastriFree https://github.com/DelphiWorlds/KastriFree

Огромное спасибо за Ваши ответы и отдельное Спасибо за эту полезную ссылку!


P. S.Ставил последнюю SDK и ставил последнюю NDK, разницы не заметил, все  работает и с теми что идет с Tokyo

Изменено пользователем Dev
Ссылка на комментарий
  • 0

 

В 16.04.2019 в 15:20, Dev сказал:

если мы в коде укажем что нужно получить разрешение, то приложение будет его запрашивать даже если оно разрешено по умолчанию андроидом

Хм, по умолчанию не разрешено ничего такого особого, кроме как запуститься. Все выставляется в манифесте и разрешения даются при установке (напр. доступ в интернет). Не разу не видел такого, что бы что-то запрашивало разрешение на то, что можно, указанное в манифесте (да то же интернет). Но увы, возможности проверить нет. И да, все что вы хотите, в манифесте все равно должно быть.

В 16.04.2019 в 15:20, Dev сказал:

Вы правы, для ACCESS_WIFI_STATE, CHANGE_WIFI_STATE, CHANGE_WIFI_MULTICAST_STATE не нужны разрешения начиная с Андроид 6, но функции Wifi работать не будут, даже если запросить разрешения у пользователя и он их разрешит

мне кажется, что вы сам себе противоречите? Хотите использовать WifiManager, разрешения все равно надо запросить, но только при установке - возвращаемся к манифесту.

Ну а что бы уследить за изменениями, что надо, а что не надо, это уже на  https://developer.android.com все ведь меняется. Указали поддержку более позднего API, извольте соответствовать этому, но и не забывать про старое...

Ссылка на комментарий
  • 0
37 минут назад, mazayhin сказал:

 

Хм, по умолчанию не разрешено ничего такого особого, кроме как запуститься. Все выставляется в манифесте и разрешения даются при установке (напр. доступ в интернет). Не разу не видел такого, что бы что-то запрашивало разрешение на то, что можно, указанное в манифесте (да то же интернет). Но увы, возможности проверить нет. И да, все что вы хотите, в манифесте все равно должно быть.

начиная с API 26 недостаточно указать разрешения в манифесте, их нужно запрашивать динамически у пользователя (причем пользователь может в настройках приложения отозвать отдельные права). В частности для использования камеры нужно динамически проверять наличие прав и, если их нет, запрашивать у пользователя (а именно CAMERA, READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE)

Изменено пользователем Tumaso
Ссылка на комментарий
  • 0
В 18.04.2019 в 15:17, mazayhin сказал:

по умолчанию не разрешено ничего такого особого, кроме как запуститься. Все выставляется в манифесте и разрешения даются при установке (напр. доступ в интернет). 

1.jpg.a2e5dba26bcd8940f887204a85999d2c.jpg

кстати доступ в интернет тоже есть в этом списке и если он отмечен в Uses Permissions, то он будет работать сразу и без вопросов.
https://developer.android.com/guide/topics/permissions/overview

В 18.04.2019 в 15:17, mazayhin сказал:

мне кажется, что вы сам себе противоречите? Хотите использовать WifiManager, разрешения все равно надо запросить, но только при установке - возвращаемся к манифесту.

в чем противоречие? вы наверно невнимательно прочитали, я не писал что разрешения все равно надо запросить, я писал что если даже их запросить...
но все же прошу извинить если не доходчиво изложил мысль.

 

Изменено пользователем Dev
Ссылка на комментарий

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

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

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

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

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

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

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

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

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

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