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

[Android] Есть ли разница под каким SDK собрано приложение


Yarpda

Вопрос

Google постоянно обновляет и выпускает новые SDK. Хотелось бы для себя прояснить есть ли смысл собирать свой пакет в самых последних версиях SDK. Есть ли в случае FMX разница под каким SDK и NDK (настройки SDK Manager) собрано приложение?

И если есть то какая?

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

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

  • 0

Желательно выбирать тот SDK, который советует EMBT т.к. он протестирован = более стабильная программа (прога все равно будет прекрасно работать под последним Android 8). Плюс еще новый SDK сам по себе может быть сырой. 

Но скоро нам всем придется делать с последними SDK :

Starting in late-2018, all new and updated apps will be required to target an SDK that is no more than 1 year older than the current codename release.

https://www.androidpolice.com/2017/12/19/play-store-require-new-updated-apps-target-recent-api-levels-distribute-native-apps-64-bit-support/

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

Желательно выбирать тот SDK, который советует EMBT т.к. он протестирован = более стабильная программа (прога все равно будет прекрасно работать под последним Android 8). Плюс еще новый SDK сам по себе может быть сырой. 

Но скоро нам всем придется делать с последними SDK :

Starting in late-2018, all new and updated apps will be required to target an SDK that is no more than 1 year older than the current codename release.

https://www.androidpolice.com/2017/12/19/play-store-require-new-updated-apps-target-recent-api-levels-distribute-native-apps-64-bit-support/

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

А TargetSDK можно прописать какой-хочешь вручную и собрать под каким хочешь... И Google play это никак не ловит. А версия NDK например на что-то влияет или вообще можно не обращать на это внимание?

Ссылка на комментарий
  • 0
  • Модераторы
В 05/04/2018 в 08:14, Yarpda сказал:

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

вы не работаете напрямую с СДК и на отрисовку компонентов fmx это никак не влияет. Нету натива в fmx под андроид, похожимим контролы выглядят из-за стилей. То что вы передернули ControlType в native вам это ничего не даст)

В 05/04/2018 в 08:14, Yarpda сказал:

А TargetSDK можно прописать какой-хочешь вручную и собрать под каким хочешь... И Google play это никак не ловит

бред какой-то.

В 05/04/2018 в 08:14, Yarpda сказал:

А версия NDK например на что-то влияет или вообще можно не обращать на это внимание?

Вам нужно пройти начальные курсы по андроиду, коих в интернете куча. и ответов что такое SDK/NDK/TargetSDK давно разжёваны

Ссылка на комментарий
  • 0
3 минуты назад, Равиль Зарипов (ZuBy) сказал:

бред какой-то.

Ну почему же бред. В настройках SDK делфи стоит ссылка на 23 SDK. В Манифесте руками правлю на любой от 14 до 28. Все собирается. В маркет заливается. Или я, что-то не так делаю?

Ссылка на комментарий
  • 0
2 часа назад, Равиль Зарипов (ZuBy) сказал:

бред какой-то.

да нет, все правильно. целевой sdk можно указывать любой для которого обеспечена совместимость. а вот минимальный зависит от того на какой версии он будет запускаться. но при этом вы гарантируете работу программы на sdk от минимальной до целевой. 

Ссылка на комментарий
  • -1
  • Модераторы
4 часа назад, Yarpda сказал:

Ну почему же бред. В настройках SDK делфи стоит ссылка на 23 SDK. В Манифесте руками правлю на любой от 14 до 28. Все собирается. В маркет заливается. Или я, что-то не так делаю?

1) уже ответил @haword. Нужно обеспечивать совместимость, т.к. последние годы андроид усиленно работает над безопасностью

разделили разрешения на обычные и опасные, закрыли доступ к мак адресам

2) как понять "И Google play это никак не ловит"?

Ссылка на комментарий
  • 0
36 минут назад, Равиль Зарипов (ZuBy) сказал:

1) уже ответил @haword. Нужно обеспечивать совместимость, т.к. последние годы андроид усиленно работает над безопасностью

разделили разрешения на обычные и опасные, закрыли доступ к мак адресам

Ага, видимо по-этому Эмбаркадеро ставит в MIN и TargetSDK только 14 и не дает менять в настройках проекта. Чтобы обеспечить поддерживаемую совместимость. )) А если хочешь, то ты конечно можешь в манифесте руками поменять, но мы дальше не причем.  (Интересно как они будут выходить из этой ситуации в связи с новой политикой Google про TargetSDK). Мне кажется как должно быть: миниальное СДК ты ставишь, а TargetSDK ставит система в зависимости от того на какой версии SDK был действительно собран этот пакет. (Кстати я уже столкнулся с проблемами с MediaPlayer при ручной смене TargetSDK более 17). А как быть тем кого Гугл заставит поменять ТаргетСДК в скором времени?

43 минуты назад, Равиль Зарипов (ZuBy) сказал:

2) как понять "И Google play это никак не ловит"?

Ну как понять. Когда закидываешь APK на Маркет, Гугл анализирует содержание пакета. По-идее он мог бы и проверять под каким SDK собран пакет и какой стоит в TargetSDK и говорить о несоответствии и запрещать публиковать такие APK. Но он этого не делает, поэтому можно собрать под любым SDK и в манифесте руками поставить любой и все пройдет, а действительную совместимость никто не проверяет. Вот что я имел ввиду.

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

