Сергій
это звучит как-то абстрактно и расплывчато
До этого мало кто запаривался с runtime permissions и ставил targetSDK 22
Vadim
ну как я могу поддерживать что-то новое, если собран со старым?
Сергій
Это самый у*банский поступок который можно только совершить
Vadim
конкретные примеры, наконец, будут?
ну вот если скомпилить приложение под WinXP оно будет работать и на всех более свежих
а на xp можно ставить net framework 4.5? Вот тут та же ситуация, либо совместимость, либо удобство разработки (async await вроде в 4.6)
Сергій
Vadim
Runtime permissions
я на андроиде юзер, моя не понимать
Сергій
Разрешения которые надо запрашивать в реальном времени. А не просто прописать в манифесте
Сергій
Вы хоть андроид разработчик?
не интересовался, я про классических .exe
я про c#, на сях разных может и можно (но там про удобство вообще молчу)
Vadim
Вы хоть андроид разработчик?
нет, я пишу на Си и скриптовых
Сергій
🤔
ну и разные compat
Сергій
Подключается SDK + AppCompat библиотека
Сергій
Это вам не хухры-мухры )
Vadim
тупо if
иф с чем, если новых апи тупо не прилинковано?
Сергій
Собирается приложение с новым сдк
Сергій
Которые не ломает совместимость со старым
Vadim
как? держится две версии кода, для старого и нового?
Сергій
Приложение работает так как и работало на старых версиях андроид, но на новых надо новое апи(в некоторых моментах)
Vadim
нет, я пишу на Си и скриптовых
меня например вот эта штука заинтересовала http://www.androwish.org/
Сергій
сейчас половину if else покрывает AppCompat library
Vadim
Приложение работает так как и работало на старых версиях андроид, но на новых надо новое апи(в некоторых моментах)
ох... видимо, надо на примерах вот допустим есть SomeLibraryFunc() on minSdk SomeLibraryFuncEx() on targetSdk очевидно, в .apk может встречаться только SomeLibraryFunc() а вторая не может, иначе как оно будет работать на старом?
Сергій
да, новые апи понятное дело не появляются на старых версиях андроид
Сергій
пример
Сергій
нужна геолокация, до версии андроид 6 мы просто прописывали в манифесте приложения что нам нужен к ней доступ и система спокойно его предоставляла
Сергій
ставим targetSDK 23+, собираем приложение с sdk 23 и уже на версиях андроид 6 и выше нам надо ещё в коде запрашивать это разрешение, но до андроид 6 приложение работает как и работало
Сергій
другой пример
Сергій
нотификации, чтобы они работали на андроид 8+ надо создавать специальные канал для них, до андроид 8, они будут работать как и раньше
Igor
DiffUtil с SortedList скpещивал ктo-нибудь? Сейчас пpoблема вoзникла связанная с пеpвым, из-за тoгo, чтo oн не мoжет oпpеделить элемент, если изменился кpитеpий сopтиpoвки. Вoт думаю, как бы этo делo все испpавить.
Сергій
понятное дело, если вы завязываете какой-то критический функционал на новых апи, которых нет в старых версиях ОС, работать не будет ниже
Сергій
а можно все-таки на примере с двумя функциями выше?
if (SDK_INT >= 26) { someFuncSDK26(); else { someFuncLegacy(); }
Сергій
но такого чтобы переписывать бизнес логику несколько раз нету
Vadim
if (SDK_INT >= 26) { someFuncSDK26(); else { someFuncLegacy(); }
так-так-так, в случае Си на это сматерится линкер
Сергій
просто учитываешь новые условия работы с системой
Vadim
а здесь это как заработает?
Сергій
а здесь это как заработает?
все апи не изменяется
Сергій
просто добавляются новые
Сергій
старые методы аннотируются как deprecated
Сергій
но не удаляются
Anonymous
Всем привет. Подскажите пожалуйста, у меня есть табы с вьюпейджером, но по каким то причинам расстягиваются рандомно выбранные ячейки. Некоторые отображаются нормально.
Anonymous
https://codeshare.io/am3b3w
Anonymous
есть предположения?
Vadim
просто добавляются новые
не в этом проблема, код ссылается на someFuncSDK26() следовательно линкер потребует либу, в которой оно есть, на целевой системе, если это Си - а как здесь эта проблема разрешается?
Сергій
и будет вызван только при правильном условии, то есть если sdk будет указанной версии, линт такое понимает
Vadim
он в if блоке
в компилируемых языках, по крайней мере в Си, ВСЕ функции, на которые ссылается код, должны быть доступны сразу
Сергій
в compile sdk
Vadim
они и есть там
на целевой-то системе их нет
Сергій
Vadim
что "проверка"? в винде например тебе сразу в момент запуска скажут "точка входа в функцию ... не найдена в библиотеке ...dll" и облом
Сергій
что "проверка"? в винде например тебе сразу в момент запуска скажут "точка входа в функцию ... не найдена в библиотеке ...dll" и облом
будеш ошибка только если в рантайме попытатся вызвать метод которые появился в более новой ОС
Сергій
при сборке проекта ты подключаешь новое сдк на которое указывает targetSDK параметр
Сергій
сообветственно все функции у тебя есть в компайл тайм
Сергій
но в рантайме их не будет на версиях ОС которые ниже указанного compileSDK
Vadim
так, ладно, вопрос про java тогда... если мы пишем код, вызывая функции некоей либы, что будет, если при некотором условии мы дернем код, которого в либе нет?
Vadim
ClassNotFoundException в рантайм
в момент вызова или в момент старта приложения?
Сергій
в момент вызова конечно же
Vadim
ага, понятно, то есть у неё тупо поздняя (отложенная) линковка
Vitaly
Делаю аутентификацию через номер телефона, почему версия загруженная через USB работает адекватно, а тот же самый код, но загруженный с Play Market, не отправляет SMS
Vitaly
Когда приложение выкладывается в Play Market меняется SHA1 ключ, поэтому Firebase не может достучаться до моего приложения
Vitaly
Оказывается всё очень просто, но я не знал эту инфу
Сергій
Оказывается всё очень просто, но я не знал эту инфу
ну ты же генерировал сертификат для релиз былда?
Сергій
и сохраниш все креденшелы к нему? )
Сергій
Да
другой сертификат другая хеш-сумма
Vitaly
другой сертификат другая хеш-сумма
Ну да, вот теперь я всё понял
Сергій
дебаг билды по умолчанию подписываются дебажным ключем