Ну как понять. Когда закидываешь APK на Маркет, Гугл анализирует содержание пакета. По-идее он мог бы и проверять под каким SDK собран пакет и какой стоит в TargetSDK и говорить о несоответствии и запрещать публиковать такие APK. Но он этого не делает, поэтому можно собрать под любым SDK и в манифесте руками поставить любой и все пройдет, а действительную совместимость никто не проверяет. Вот что я имел ввиду.

Абсолютно неправильное понимание.

Гугл анализирует minSdkVersion и targetSdkVersion не для того, чтобы запрещать публикацию apk в google play, а для того, чтобы:

1. ограничить установку apk на устройства с sdk, меньшей чем minSdkVersion - т.е. если например minSdkVersion="18", то на Android ниже 4.3 гугл плей не даст установить

2. использовать на устройстве sdk наиболее приближенной к targetSdkVersion (но не превышая) - т.е. если например targetSdkVersion="23", то на Android 4.3 будет использовать sdk 18, на android 8.1 - sdk 23

Ссылка на комментарий
  • 0
5 часов назад, Yarpda сказал:

TargetSDK ставит система в зависимости от того на какой версии SDK был действительно собран этот пакет.

нет, это не зависит от версии. это напрямую зависит от поддержки программой этой sdk. например в делфи сейчас официально нет поддержки запроса разрешений. а значит выставить целевой sdk 23  уже не можем. 

Ссылка на комментарий
  • 0
5 часов назад, Tumaso сказал:

Абсолютно неправильное понимание.

2. использовать на устройстве sdk наиболее приближенной к targetSdkVersion (но не превышая) - т.е. если например targetSdkVersion="23", то на Android 4.3 будет использовать sdk 18, на android 8.1 - sdk 23

С MinSDK все понятно. С TargetSDK "не все так однозначно". Ставится она не средой разработки, а руками в манифесте и никто этого не проверяет. Может быть это и нормально, но для меня как начинающего программиста на Андроид это немного смущает. Хотя по идее этот SDK влияет на поведение программы на конечном устройстве.

 

6 часов назад, Yarpda сказал:

TargetSDK ставит система в зависимости от того на какой версии SDK был действительно собран этот пакет.

28 минут назад, haword сказал:

нет, это не зависит от версии. это напрямую зависит от поддержки программой этой sdk. например в делфи сейчас официально нет поддержки запроса разрешений. а значит выставить целевой sdk 23  уже не можем. 

Таким как раз я и хотел бы идеть поведение среды разработки. А сейчас мы как и можем поставить любую ТаргедСДП, хоть 28-ую, хотя в действительной поддержки этого SDK в приложении нет. И ни Emb, ни Market никак на это не реагирует.  В общем для меня этот подход весьма странен. Хотя может я чего-то и не понимаю...

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

Нативное приложение практически не возможно проверить на соответствие конкретной версии SDK статистическим анализом. Поскольку вызов джава апи идет динамически через JNI. Поэтому тут нету никаких намеков на то, что можно проверить. В йос например проверяют через прокси. Запускают приложение в живую, но в АПИ йос встраивается посредник, который чекает, какие мессаджи вы посылаете и не используете ли вы приватное АПИ.

Другой вопрос, что я не уверен, что на бюджетные телефоны до 3000 будут ставить последнюю версию андроида. Она там тупо не взлетит. И пока такое требование к поддержке последней версии андроида выглядит сомнительно. 

Ссылка на комментарий
  • 0
В 06.04.2018 в 17:44, Brovin Yaroslav сказал:

Другой вопрос, что я не уверен, что на бюджетные телефоны до 3000 будут ставить последнюю версию андроида. Она там тупо не взлетит. И пока такое требование к поддержке последней версии андроида выглядит сомнительно. 

да нет, гугль заставляет программистов в своем приложении поддерживать все функции новых АПИ, но при этом если они захотят предоставлять совместимость со старыми версиями АПИ то пускай делают что то типа развилок в программах - если апи такое то такая функция а если такое то такая. что бы при запуске на новых версиях ос программы не падали. видать в следующих апи хотят полностью избавиться от устаревших вызовов функций. 

Изменено пользователем haword
Ссылка на комментарий
  • 0
В 4/6/2018 в 17:44, Brovin Yaroslav сказал:

Другой вопрос, что я не уверен, что на бюджетные телефоны до 3000 будут ставить последнюю версию андроида. Она там тупо не взлетит. И пока такое требование к поддержке последней версии андроида выглядит сомнительно. 

 

Выйдет Android GO - “Android 8 Oreo (Go Edition). Это урезанный Андроид, для бюджетных смартов. https://www.theverge.com/circuitbreaker/2018/3/1/17052912/what-is-android-go

 

To address those problems, Google has done three things:

  • Make Android run better on phones with 1GB of RAM or less
  • Make Android (the OS itself) take up less space
  • Make Android’s preinstalled apps take up less space and use less data

Кстати Android 8 на данный момент хуже оптимизирован чем 7 (Android One - чистый Android без надстроек производителя). У меня смарт обновился до 8, поюзав его некоторое время - я перепрошил обратно на Android 7 - он очень быстрый. В 8 были заметны проблемы с производительностью ,к примеру при быстром переключении Оперы она слегка подлагивала и мерцала. При этом смарт у меня мощный - видео в 4к 30 fps , GTA SA на максималках, 4 гб оперативы.

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

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

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

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

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

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

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

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

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

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

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