Это копия, сохраненная 9 июня 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Тред для тех, кто пытается вкатиться в андройд разработку или что-то похожее. По возможности стараемся угощать ньюфагов чаем и поливать друг друга радугой.
> Хочу вкатиться в разработку под Android! С чего начать?
С видеокурсов от Udacity. Они бесплатны и затрагивают основы разработки даже если не умеешь писать на Java.
https://www.udacity.com/course/android-development-for-beginners--ud837
Для тех, кто не хочет учиться по юдасити существует скучный кат от гугла: http://developer.android.com/training/index.html
Если имел опыт в програмаче, можешь посмотреть видосики отсюда https://web.stanford.edu/class/cs193a/videos.shtml
Очень доходчиво и интересно
Так же есть книга, которая затрагивает основы разработки и имеет 2-е издание с 2017 года: https://www.amazon.com/Head-First-Android-Development-Brain-Friendly/dp/1491974052
Большинство приложений написано на Java, необходимо понимать что ты пишешь, в уме достаточно знать базовый Core т.к. 90% времени придется тыкаться в Android SDK. Полезные обучалки от анона :
https://habr.com/company/golovachcourses/blog/215275/ - смотри Головача если совсем даун и не шаришь нихера
https://www.amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208 - книжка для ньюфагов. Хорошо заходит.
https://www.amazon.com/Thinking-Java-4th-Bruce-Eckel/dp/0131872486
Неплохим вариантом для изучивших джава будет книга https://www.amazon.com/Effective-Java-3rd-Joshua-Bloch/dp/0134685997
Алсо можешь читануть паттерны, рано или поздно все равно базовое знание понадобиться https://www.amazon.com/Head-First-Design-Patterns-Brain-Friendly/dp/0596007124
Существует два текстовых ресурса для закрепления андройда на русском. Первый - несмотря на старость описывает базовые вещи, на которых построены мощные либы, второй - продавшийся говноед с котиками http://startandroid.ru/ и http://developer.alexanderklimov.ru/android/
https://commonsware.com/Android/ - толстая книга для гиков, стандарт решений
Так же можешь смотреть видосики от Mail.Ru
https://habr.com/company/mailru/blog/345252/
https://github.com/ybereza/technotrack-resources - ресурсы к лекциям
Или от Яндекса. В некоторых моментах спикеры рассказывают важные детали, которые кроются в мелочах:
https://www.youtube.com/watch?v=5EvxWifIgro&list=PLQC2_0cDcSKBNCR8UWeElzCUuFkXASduz[Развернуть]
В дальнейшем потребуется базовое знание SQL, понимание XML и JSON.
> Я прошел курсы Udasity, а дальше что?
После прохождения курсов у тебя должно сложиться базовое представление о создании приложения; жизненные циклы Activity/Fragments, AsynsTask, Http, Json, SQLite.
Дальше закрепляешь знания путем просмотра видосов выше +
Написание парочку приложений на свой вкус. Так же стоит уделить внимание BroadcastReceiver, IntentService, поиграться с Loader's, хендлерами, Contest providers и прочее, построить очередной Weather or ToDo must have list.
>Не могу разобраться в потоках. Хендлеры, хуендлеры хуйтаски. Как быть?
http://codetheory.in/android-handlers-runnables-loopers-messagequeue-handlerthread/ - Хорошая статья, которая экономит время. После нее можно сразу переходить и тыкаться в хендлерах.
https://blog.mindorks.com/android-core-looper-handler-and-handlerthread-bd54d69fe91a - еще одна от миндоркса.
https://blog.nikitaog.me/2014/10/11/android-looper-handler-handlerthread-i/ - еще одна интересная.
>Хочу изучать популярные либы и не быть говноедом!
Если ты сразу после курсов переползаешь сюда - будь готов, что ты не будешь знать как это делается под капотом, и в конце концов соснешь когда-нибудь.
Retrofit - стандарт для взаимодействия с сетью. Она идет в комплекте с okhttp3, начинаешь с последней, а потом переползаешь на сам ретрофит. Так же для справки можешь гуглить volley.
RxJava - одно из решений для выполнения кода в бекраунде. Ниже ссылочки, смотри и поглощай.
https://www.youtube.com/watch?v=YPf6AYDaYf8-[Развернуть] rxJava идея с нуля
https://www.youtube.com/watch?v=3jdvLrYZfB4&t=[Развернуть]
https://www.youtube.com/watch?v=0IKHxjkgop4[Развернуть]
https://coursehunters.net/course/master-klass-po-rxjava-s-mvvm-dlya-razrabotki-pod-android
https://www.youtube.com/watch?v=t34AQlblSeE[Развернуть] - retrofit
Неплохо было бы и изучить MVP. Вообще его следует изучать сразу. Видишь MVP - сразу пиши нормальный код. Никаких нахуй асинтасков внутри активити. Для самообразования можно написать его голыми руками или прогуглить, как это делается.
https://github.com/ArturVasilov/AndroidSchool - здесь рассматривается архитектура, и как ее ели с 2011 года.
MVP:
https://javarush.ru/groups/posts/505-mvp-v-android-dlja-samihkh-malenjhkikh - для понимания
https://github.com/Arello-Mobile/Moxy - плюшка для поворотов экрана
https://github.com/sockeqwe/mosby - англоязычная плюшка
MVVM - костыли от гугла:
Для нормального понимания желательно знать AAC.
https://startandroid.ru/ru/courses/architecture-components.html - свежие уроки от Димона
https://proandroiddev.com/the-missing-google-sample-of-android-architecture-components-guide-c7d6e7306b8f - для продвинутых
Пример MVVM
https://github.com/ericmaxwell2003/MvvmTipCalculator
Вышеописанные два подхода - всего лишь обертки, чтобы вынести логику из views. Для более углубленно изучения рекомендуется почитать
this: https://habr.com/company/mobileup/blog/335382/
Пример на котлине:
https://github.com/hitherejoe/GithubTrending
> Хочу анимировать мои говноподелки!
https://www.youtube.com/watch?v=dzB-1VlHJW8[Развернуть]
Онли теория. Первые двадцать минут покрывают больше половины статей, которые можно найти на медиуме и т.д.
Здесь побольше практики на любой вкус: https://labs.ribot.co.uk/exploring-meaningful-motion-on-android-1cd95a4bc61d
Так же можно подробно почитать про смены сцен: https://blog.prototypr.io/applying-meaningful-motion-on-android-a271a873bd78
> Я заебался. Почему мои приложения постоянно падают в проде и как эту хуйню фиксить?
Для этого придумали тесты. Для общего понимания читаешь короткую статью
https://medium.com/android-testing-daily/the-3-tiers-of-the-android-test-pyramid-c1211b359acd
> Не хочу писать на Java!
- Kotlin — JVM-совместимый язык от JetBrains. Есть лямбды, стримы и делегаты. С 17.05.2017 поддерживается официально.
https://www.youtube.com/watch?v=-H98SWHayL4[Развернуть] - свежие лекции на русском, объяснение корутин прост бжствно
https://www.amazon.com/Kotlin-Action-Dmitry-Jemerov/dp/1617293296 - библия
https://kupdf.com/download/kotlin-for-android-developers_59a05e2ddc0d60992a18496b_pdf - Kotlin for Android
https://www.udacity.com/course/kotlin-for-android-developers--ud888 - курсы Udacity
> Есть что-то кроме нативных приложений на Java/Kotlin?
- Flutter - кросс-платформенный фреймворк от Google. Js с аля строгой типизацией. Если совсем поехавший можешь начинать с него.
https://flutter.io/docs/ - документация
https://www.udacity.com/course/build-native-mobile-apps-with-flutter--ud905 - курсы от Udacity
Остальные куски:
ReactNative — мочаскрипт во всей красе.
- PhoneGap/Ionic/Titanium — имя им мочаскрипт-младшие, принципы у них разные, кроссплатформенность одного кода. Популярность у них разная как и размер комьюнити. Вопросы по ним — в js-тред.
- Qt — кросс-платформенный фреймворк на C++. Используется в основном для игры и для приложений с высокими требованиями к производительности (обработка изображений, звука, ГИС-системы). Спрашивать в C++ треде.
- Xamarin — кросс-платформенный фреймворк на C#. Представляет из себя обёртку над Android API. Куплено Microsoft. Теперь есть бесплатная версия. Спрашивать в C#-треде.
- BugVM — кросс-платформенный фреймворк, написанный на Java. Форк невинно убиенного RoboVM.
> Хочу писать игры!
LibGDX - слишком медленная параша для больших проектов, но познакомится можешь. Unity - для адекватных, Corona SDK, LOVE, Defold и другие. Спрашивать в /gd/.
> Что нужно, чтобы взяли джуниором? Что учить в первую очередь?
Нужно хорошее знание Java, понимание базовых принципов Android (жизненный цикл activity/fragment, что такое Context, intents, services, UI thread, support library и ее версии (уже androidx), shared preferences, SQLite, Handlers, Executors, Content-Providers), знание популярных библиотек типа Retrofit + Glide/Picasso + RxJava2 + Dagger2(по обстоятельствам) + гугловские поделки jetpack, понимания СОЛИД и других паттернов проектирования. Базовое понимание что вообще такое Gradle. И хотя бы несколько готовых приложений.
Полезные ссылки:
https://coursehunters.net/mobile-development - очень много уроков и не только по ведройду. Почекай и посмотри, вдруг зайдет.
https://www.youtube.com/channel/UCSwuCetC3YlO1Y7bqVW5GHg - канадский челик, поясняет за архитектуру и отвечает на разные вопросы на стримах.
https://github.com/toddmotto/public-apis - бесплатные API для создания приложений.
https://github.com/AlexeyZatsepin/Android-ORM-benchmark - бенчмарки на вопросы о том, какую БД выбирать.
https://androiddev.apptractor.ru/category/podcast/page/0/ - подкасты ведройд разрабов которые шарят про все и вся
Старая шапка, но похуй, какую нашел в архиваче.
Можете 500ым постом запостить новую, если у вас есть.
вопрос от нюфага
работаю не погромистом, но на текущем месте появилась возможность переквалифицироваться. В последних тредах всплывали фразы, что мобайл сейчас уже не такой хайп, а в будущем будет скатываться, да и вообще лучше вем. Хуйня?
Хуйня, штмл и жс на девайсах все еще работает со скоростью говна и с таким же юзерэкспериенсом.
Спасибо
Не для холивара вопрос: такое будущее касается и ведроидов (название треда видел)? Сам я обладатель девайса для геев, но по работе задача актуальна для обеих платформ.
Иос еще более анально ограничен, они в жизни не пустят хтмл говно в стор просто из-за того, что им нужно анально привязывать разрабов к макам.
Дарова ебать, вот тебе PWA как он есть
https://apps.apple.com/app/id1232780281
Да и мобильные приложения на веб-хуйне - это не хтмл-цсс-говно в вебвьюхе, а самые настоящие нативные элементы. Прочитай как react native работает. Его узкое место - это жс-мост, от которого в ближайшем будущем избавятся и будет на уровне флаттера фпсы выдавать.
Нейтив не сдохнет, потому что в платформозависимых и узких местах его не заменить, но потеснить его могут. Из кроссплатформы сейчас главные
React Native
+ большое комьюнити реактодебилов
+ создает элементы нативно
+/- жопаскрипт
- низкая производительность
- нищие девтулзы
Намечается ре-архитектура, которая должна пофиксить последние два пункта
Пример приложения https://apps.apple.com/ru/app/id985746746
Flutter
+ высокая производительность
+ хорошие девтулзы
- язык - что-то среднее между явой и жопаскриптом, нигде больше не используется
- рендерит все сам, вендорлок
Когда-то там должна выйти фуксия с юай на нем
Пример приложения https://apps.apple.com/us/app/id1241229134
Куда вкатываться не понятно. По опыту десктопов победит жс-дрысня, если пофиксят проблемы с производительностью
PWA это не среакт. Это 100% тормозящая вебвью говнина. И я знаю как работает твой среакт.
>>535026
Ну пусть катится в кросплатформу, хули. У флаттера в 15 раз меньше вакансий на хх, у реакт нейтива в 3. И конечно же опустим маленький момент, что при работе с кроссплатформой, нужно знать хотя бы одну из этих платформ, чтобы не приспустить в штаны, когда понадобиться взаимодействие с нативной частью и ебашить бриджы. Алсо, все жду новые статьи из разряда "как мы отказались от среакта" как у Эирбнб.
Это зависит от сложности и функционала приложения. У меня много примеров успешных приложений, которые обошлись без нейтива или использовали уже готовые пакеты. Разумеется, если ты хочешь быть только мобильным разработчиком, который может сделать что угодно, то ты должен знать нейтив. Но ты не учитываешь что на реакт нейтивом занимаются фронтендеры, а для них вакансий больше.
> последних тредах всплывали фразы, что мобайл сейчас уже не такой хайп, а в будущем будет скатываться
Смотря о каком будущем речь идет, сейчас рынок мобилок только растет еще больше, чем раньше. Вон все крупные игровые компании начинают активно клепать игры под мобилки, чтобы кусок такого жирного рынка себе забрать.
Вкатывайся в Kotlin Multiplatform, пока технология только развивается, а в будущем будешь востребован, ибо все эти флаттеры и реакты полная херота.
Флаттер и реакт - фреймворки для юай, а котлин мультиплатформ про бизнес логику. В будущем они скорее в тандеме будут работать, а не против друг друга.
Не, флаттер и реакт в целом в помойку пойдут, потому что для ui появится мультиплатформенный Jetpack Compose.
Иди читай в слаке каналы по мультиплатформе. Как я понимаю, планы именно такие.
Нет, но очень желательно. Можно конечно на плюсах, на Xamarin, на кордове, но это все залупа из под коня и тебе не нужно. Самое то это котлин, но учить колин не зная жабы = быть дауном. Ах да, Flutter еще есть, но читать код на дарте то еще удовольствие
> Флаттер и реакт - фреймворки для юай, а котлин мультиплатформ про бизнес логику
Че за хуйню я читаю?
> будущем они скорее в тандеме будут работать, а не против друг друга.
А, не ты ли тот дегенерат, который подключил котлин мультиплатформ к флаттеру и высрался на медиум по этому поводу? Вот я знатно проорал тогда. Нахуй тебе писать логику на котлине, если ты можешь писать ее на жс или дарте, ебанутый?
> планы именно такие
Можно для начала хотя бы мультитредовые курутинки в нейтив завести? И меморимодель пофиксить, чтобы не было форсед иммутабилити с костылями на атомикреференсах?
Ну ты хорош, красава. На флаттере же с реактом можно же только кнопки рисовать.
В андроиде котлин используется для того, чтобы подкидывать новые данные на ui, бизнес логики в приложении должно быть по минимуму, потому что она инкапсулируется на сервере в rest запросы. По сути, твоя задача получит и отобразить, все. Причем тут колин и бизнес логика ваще понятно
https://www.youtube.com/channel/UCxGXkPks1Ykbx2Plt4DgZlA
В тред написал, а ссылку не кинул, уебан
Вакансий для джунов нету, в снг одни говнопроекты короткосрочные на мобайл(ios/android). Для вката иди лучше во фронтенд.
Нету, потому что это пока только планы. Компоуз будут в мультиплатформу допиливать либо гугл, либо через опенсорс. Джетбрейнсы вряд ли этим будут заниматься.
> Можно для начала хотя бы мультитредовые курутинки в нейтив завести
Уже завезли и их можно даже потестить вроде. Скорее всего они появятся в 1.3.70.
Меморимодель фиксить скорее всего не будут. Но в целом это не мешает, просто надо уметь готовить. Как пример - Reaktive от badoo, они там запилили мультитред в нативе.
Нихуя блять не понял, но можешь спокойно выпиливать Navigation Drawer, использовать обычный DrawerLayout и делать в нем вообще че хочешь.
Вкатыватся в то, что хочешь. даже на ерланге можно найти работу.
Спасибо, попробую, не думал, что эту херню можно просто добавить как layout. По поводу того, что ты не понял, как я понимаю при navigation drawer к итемам этого дравера нельзя при установке на них слушателя привязать активность(отдельный activity класс для каждого элемента), можно лишь привязать класс, который екстендит Fragment, таким образом этот класс по сути может обрабатывать лишь примитивные ui манипуляции и больше нихуя, я спрашивал, может ли этот класс екстендить не Fragment а полноценную активити, либо быть каким-то образом связаным с полноценной активити.
Полезный совет, спасибо.
https://github.com/BijoySingh/Scarlet-Notes
Я клонировал репозиторий и установил андроид студию. Ставил с оф. сайта. Как теперь собрать приложение? У меня линукс, если это важно.
Алсо, до того как поставил андроид-студию с оф.сайта - я ставил её флатпаком. При импортировании проекта мне предложили скачать(?) какой-то gradle и использовать его. Я нажал ок, там что-то начало собираться, но в конце посыпались ошибки о неправильной версии gradle или типа того. Ну и я решил, во-первых, поставить студию с оф.сайта, чтобы траблы с флатпаком исключить, ну и заодно попросить у вас инструкцию как и что вообще делать.
Короче. Вот я клонировал репу и поставил студию. Дальше что?
Пройти нахуй с такими вопросами. Если ты не можешь решить этот вопрос, то даже не стоит начинать.
Что начинать, шизоид? Мне понадобилось приложение собрать, у меня не получилось, я пришёл за советом. Я разрабатывать ничего не собираюсь, внезапно. Энивей, я уже всё собрал.
Пока котлин стоит на месте и пилит какую-то мультиплатформенность, дарт уже стянул все лучшее.
Мне котлин наоборот кажется этаким пхп, в которых натаскали все что модно лежало, а потом фиг пойми как это все вместе работает.
Не согласен с тобой. Мне, например, нравится то, что Котлин позволяет максимально полно применять функциональный подход в условиях строгой типизации. Можно максимально ёмко реализовать любую функциональную модель. Он, по сути, взял лучшее от Джавы и функциональных языков. Раз уж на то пошло, с пхп можно как раз сравнить Дарт, учитывая его ориентированность. Он изначально создавался для веба и он довольно неплох, на самом деле.
>фиг пойми как это все вместе работает
Странно видеть подобное. Так и работает, устройство работы чего именно тебе непонятно?
Только бизнес-логика из функциональщины, дальше обычных простых лямбд, превращается в не сопровождаемую кашу.
Поэтому для мобильных приложений аля тяп-ляп grud еще терпимо, а куда что сложнее, начинается боль.
ФП интересно писать, как вот сопровождать, нет. Поэтому ФП в чистом виде скорее ненужный квест на переусложнение, чем прагматичная практика.
Но, к сожалению, этими неокрепшими умами язык сам по себе не продвинуть. Как барахтался внизу рейтингов так и остался языком для андроид разработки (в прочем, внизу и ваш дарт и го и прочее).
Один только плюс в сторону дарта, у него хотя бы нет этого наивного пиара, он просто продвигается за счет флагманского проекта. Что, я считаю и должен делать каждый новый язык. Ну и у дарта там есть хот-релоуд, компиляция (котлин нейтив там что-то уже несколько лет вязнет в самом себе).
Сопровождаемость напрямую зависит от правильности проектирования. Если придерживаться принципа "разделения ответственности" в отношении условных функциональных блоков, никаких проблем не возникает. Камень преткновения функционального программирования в том, что оно предоставляет большее количество возможностей обосраться, отсюда и сложности. Надо просто быть внимательнее и своевременно делать тесты, дабы обеспечить должную гибкость в модифицируемости.
>>546311
А что тебе даёт место в рейтинге? Это не влияет на развитие языка и его эффективность в решении задач. Это отражает его востребованность на рынке, но реальность такова, что любая технология может однажды умереть. Если ты не "сиделец за зарплатку", покрытый пылью инертности, то проблем с переходом на любую другую технологию не возникнет.
>Камень преткновения функционального программирования в том, что оно предоставляет большее количество возможностей обосраться
Слишком абстрактно навалял, не о чем.
ООП выдрессировал программистов мыслит обобщенно, видишь ты метод, аля searchInDirectory() и ты приблизительно понимаешь что там и надо ли тебе туда лесть, а ФП вместе с лямбдами городит кишки наружу, мне всегда нужно пройтись по лесенке кишок чтобы понять гениальную мысль очередного ФэПэшера.
Языки которые пошли по масштабному пути ФП, обречены.
Спасибо джаве и питону, что не пустились в свое время на волну хайпа.
>А что тебе даёт место в рейтинге?
Как что? Ты вчера в айти пришел?
Мне это дает понять,
-стоит ли вообще обращать внимание на технологию или это выпук,
-есть ли будущее у проекта, стоит ли на нем вообще что-то начинать
-будут ли доступны программисты и насколько дорого придется их потом нанимать, если язык так и будет скребсти об пол рейтинга.
-будут ли на нем определенное число библиотечных решений.
-будут ли библиотечные решения качественные (1,5 фалловира библиотеку не отдебажат)
-будет ли нормально число документаций, примеров, чтобы мне в сорцах не ковыряться.
и так далее...
>ФП вместе с лямбдами
ООП вместе с классами...
>городит кишки наружу, мне всегда нужно пройтись по лесенке кишок чтобы понять гениальную мысль очередного ФэПэшера.
Это проблема не ФП, а людей, которые пишут на ФП. В ООП тоже можно нагородить ебанутой хуйни из абстрактных фабрик синглтонов, в ИП можно нахуярить глобальных переменных.
>мне всегда нужно пройтись по лесенке кишок чтобы понять гениальную мысль очередного ФэПэшера
Слушай, ну ебланов никто не отменял. Качественный ФП-код вполне читабелен.
>и так далее...
Вполне достаточно отслеживать и анализировать тенденции, которые позволяют увидеть более полную картину.
>ООП вместе с классами...
Противоречий тут нет, просто ты "шаблонно-мыслящий" и слышал эту фразу только в связке дополнения к перечислению и не можешь иначе воспринимать. в данном случае ставиться усиление на классы или лямбды
>Это проблема не ФП, а людей, которые пишут на ФП
Очередное "это не язык/парадигма плохая, это программисты кругом плохие". Вот питон не дает сделать спаггети-код из лямбд и там его нет, в отличие от каши в котлине.
>на питоне нет Х, чтобы хуячить говнокод
Там же можно лютые односторочники на генераторах писать.
У тебя на пике джава и код вполне себе читаем и понятен. Я бы еще в паре мест перенос строки ебнул и стало бы вообще отлично. Алсо у тебя на пике только одна лямбда.
Я понимаю, что котлинисты ущербы с одной извилиной, но к чему это ты щас конкретно высрал?
Даже без каринки читаемого функционального котлиносинтаксиса?
Согласен, котлин даже не настоящий язык, это просто синтаксический сахар на жабой, 8-ки по функционалу хватает для всего, для чего позиционируют котлин.
SQL сам по себе кирпичами срать позволяет.
Не тот пик запостил, но в целом тоже вложенная лапша, котлин дает просраться еще сильнее в этом плане.
Первой ошибкой было натянуть прокси джавы, а не начать с язык нуля, со своей парадигмой, а не фиксом джава бойлерплейта, слизывая все со скалы, груви и еще чего-то.
Достаточно было посмотреть на скалу и груви, чтобы понять, что это максимум что можно выжать с прокси языков.хотя эти потуги и победы в мобильной разработке, это зачет
Вторая ошибка, это командой IDE разработчиков делать язык общего назначения. Я не слежу за новостями, но что-то у меня ощущение что они сейчас просто стагнируют с таким охватом желаний. Что там котлинконф вам принёс?
Третья ошибка, вложиться в хайп, вместо в флагманского проекта или библиотек. Мне довелось наткнуться на достаточно фанатичное и токсичное комьюнити, я думаю, виноват именно этот хайп. Не понимаю, зачем привлекать к себе не тру-программистов, а всякий ваннаби скам, который наиграется и слиняет так же легко, как пришел.
Четвертая фундаментальная ошибка, язык ограничен возможностями IDE, не думаю что там когда-то появиться какая-то мета-шняга, которая не по силам IDE. Туллинг должен помогать, а не ограничивать. Ну и привязка к одному вендору это всегда печально привет шарпистам.
Пятая, язык не привносит ничего нового, даже убогий го дает тонну технических плюшек, ради которых его еще можно терпеть но не стоит.
Я хз где она, мне лень искать, я думаю ты и без меня видел ФП лапшу, на которую требуется определенное время чтобы разобраться, вместо звучного перечисления методов из ООП, которое легко читается и понимается как текст.
Но конечно, тебе не хватит мозгов, или гордости, чтобы принять этот факт и ты напишешь в духе - да тут все просто, подумаешь потратил ресурс мозгов на ненужные кишки логики, которые торчат у каждого ФП наружу.
Мне ФП напоминает времена, когда нужно было в говнокоде лесть в кишки функций, чтобы понять что там происходит или как она работает.
Так себе совет - не слезать с инвалидной жабы 8, которая никогда уже не будет развиваться в андроиде, в котором нету будущего у джабы. Весь андроид уже по сути перекатился на котел.
Если судить о котле как о языке в целом, то тоже сомнительное заявление. Градл перекатывается на котлин, спринг перекатывается на котлин и т.д.
Я думаю на андроиде не будет будущего jvm-подобия.
Накатывать на закате лет котлин, так же весело, как надевать лыжи весной.
Котлин писался с нуля для внутренних нужд компании, которая разрабатывает IDE для джава платформы. Джава, видимо, показалась все таки неудобной (с чем я с ними согласен), поэтому сделали свое, в первую очередь для себя.
> Вторая ошибка, это командой IDE разработчиков делать язык общего назначения
Что за язык общего назначения? А какой еще может быть для jvm? А тогда какой язык делать - не ошибка? С учетом исходной цели -
получить удобства для работы под jvm.
> Третья ошибка, вложиться в хайп, вместо в флагманского проекта или библиотек.
Ну тоже сомнительный поинт по поводу флагманского проекта. Наверняка IDEA почти полностью на котлине уже. И тот же Space, который на конфе анонсировали, полностью на котлине, от фронта, до бэка. Гугл вон использует
И вообще, зачем переписывать библиотеки, когда котлин предлагает гладкий интероп с джавой - то есть можно просто использовать уже готовые и привычные джава библиотеки, ничего не переписывать, а продолжать их использовать и просто писать на котлине с его удобными фичами и сахарком.
> Четвертая фундаментальная ошибка, язык ограничен возможностями IDE
В каком месте он ограничен IDE? Бери качай компилятор, тулзы и пиши в блокноте, кто мешает? Все находится в опенсорсе. Хочешь эклипс - качай плагин и пиши в эклипсе. Я как раз тут вижу ситуацию, когда наоборот присутствует удобный и поддерживаемый туллинг.
> Пятая, язык не привносит ничего нового, даже убогий го дает тонну технических плюшек
Хорошая шутка про го. Дает тонную плюшек, например, отнимает дженерики и ООП.
>>547300
Эксперты на 5 рублей.
>Мне довелось наткнуться на достаточно фанатичное и токсичное комьюнити, я думаю, виноват именно этот хайп.
>Нет будущего у котлина.
Потому что никому нахуй не нужно мнение диванного эксперта. Есть у него будущее или нет - решит рынок. В большей степени токсичны как раз джава-карлики, потому что им не нравится тот факт, что Котл уже вытеснил её из рынка мобильной разработки. Никто не станет создавать новый проект на Джаве, а это о многом говорит. Плюс код Котла короче, читабельнее и прагматичнее - это важно, когда важна сопровождаемость. Ещё, кстати, Котлин всё чаще используют в связке со Спрингом, но это всё выдумки, не верьте. Не слезайте с Джавы, окажите услугу.
>>547314
>не хватит мозгов, или гордости, чтобы принять этот факт и ты напишешь в духе - да тут все просто, подумаешь потратил ресурс мозгов на ненужные кишки логики, которые торчат у каждого ФП наружу
Где связь между недостаточным уровнем знаний и ФП?) Если ты не можешь в качественный ФП код, это не значит, что это что-то плохое.
>в говнокоде лесть
Сразу представляется картина говнокода с лестными комментариями, забавно.
>>547409
Пусть сидят на ней дальше, убеждая себя в том, что у Котлина нет будущего. Это же дефолтные аффирмации деревянных работяг.
>MVVM - костыли от гугла:
>Для нормального понимания желательно знать AAC.
выпал из промышленной разработки пару лет назад
livaData и ViewModel от гугла так и остались костылями и все юзают rx или это уже стандарт в разработке??
А что RX предлагает взамен ViewModel от гугла?
> ViewModel
Это обычная замена ретейн обжекту, не обращай внимание на название. Можно пихать туда че угодно, что должно не пересоздаваться на конфиг чендже.
>Если ты не можешь в качественный ФП
Опять программисты виноваты.
Да где вас таких выращивают?? У ФП четкая проблема, она вытаскивает кишки кода наружу. Его не плохо готовят, он неудобен в сопровождение, это факт. Да, удобно список по фильтрам пустить, но этим же не заканчивается.
>Есть у него будущее или нет - решит рынок.
Ты готов инвестировать свои силы и время в пустоту? Ну я рад за тебя. Другим же дали мозги и возможность анализировать.
>Если ты не можешь в качественный ФП код
Сам придумал, сам покритиковал. Умница, че.
>это факт
Нет, это твоё субъективное мнение.
>инвестировать свои силы и время в пустоту
Что значит в пустоту? Ты конвертируешь их в профессиональный рост и получаешь деньги, в чём проблема? И развиваешься ты как технический специалист, т.е. в целом, понимаешь? Я могу без особых проблем пересесть на любой другой язык и освоить используемый стек. Все технологии похожи, поэтому сделать это легко. Если нужно будет, или если захочу, я это сделаю.
Аж грустно стало от того, что ты написал. Нельзя же так строго связывать своё будущее с одним языком и стеком, ещё не раз пересядешь на что-то другое.
>Сам придумал, сам покритиковал. Умница, че.
Я предположил, без обид.
>Нет, это твоё субъективное мнение.
Тебе просто не хватает опыта работы. Ты видишь через призму "раз это писать легко и интересно, значит и сопровождается это легко и интересно".
ФП - усложняет сопровождение кода, когда его критическая масса в коде становится большой. Именно поэтому ФП языки не популярны. Не потому то это интеллектуальная задача для избранных любителей борщей, а потому что это не практично для реальной работе.
>И развиваешься ты как технический специалист, т.е. в целом, понимаешь?
>Я могу без особых проблем пересесть на любой другой язык и освоить используемый стек
Не, не можешь, любой стек и технология отнимает определенный бесценный ресурс (как твою память, так и время). Причем чем больше ты углубляешься, тем более ненужными твои знания становиться. Представь ты стал специалистом какого-нибудь спринга, а условно завтра он стал ненужен. Целый вагон знаний и опыта просто обнулился. надеюсь ты не из тех кто начнет спорить за сипринг, это был пример
В ИТ очень много конкурирующих технологий и чтобы к 30 не оказаться на обочине, надо анализировать перспективу уже сейчас.
Тут аналогия ближе к скачкам. Ты либо ставишь на фаворитов и имеешь шанс победы, или ты ставишь на аутсайдеров, но успокаиваешь себя что получил опыт, знания и вообще процесс важен чем результат.
>Я предположил, без обид.
Поговорив сам с собой, ты никого не обидел.
>> Если имел опыт в програмаче, можешь посмотреть видосики отсюда https://web.stanford.edu/class/cs193a/videos.shtml
>> These videos are privately uploaded and are for viewing by Stanford CS 193A students only
как смотреть?
с шарпа на котлин
да
1) Когда используется MVP, а когда MVVM?(Я так понял, что в Андроиде используют только их) Не могу разобраться до конца. То есть в MVP отсутствует связывание данных, есть интерфейсы представления, которые отвечают за состояние и слушатели, а MVVM - связывание данных, т.е. view меняется автоматически и ни с кем не взаимодействует - только отображает изменения. MVVM, полагаю, реализует более строгое разделение ответственности. Правильно? Если нет, объясните. Если можно, про MVI расскажите. Применяют ли его? В каких случаях?
2) Если я залью пару приложений в плей маркет, есть ли смысл лить исходники в гит? Как лучше поступить?
3) По поводу Jetpack Compose. Я так понимаю, что это альтернатива ui-xml, т.е. каждый ui-элемент создается в коде, что позитивно сказывается на производительности, т.к. ресурсы выделяются в момент вызова(как с инлайн функциями), соответственно, такой подход предусматривает отдельный жизненный цикл. Верно?
Большое спасибо тому, кто ответит на вопросы.
javascript
1) На вкус и цвет, все три паттерна применяются, выбирай какой душе угодно.
2) Можешь залить, а можешь не заливать. Лучше вообще в стор не заливать, там и без тебя говна хватает, да и 30 баксов сэкономишь. Апкшку можно в гитхаб релизы залить.
3) Цикл определяетя активити, а не вьюшками. На счет производительности еще хз, нужны бенчмарки. Можешь про компост забыть до следующего гугл ио спокойно.
1. Так вот, вопрос в том, когда применять тот или другой?
2. 30 баксов не жалко, вопрос только в целесообразности. В моем проекте с используется C++ ndk, алгоритмы реверсивной обработки bitmap, кастомная реализация визуального поиска, не хотелось бы лить это в паблик. Мб сделать приватный реп и показать его, если попросят, а для галочки показывать сами приложения?
3. Compose пока не используют в продакшне, т.к. он сырой, как я понял?
1. напрямую колать и агрегировать на устройстве;
2. через свою бекенд-прослойку, которая будет агрегировать и отправлять на устройство готовые данные, которые просто надо отобразить на UI;
3. Ваш вариант.
1. > выбирай какой душе угодно
2. Ну значит залей в плей стор, епт, в чем проблема то? Залей исходники в битбакет, можешь даже отдельный акк с ридонли правами завести для этого приватного репо, чтобы скидывать кому хочешь. Ну или в приватный гитхаб, там вроде тоже до 5 человек в приватные репы добавлять можно.
3. Он в пре-альфе, конечно не используется.
Большое спасибо!
Ниче, бывает, лучше недостатки шарпа напиши, там... (они же должны быть, по-любому)
Вкатываюсь с нуля. Т.к. в СНГ плохо с хай-тек промкой, а впахивать на ЗАО "Гос. сиська и КОбанчики" (суверенный дистр линукса/драйвера для гос. скотозагонов), кормя паразитов, мягко говоря, не хочется, то остается только веб и мобильная разработка. То есть, остается только второе. Остановил выбор на Kotlin/Java/Scala. Т.к. живу в мухосрани на 600 к, то текущие вакансии таковы (после беглого мониторинга одного из сайтов, поэтому выборка не полная): Java - 20, Kotlin - 4, Scala - 2. Стоит также отметить, что ява подходит везде, именно котлин или скалу никто отдельно не указывает. Как понимаю, вкатываться в последние два можно только если ты из ДС-1-2, т.к. не возникнет проблем с поиском подходящего места. Выходит, что в мухосрани наиболее целесообразно вкатиться в яву, а потом уже плавно перекатываться на котлин? Было бы лучше сразу надрочиться на один синтаксис, но провинциальные реалии не оставляют выбора. Что можете сказать по своему опыту?
Учи не джаву хуяву котлин хуетлин, а андроид сдк. О того, что ты прошел задачки с джавараш хуйни, на ведро ты писать не научишься.
Ну если знаешь только шарпы, то да, больше вариантов нету. А если язык не главное, то уж лучше тот же флаттер тогда освоить с мерзким дартом. Но лучше конечно под натив на котлине писать.
Платят больше. К тому же у айосеров стабильность в плане стека.
Ты хуй обещал забить.
Зависит от паблик апи. Я вот например платное юзаю с бесплатным лимитом использования, поэтому кеширую все запросы на своем серве. Если апиха бесплатная и тебе поебать, то можешь на клиенте ебашить.
Почему дарт мерзкий? Мне он показался как-то ближе (наверное потому что ближе к джаве), котлин я вообще местами не понимаю (если их противопоставлять).
До сих пор не пойму зачем они так над конструктором надругались
Что за сфера? Для людей или для себя? Если для людей, то сколько скачиваний и монетизировал ли?
Еле-еле нашёл ровно джва плеера которые так делают - Lisna (пикрел) и ещё похожее говно оформленное только в совкостиле.
Данные плееры - говно ебаное, шо по дезигну, шо по куче всего остального. Пользуюсь Лисной. Итак, вводные закончились, теперь вопросы.
Во сколько мне обойдётся реализация подобной идеи руками мамкиных фрилансеров (если местные хотят и могут то я контакты оставлю)? Вариантов три, як я понимаю:
1. Раскопать в интернете дефолтный плеер от того телефона и что-то там поменять в коде, дабы он не ругался на то что я запускаю его не на LG (давным-давно час потратил на поиски, еле нашёл и вытащил, а мне говорят, мол дружок-пирожок, нахуй иди со своим сяоми). Вариант, кмк самый дешёвый, но опять же, я нихуя не уверен что системное приложение 2014 года будет нормально работать на ведре 2020го.
2. Разработка плеера с нуля. Тут я не ебу, скорее всего есть там всякие сборочки бесплатные и опенсорнсные, и нужно будет прикрутить только вот подобный интерфейс. Но опять же хз, я не разбираюсь.
3. Создание плагина/мода для любого плеера вроде Poweramp, который добавит такую хуйню.
Подытоживая. Нужнен плеер с древовидной стуктурой и возможностью менять дезигн (темы нинужны, максимум смена цветов фона/текста, плеера ну и поставить картинку какую на фон мб).
Так воть, господа, куда мне идти и во сколько мне это встанет по деньгам?
Сходи сначала в mobi с таким реквестом. Я думаю ты не один такой любитель ПО ПАПОЧКАМ.
За бутылку пива напишу, те такую хуйню. На следующей неделе выходит новый фреймворк, хочется потестить. Если не найдешь плеер, отпишись.
Во фронтенде офк.
>Подытоживая. Нужнен плеер с древовидной стуктурой и возможностью менять дезигн (темы нинужны, максимум смена цветов фона/текста, плеера ну и поставить картинку какую на фон мб).
100-300к.
1.
а, где меньше. в ведройде.
Scala не нужна. Вкатывайся в котлине, но после понимания основ ждавы). А лучше обрати внимание на flutter.
Паттерны для задротов, просто хуяч код так, чтобы понятно было. Как минимум половину из них ты будешь сам использовать даже не осознавая.
Насколько флаттер лучше, чем реакт нэтив? Насколько я понимаю, и там и там все равно нужно иметь хоть какой-то опыт в нативной разработке, чтобы фиксить платформоспецифичные баги, но на реакт нэтив проект хотя бы не придется разработчика искать десять лет, а это уже охуенный камень в огород флаттера.
И реакт хорошая технология) Но если честно не знаю как там взаимодействие с хардвером обстоит.
Я серьёзно. Что там должно быть? Кто-то делал себе резюме в виде гит-профиля? (с примерами кода и т.д.) Какие примеры вы там размещали?
Пишешь свой домашний проект. Который пишешь несколько месяцев. Смотришь какие в вакансиях технологии просят. Основные фреймворки стараешься добавить в свой проект, делаешь хорошо, чтобы не стыдно было показывать свой проект. Если будешь что-то придумывать от себя, тогда вообще сразу с руками и ногами оторвут. Проект нужно тоже какой-нибудь интересный придумать. Туду листы уже никому не интересны, хотя если там будет удобная и неглючная работа по удалению и вставке новых элементов, тогда можешь показать. В том же Google Keep сделано по уебански и тормозяще. Не забываем про использование всяких крашлитиков и тд.
Расписал ты пиздато, но его нахуй пошлют 99.99% компаний еще до собеса, так как коммерческого опыта на андройде нету.
Factory, Delegate, Singletone, Obsever и т.п. если ты про это.
А так читай Clean Architecture и смотри как пишут в гугле. Google I/O приложение можешь выкачать посмотреть. Еще можешь посмотреть как написан Telegram (и охуеть).
> коммерческого опыта на андройде нету
Программистов на андроид с коммерческим опытом аист приносит?
Если угадать с уровнем ЗП, тогда могут взять на какой-нибудь проект, если бюджет позволяет. Нужно уметь себя продавать, как на гитхабе, так и при личной встрече на собеседовании. И вообще не стоит забывать, что есть фирмы, которые постоянно берут себе всяких вкатывальщиков, которые хотя бы приходят на работу вовремя. Такие места обычно опытные разработчики обходят стороной. Поэтому такие фирмы "мы бы и собаку.." берут кто подходит под минимальные требования, т.к. сроки горят/намечается новый проект/старый разраб внезапно съебался.
Даже забавный момент был на текущей работе, что фирма не может найти разработчиков со знанием английского на иностранный проект. В РФ не нашли, пошли нашли индуса который умеет в английский и продали его на проект.
Да лан нахуй. Я в Мухосрани, проработал до 34 годиков в веб-параше, делая всякую хуйню в основном для нужд интранетов провайдерских. Всё заебало, хочу катиться дальше. Выбрал мобильную разработку потому что от веба уже тошнит, а бэкэнд выбрать не могу потому что опыт хайлоада итп получать негде. Из мобилок есть Android и iOS. По разным причинам я выбрал Android. На джаве я в институте даже какие-то курсовые делал, но это было 15 лет назад, так что называть это знанием джавы я как-то стесняюсь.
Удалить реакт для начала.
Странно, что уже такой взрослый и задаешь такие вопросы. Если хочешь уйти из вэба в Android-разработку, тогда сразу откидывай радужные представления о ней. Здесь так же есть свои проблемы, болячки и несправедливость. Все что ты знал про вэб придется забыть, переиспользовать сможешь только общепрограммистские темы.
Говоришь из мобилок есть обе платформы, тогда почему к этим ребятам не подойти? Они тебе с радостью смогут провести ликбез по разработке мобильных платформ.
Может ты достиг своих лимитов по возможностям и не стоит вскрывать эту тему? В твои то года это не так просто будет сделать, если ты не одаренный и тебя это затягивает с головой. А так как разработчик под Android советовал бы смотреть в сторону iOS
Перекатился из вротенд параши(1.5 года опыта) в ios за месяц. Сидел по 16-20 часов каждый день, уж очень хотел сделать приложение свое.
И как тебе? Я вот думаю наоборот фронт попробовать.
Яебу? Это уже наверное десятый язык, на котором я пишу и везде всё в целом одно и то же.
К чему тогда вообще этот вопрос? Если он гипотетический, то вполне очевидно, что в этом просто нет необходимости. Если ты знаешь Котлин, ты поймешь и Джаву - достаточно применить сопоставительный метод и определить различия, т.к. они очень похожи. внезапно
Принцип инверсии: если взять любую книгу по Котлину, где, как правило, объясняются его преимущества читай: отличия, и отбросить его синтаксический сахар, ты получишь желаемый результат. К тому же, Джава в большей формализована и строга, так что понять её со знанием Котлина не составит труда. Имхо, чем больше гибкости в реализации чего-либо - тем сложнее это понять.
>Если ты знаешь Котлин, ты поймешь и Джаву
Такое возможно вообще? Как можно накатить котлин не знаю джавы? Это как накатить тайпскрипт не зная джаваскрипт.
>Такое возможно вообще?
Вообще без проблем, как и в случае со Скалой. Он вполне самодостаточен. К тому же, изучая Котлин, ты учишься читать байт-код, что способствует пониманию Джавы.
>К тому же, изучая Котлин, ты учишься читать байт-код,
Лол, где вас так зомбируют? Я не хочу читать байткот, зачем он мне.
>Он вполне самодостаточен
>ты учишься читать байт-код
Окей
>>559690
Прошу прощения, перефразирую. Если ты хочешь быть инженером, а не кодером, ты можешь изучить JVM. В этом случае проблем с пониманием Джавы не возникнет, гарантирую.
>Он вполне самодостаточен
>ты учишься читать байт-код
>Окей
Kotlin (Котлин) — статически типизированный язык программирования, работающий поверх JVM и разрабатываемый компанией JetBrains.
Это самостоятельный JVM-язык.
>>559684
>способствует пониманию
Понимание — универсальная операция мышления, связанная с усвоением нового содержания, включением его в систему устоявшихся идей и представлений.
>В этом случае проблем с пониманием Джавы не возникнет
>Kotlin...Это самостоятельный JVM-язык.
Так что ты там понять-то хочешь? Котли или Джаву?
Ты умудряешься в одно своем посте сам себе противоречить, инженер.
>В этом случае проблем с пониманием Джавы не возникнет
У меня за 15 лет не было проблем с понимаем джавы. Пока какая-то говно-перделка не модифицирует сама байткод, мне в этот байткод лазить не надо. Кстати, котлин полноценный язык или очередная перделка модифицирующая байткод? Риторический вопрос
>Kotlin (Котлин) — статически типизированный язык программирования, работающий поверх JVM и разрабатываемый компанией JetBrains.
>Если я скопирую цитату из википедии я буду казаться более важным?
Обосрался и накопировал цитат с ру-вики.
Ты конечно туп, но твои фанатики сейчас ставят акцент, что котлин это не только jvm язык. Так что прекращай сать против ветра.
> Кстати, котлин полноценный язык или очередная перделка модифицирующая байткод?
А полноценный - это какой? Kotlin Native в бинарники компилится, это делает его "полноценным"?
Бля никогда в хохляндии не был, но сразу понял откуда это говно. Я латентный хохол?
На всю страну 96 вакансий
И видимо для совсем вкатывальщиков из тех 96 вообще на пальцах 1 руки посчитать можно
Ну вдруг кто-то не хочет во вротенд вкатываться, хули.
>Так что ты там понять-то хочешь? Котли или Джаву?
Анон задал вопрос о том, как изучить Джаву тому, кто знает Котлин, а я ответил ему.
>У меня за 15 лет не было проблем с понимаем джавы.
Так ответ был не для тебя, можешь гулять.
>>559848
Вряд ли.
>>559859
Ты ищешь фанатизм там, где его нет.
Фанатизм — слепое, безоговорочное следование убеждениям с обязательным навязыванием своей точки зрения другим.
Он свойственен тем, кто хейтит Котлин. Какой в этом смысл? Не нравится - не используй, никто не заставляет.
>Туду листы уже никому не интересны
Всем здрасти, я давеча придумал очень нужное (мне) приложение с туду листами, если вдруг кто-то хочет сделать туду листы в целях обучения, для портфолио или просто для души, отзовитесь, могу поделиться занятной концепцией, а также помочь по мере возможности опыт на джаве: есть, опыт на андроиде = 1 месяц курсов + пару простых прилаг.
Стоит ли вообще пробовать, если от большого кол-ва ui тошнит?
И ещё вопрос: как дела вообще с удалёнкой? Как в джаве? Или есть большой шанс поработать дома?
Потому что приложения новые нахуй не нужны на нативе. Обычному (быдло)юзеру - телега/ватсапп/вайбер, вк, банковское приложение, ютубчик и каг бы все. Ну разве что создать анонимную мобильную имиджборду(не клиент харкача).
>Имею профильное образование
>писал на крестах, шарпе
>спрашивает что выбрать - жаву или язык на его основе
Яркий пример что пидорашьи вузы выпускают васянов которые не идут дальше языков для советских калькуляторов и не могут в гугол
Кокая няша.
> C++
> Язык для калькуляторов
> UE4, Google Chrome, Photoshop, миллиарды их...
> Библиотек на чистом C примерно столько же
Что-то тут не сходится. Ты же понимаешь, что васян здесь на самом деле ты?
Ну так и пиши на D (dlangui), C++ (Qt) и Go хоть под десктоп, хоть под ведро. Чё тебе java c котлиным понадобились?
>Google Chrome
А что, его на Си писали? Теперь понятно почему он забивает файл подкачки и летит с виндой синим экраном, наверное в 80-х не было 8 гигов оперативы, не справляется язык илитариев техников с современным железом
Меня вывел из себя этот ебучий конченный обоссаный SDK Manager консольный петушиный, который находится в папке с Android SDK.
Сука эта мразь никогда у меня не работала, что на старом компе, что на новом. Пизда ебаная открывается консоль и тут же закрывается - вот и вся работа SDK Manager. При этом гугл на своем сайте заботливо говорит "вы там скачайте sdk и если не хотите Андроид Студию, устанавливайте нужные Android API через sdk manager". Сукиииии бляяяяя эта хуйня никогда не работала мразь конченная этот sdk manager блядина обоссаная пизда сука недотраханая ебал я его суку подзаборную вафлю конченную.
Фух, аж чуть полегчало. Кхм. В общем парни, у меня не хочет ни в какую работать SDK manager. Ну что ему нужно? Ну почемуууу он не запускается? Неужели я такой криворучка и у всех он работает, а у меня нет? Гугл выдает ответы, но они пока не принесли решения проблемы.
Он все время хочет что-то чтоб я ему сделал. JAVA_HOME у меня прописан сука!! Сейчас просит repositories.cfg мразь. Я его создал по совету из гугла просто текстовиком, ВСЁ РАВНО ЭТА МРАЗЬ ЗАПУСКАЕТСЯ, ЧТО-ТО ПУКНЕТ В КОНСОЛИ И ТУТ ЖЕ ЗАКРЫВАЕТСЯ, БЛЯДИНАААААААААА.
Почему нельзя просто взять и запустить эту шваль SDK manager? почему???
виндовс 10
https://www.youtube.com/watch?v=-dH-xU4CSJY
> Пизда ебаная открывается консоль и тут же закрывается - вот и вся работа SDK Manager
Ты дурачок или что? Сдк менеджер это консольная утилита, а не гуй.
https://developer.android.com/studio/command-line/sdkmanager
>>565672
Охуенный мужик и курсы у него четкие нет
Энтерпрайзный десктоп живее всех живых. Не в джаваскрипте же данные с буровой обсчитывать.
Так через консоль его и запускай
>Сдк менеджер это консольная утилита, а не гуй.
Это ты дурачок, читать то умеешь? Почему она открывается И ЗАКРЫВАЕТСЯ, олень?
А чего ты от нее ожидаешь?
Ты даешь ей команду, она выполняет ее и закрывается.
Если ты не дал команды - включается и выключается.
вот попробуй вызвать с опцией --list
1. Перейти в папку с бинарем
2. В адресной строке эксплорера набрать cmd.exe
3. В консоли набрать имя бинаря (используй tab для автодополнения)
Первые 2 пункта выполнил. Когда запустил тем самым sdkmanager.bat, он выдал какую-то надпись, которая дошла до 100% и всё.
А как этой хуйне какую-то команду дать? Она вообще живая, судя по консоли?
Tab дополняет только дописывая названия файлов в директории, того же sdkmanager.bat, но не дает список команд. Я кароч не понимаю...
какие есть библиотеки/модули, для распознавания и перевода текста? для первого вроде есть тессеракт но мне не очень нравится, что он работает оффлайн, а вот апишка переводчика у гугла платная, перевод их хочется, уж слишком он хорошо переводит азиатщину.
Ты в каком классе учишься? Серьезно, без троллинга. Ошущение, что тебе на новый год комп подарили и ты сразу решил стать ниибатьсявроткрутымдевелопером.
Загугли уже наконец как работает командная строка.
У Firebase есть Translate SDK
Введи например "sdkmanager.bat --help" - получишь список команд,
"sdkmanager.bat --list" выведет все доступные пакеты.
Так что там у молодежи сейчас в трендах?
если для перевода нужен инет, то от офлайнового распознавания профита никакого
нет ли проблем c iap? всякие крешлитики аналитики завезли? можно ли подключить java либу ?
>на flutter пишет кто?
Те же люди, что вчера писали на реакт нэйтиве, лол.
>как там с взаимодействием с google play сервисами?
>нет ли проблем c iap?
>можно ли подключить java либу ?
Ну и нахуя он тебе, если ты собираешься локнуться на одной платформе? Флаттеры и реакты нужны чтобы сделать какую нибудь приложульку уровня "хачу зокозать пиццу", чтобы хуя-хуяк и кроссплафторменно и рейтинг в 1,5 звезды.
Почему под одну, потом и под иось
Просто без некоторых либ никак, например яндексовская аналитика
> Яндексовская аналитика
Пчел, с нее крашей больше чем пользы. Там умнички олимпиаднички посчитали себя самыми умными и решили сделать кросс-зонд через aidl. Получилось так себе, но работу по знатному зондированию с матчингом юзеров через все приложения с метрикой оно выполняет.
Аналитика к тому же спокойно через бридж юзается, даже в хуяндексе так делают, смотри доклад с мобиуса.
Не понимаю, к чему ты это написал, как она устроена и так понятно. Лучше б рассказал, если ли аналог их событий с параметрами и возможностью просмотра в отчетах, иначе как бы она плоха не была, альтернативы нет
Разве флаттер кому-то нужен? А мне казалось, что он нахуй никому не нужен. Двум с половиной компаниям, которые приветствую знакомство с ним, разве что. Нормальные люди пилят кроссплатформенность на нейтиве
Вкатываюсь в андройд, интересно было бы почитать что там в шапке.
Кстати, с чего посоветуете начать новичку знающему кор джавы? Стоит ли вкатываться на Java и дальше или стартовать с Kotlin? Как там инфа про флаттер и фуксию? Уже сдохли и дадут спокойно существовать андройду?
Тоже вкатываюсь в мобильную разработку но ситуация с вакансиями печальна. В веб парашу(фронт-енд) вообще лезть не хочу.
Да. Если ты не один из шизиков, которые вечно срут в этом треде по поводу и без, дабы потом потроллькать, объясню ситуацию: сейчас флаттер используется для прототипирования, в т.ч. и кроссплатформенного. (как Руби/RoR, например) Коммерческой разработки на нём слишком мало, читай почти нет. Есть смысл ознакомиться с ним, но не более.
Спасибо, братиш. И поясни, пожалуйста, как все-таки обстоят дела с реакт найтивом? Если ли на нем коммерческая разработка? Стоит ли в него вкатываться? Большой ли порог вхождения?
Как понять, что ты ты готов к тому, чтобы ДАТЬ ПОСАСАТЬ всем няшам-стесняшам-эйчаршам в округе?
Достаточно ли запилить несколько своих приложений или нет?
>Стоит ли в него вкатываться? Большой ли порог вхождения?
Тогда придется идти во фронт(где мобайл будет идти в дополнение), чистых мобилок очень мало.
Если идешь во фронт - нужно знать js, ангуляр, вьюжс и прочие местные прибамбасы.
Порог вхождения, соответственно, нужно рассматривать в контексте целого стека. Если хочешь идти в чистый мобайл, то лучший вариант - выбрать одну ось, что больше нравится, и найти работу. Если вдруг понадобится по работе, тот же свифт довольно быстро учится. Такая же история и с кроссплатформенной разработкой.
> Как понять, что ты ты готов к тому, чтобы ДАТЬ ПОСАСАТЬ всем няшам-стесняшам-эйчаршам в округе
Когда у тебя есть строчка хуяндекса в трудовой.
А если серьезно?
Как вообще заниматься андродевом на ноуте? Не надо только историй про макбуки за $кк
> Не надо только историй про макбуки за $кк
Почему не надо? Кто ж виноват, что у тебя амуде и винда не 10 потому что на 10 есть канари версия для амуде через хипер-в
Разработка под ведро ведро не для старых компов.
Лан, попробую
ОП, храни тебя Аллах
1. Почему у приложений на андроид такая ебанутая архитектура?
2. Можно ли делать аппы на андроид на чем-то кроме явы с полной совместимостью с ОС?
Можно на других jvm языках, на всяких платформах вроде react native и flutter, просто это все говно и на стек оверфлоу проблемы свои быстро не решишь
> такая
Какая?
> с полной совместимостью
С полной нельзя. С неполной милости прошу с кроссплатформенному шалашу.
Проще поискать проекты на гитхабе да посмотреть, кто как делает.
А вообще, по секрету, все эти "архитектурные паттерны проектирования" и устройство проекта - субъективное удобство. Нету никакой зафиксированной идеальной архитектуры или структуры проекта.
Берёшь просто телефон конектишь через кабель с пред настроенной передачей и отладкой по USB и не мучишься
package by feature, not by type/layer
> аебали ебучие наслоения логики из говнокода, в которых неделями разбираешься, чтобы дописать 2 строчки.
Добро пожаловать в андроид разработку.
ты походу в тырпрайзе не работал
И как ощущения? Нак настроение у коллег? Цвет их лиц? Наличие мешков под глазами? Не дай бог, блеск глаз?
Бамп вопросу
Есть один ведроид-8.0, в него вставлена microSD. Как, сука, на неё писать? WRITE_EXTERNAL_STORAGE выдан, во встроенную память я могу писать, а на внешнюю - хуй. Как я понял, гугл высирает по новому апи для работы с флехой чуть ли не каждую версию, поэтому мне бы только для орейо, будьте добры, плииз.
Мне бы для NDK..
/storage/0000-0000/Android/media/hui.pizda.zalupa
и оно мне такое выдаёт "Illegal byte sequence" - бля, бля, ну ёпта, а.
Разрабы ведроида совсем ебанулись? Это ж внешняя карта со сраной exFAT - на том же ПК туда что угодно писать может. Нагромождайте свою секюрность на встроенном сторадже, а внешняя - это ж помойка по-определению. Пидоры ебаные.
Поясните, что такое actionscript? Трудно ли вкатиться?
Я тут просто узнал что Политопия написана на нем, а я-то думал что для мобилок на андроиде все на джаве. При этом эта игрушка довольна легкая в плане нагрузки и выглядит получшем чем та же Civilization Revolution.
Судя по треду голанга - да.
В твоем случае легче всего будет использовать либо Flutter (писать на Dart), либо React Native (писать на Javascript).
Понял, спасибо, посмотрю какой из них лучше подойдёт
мерфи ж вроде глубоко копает, для вката слишком
На каком языке програмирования хуйня для андроеда пишется7 Это так-для общего развития. Если что, я не програмист и не вкатывальшик, я простой заводской парень, подумывающий о том, дабы заказать услуги у таких же братьев-заводчан, вкатывающих в ИТ.
Спасибо, но я за косарь возьму белорусских вкатывальщиков.
Ваш тред по тегу не ищется.
Кстати, дайте соус той телки, которая делала видео по андроиду
Is that an android phone in your pocket, or you just happy to see me?
Пофиксил. Проблема была в конфиге, где было установлено неподъёмное значение на выделение памяти Джаве.
Путь конфига: Users > %username% > .AndroidStudio$version > config > studio64.exe.vmoptions
Если студия не запускается, но нет даже старта процесса, логов или ошибки - сначала чекайте системные переменные на предмет наличия проблем с версией или директорией, затем данный конфиг.
Ставь линукс.
Посяните книжку для вката.
С учетом того что жабу не знаю.
Надо с нее начинать же? Может есть книжка по джаве именно под андроид?
Почему в бек или фронт js не вкатишься? Спроса больше.
Когда всё мутнеет, а на переднем плане поздравления с победой и кнопочка.
В какую сторону гуглить?
Это статья такая старая, или я не туда смотрю?
blur
Потому что под андроид сейчас все на нем пишут, все новые библиотеки на котлине, все новые проекты на котлине, гугл говорит, что для андроида первый язык разработки - котлин и т.д.
На андроиде старше 8 версии джавы точно не появится, а это плохо, поэтому будущего у джавы там нету.
Ну я так понимаю, раньше этот код был по умолчанию, при запуске Navigation Drawer Activity
Потому что де-факто на котлин никто из галер особо не переходит, при том сейчас верх его хайпа. Скоро хайп упадет и будет как с скалой. Хотя сам язык ничего, свои говняшки вне работы пишу на нем.
Да, да, хорошо
Обзмеялся с таких заявлений. Открой гитахаб твоих андроидных галер да посмотри, что все на котлине уже давно пишут.
В джаве никакого смысла на андроиде больше не осталось, джетпаки, компоузы пишут на котлине. Если была задумка научится писать на джаве, чтобы потом можно было перекатиться в какой нибудь бэкэнд/энтерпрайз, то тут тоже облом - на андроиде древняя кастрированная джава 8, знания которой уже устаревают с каждым днем.
Первая часть может быть, вторая нет
Ну не, до сих пор многие RX-ы до сих пор юзают. Но у нас в компании полностью на котлин перешли и для асинхронщины тоже только корутины, флоу, каналы юзаем.
Андройд гавнойд
Ебаный рот, меня за человека не считают тут походу
Я с 2014 не могу эту шкутку понять.
Вопрос по RxJava.
Есть один Flowable, который испускает объекты.
Мне нужно подписаться на поток этих объектов и запустить некую долгую операцию для каждого из них. Но нужно сделать это так, чтобы эта долгая операция была запущенная одновременно не более чем для n объектов. Для этого в сервисе есть метод, который говорит, готов ли он принимать новые объекты или нет. И если да, то я передаю ему объект. Примерно так, короче: https://pastebin.com/6fQuRybg
Как нормально это реализовать? Вроде onBackpressureBuffer() должен что-то подобное делать. Но непонятно, как мне туда свой метод myService.hasFreeSlots() запихнуть.
Пальцем в небо у flat/concat/Map есть параметр задающий максимальную конкурентность или полный шедулер, так можно ограничить единовременную параллельность.
> Конечно лучше бы сервис переделать, но походу для тебя это не вариант.
Вот я тоже думаю о том, что имея только два метода hasFreeSlots() и process() по нормальному и не сделать, видимо. Только если пихать где-то Thread.sleep() и проверять hasFreeSlots() снова. Как его лучше всего переделать было бы?
> У тебя колбек onSlotBecomesAvailable есть?
Нет. Думаю, его можно сделать. Но ведь тогда его будет сложно подружить с rx, разве нет? Сервис будет говорить мне, когда мне надо запрашивать элементы из flowable, а это ведь не так работает: flowable наоборот посылает мне все свои элементы, когда считает нужным.
> А может тебе подойдет просто в тупую вызвать flatMap с maxConcurrency параметром?
>>589969
> Пальцем в небо у flat/concat/Map есть параметр задающий максимальную конкурентность или полный шедулер, так можно ограничить единовременную параллельность.
Попробую. Но в этом случае непонятно, как узнать, что обработка завершена. Метод process не возвращает ничего, только запускает обработку. Наверное, хорошо бы его переделать, чтобы он возвращал Completable и тогда уже думать, что с ним делать?
Сервис не мой, я могу лишь ограничено менять его при необходимости.
И нет, у него пока никакого пула нет. И на самом деле он не в разных тредах работает, а другую внешнюю систему вызывает.
Так а как его сделать не хуевым тогда?
Я неплохо знаю джаву и все фишки котлина которыре +- похожы на яву сразу понимаю(например в яве:
void method(int arg...)
а в котлине
fun(varargs:Int)
Ну вот уже час нихуя не понимаю что такое инфиксные функции.
Привидите если не слоожно максимально простой пример и объяснение.
Всем хеллов ворлд в этом чатике
Кто-нибудь использует весь функционал? Удобно-неудобно? Особенно интересует Navigate.
Сейчас думаю начать проект для себя, со всеми новомодными плюшками, которые доступны.
Ну инфиксная нотация, это когда у тебя есть выражение 2 + 3, где + = это инфиксная функция, которая складывает два целых числа: https://kotlinlang.org/docs/reference/functions.html#infix-notation
> коммерческих приложений
Никакие. Рынок перенасыщен. Количество устанавливаемых пользователем новых приложений падает уже который год. Рост общего количества установок достигается просто увеличением массы юзеров с мобилками (развивающиеся рынки).
Пик 1: more than 50 percent of smartphone users in the U.S. download zero new mobile apps per month. Вас банально не найдут и не скачают в том количестве, чтобы выйти на профит.
Пик 2: вероятность того, что ваше говно от вкатывальщиков станет топ 10 приложением на устройстве - 0%.
Либо создавайте что-то принципиально новое и вливайте миллионы в рекламу, либо пиздуйте в геимдев и вливайте миллионы в рекламу, все деньги там.
1) есть несколько интерфейсов, которые содержат абстрактную реализацию;
2) есть класс, который имплементирует интерфейсы и содержит дефолтную реализацию;
3) есть фабрика, которая описывает создание нового объекта, в котором можно переопределить дефолтные методы класса 2.
Получается, что создаваемый объект реализует сразу несколько интерфейсов, но все подробности сокрыты в дефолт-классе, который собирает модель готового объекта.
Поправьте, если неправильно.
Но всё это делается инструментами из коробки, зачем тогда нужен Даггер? Что именно он делает? Позволяет скипнуть промежуточные шаги и связать объекты без написания части реализации?
ебать, синтаксик как говнище
> Здесь не буду публично обсуждать
Ой пиздец стартапер мамкин.
>>594338
Нихуя не понял.
Вот у тебя есть вьюмодель. Тебе из нее нужно в сеть ходить через репозиторий. Соотвественно зависимость - вьюмодель - репозиторий - ретрофит. Ты можешь все 3 класса руками инстансировать и в конструктор друг другу пихать, а можешь это дело автоматизировать через DI.
Но высока вероятность, что тебе станет лень руками все создавать и передавать, и ты скатишься в поедание говна с синглтонами. А может тебе хватит выдержки, живут и люди с ручным DI.
Нет
То есть все собесы провалены?
А для собеседования на галеру проект уровня мувисерчера пойдет?
setExactAndAllowWhileIdle
Да, но это новый уровень поддержки, что весьма интересно. И это, вероятно, только один из шагов. Гугл, возможно, планирует работать над уменьшением сложности использования NDK, но почему именно сейчас, вот в чём вопрос. NDK спокойно жил своей жизнью в сопровождении специфических задач, в чём причина такой активности?
В смысле новый уровень, создать файлики? Так это года так 2 назад было. Туда же и поддержка cmake.
Стоп машина, только что качнул канари - запустилось без вопросов. Значит сношу стабильную студию - и сижу стильном, модном, молодежном канари.
мимо вкатан
побираются
че за страна ?
Почему решил перекатиться с тырпрайза? Как будешь переживать просадку в зп? Почему не Dart с Flatter, он по ходу взлетает?
>>600929
Я не перекатываюсь с тырпрайза, хочу выучить для себя, дабы занять вечера все равно делать нехуй, т.к. появилась идея приложения, а знаний хуй да нихуя. Про флаттер наслышан, что его производительность воняет, да и знание котлина лишним не будет, его все чаще последнее время в энтерпрайзе используют по моим наблюдениям. Так что посоветуете? The Busy Coder's Guide to Android Development? Курсы на Юдасити? Must-know библиотеки, без которых никуда в современной андроид разработке? Как делать удобный, отзывчивый, плавный UI мне импонирует в этом плане приложение твича импонирует например?
tg @sstzx
Что луче использовать jni или NativeActivity? (с++)
> NativeActivity
Если ты хочешь рисовать все в сях
> jni
Дернуть какую-нибудь хуевину / нарисовать на конкретном сюрфейсе.
ясно,спасибо
> перехожу с шарпа
Тебе – нет. Привыкни только к тому, что джава и половины фишек сярпов не имеет.
Сап программач, поясните тупому за корректную реализацию такой муйни:
есть "Логин" активити, в ней мы логинимся и переходим в активити "Главный экран".
Как я понял гугл рекомендует активити главного экрана инитить вью модель условно так в самой активити:
private val viewModel: MainViewModel by viewModels(
factoryProducer = { SavedStateVMFactory(this) }
...
)
ооокей, фабрики красота и прочая ебатория, но проблема в том, что на главном экране у меня несколько фрагментов, и:
— я должен показать часть данных, которые пришли после логина (условно говоря фио юзера, его инфу и тд).
— должен показать ленту сообщений.
Это 2 разных запроса.
Вопрос, как реализовать передачу части данных в viewModel главного экрана из результата запроса логин активити? Она же интится блядь из фабрики которая вообще в душе не ебет, что там загружено другой активити (ну не лично самой активити само собой, но все же), пиздец я тупой.
Нужно написать программу с функционалом чтения QR-кодов на Андроид. Есть какие-то библиотеки, которые позволяют это делать на устройстве без подключения к интернету?
Нашел вот это: https://firebase.google.com/docs/ml-kit/android/read-barcodes
Сможет ли эта библиотека работать оффлайн?
Сможет
Вопрос более неактуален.
ТОЛЬКО ЧТО ПОЗВАЛИ НА ИНТРЕВЬЮ НА ДЕВА ФЛАТЕРА
Hello,
Right now we are looking for a Flutter developer for a 100% remote position on a contract base initially for 6+ months, but it’s potentially open-ended. (Depends on you skills and productivity.)
The proposed salary for this specific position is up to $2500+ per month, depending on interview result.
АААААААААААААААААААААААААААААААААА
А ТЕПЕРЬ НА ГАЛЕРКЕ БУДЕТ ЗА КОСАРИК ГРЕСТИ
Скажи что передумал и уебываешь. Мало ли какие жизненные обстоятельства бывают.
Пригласили бы тебя на флаттер не знай ты жабу, как же.
https://github.com/journeyapps/zxing-android-embedded
firebase mlkit слишком мокрописечный. Кроме того, из коробки нету многого функционала
Здесь рекомендуется использовать Intent. Я читал, что Intent - это как бы внешний сервис, который используется программой (типа как COM или OLE в Windows). Получается, что вместе с программой он будет устанавливаться, да?
А как при удалении - он удалится самостоятельно?
Всё понял. Нужно купить вебкамеру для полной эмуляции
Если кому не лень, подскажите, пожалуйста. Нужно элемент сдвинуть по оси Х на середину активности.
И сдвинуть чуть правее от середины, до 80% примерно.
Хоть команду киньте какую нибудь. А то мне удалось найти лишь пикрил
Похоже, нельзя сделать плавную анимацию картинки с сохранением кликабельности.
Похоже, мне с такими запросами к игровым движкам
Можно. Сначала анимируешь транслейтом, в конце анимации выставляешь нужные лейаут параметры.
Падажжи
> With the property animation system, these constraints are completely removed, and you can animate any property of any object (Views and non-Views) and the object itself is actually modified.
А ты как их двигаешь вообще? Я то думаю, что у меня всегда клики по транслейту работали.
Ну же, я точно видел в треде анонов которые говорили, что без флатера никуда и он всему голова или вы и сами без работы сидите?
У меня есть элемент, который я бы хотел переместить (1 картинка). В частности я хотел бы изменить строку, которую выделил стрелкой.
Могу сделать анимацию через XML файл, или же сразу программно (2 и 3 картинка). Но в обоих случаях элемент перемещается без кликабельной зоны. Варианты решений:
1) плавно менять ту строку с первой картинки;
2) совершить обычную анимацию, после которой обновить ту самую строку с первой картинки.
Как можно всё это реализовать?
Падажжи, открыл для себя Property Animation, похоже, это что-то, чего я ещё не пробовал. Сейчас изучу
Да.
Подскажите очевидно бесплатные инструменты, сдк и т.д., которые бы позволили создавать простые AR приложения. Нужна банальная работа с камерой, GPS и накладыванием моделей/текста на координаты GPS
Можешь грузить 2 апкшки в стор, одна с мин апи маленьким, вторая с больше кит ката. Но проще дропнуть киткат.
Скачал отсюда драйвер.
https://downloads.mariadb.com/Connectors/java/connector-java-2.5.4/
mariadb-java-client-2.5.4.jar
Добавил в проект в студии.
Но оно не работает пишет
java.sql.SQLException: No suitable driver found for jdbc:mariadb://
А еще вот такая ошибка
Didn't find class "java.sql.DriverAction"
гугл толком вообще ничего подсказать не может.
Вот что за херня? На stackoverflow у всех все работает
тупо
Class.forName
DriverManager.getConnection
и все заебца
Что учить: Java, Go или Kotlin для создания летающих без лагов приложений И ИГР на Андроид? Яву?
>Юнити
Юнити это же тяжелый движок-надстройка, нет? Я хочу для начала делать простые игры, типа шахмат мб
>модули через флаворы подключаешь
ок попробую
>как туда зависимости суются
externalNativeBuild {
cmake
и
sourceSets {
Сап, двач. У меня два очень тупых вопроса, один из которых проблематично задать гуглу, а формулировка второго напрямую зависит от ответа на первый.
1. Как называется поебень (виджет?), обведенная на пикриле? Да, я знаю, что на пикриле гейОС, но я видел подобные штуки и в андройде. Наверняка у этой хуйни есть какое-то специальное название. Я имею ввиду не кнопки "Переместить" и "Удалить", а вот эти выдвигающиеся штуки. В телеге есть похожая хрень, например, можно почесать пальцем диалог и там кнопки справа появятся.
2. Как это запилить в мой хэллоуворлд в андройд студио? На это можно не отвечать, т.к. уже смогу нагуглить, но буду рад, если кому-нибудь будет не лень послать меня нахуй объяснить.
Спасибо анончик, сотен нефти тебе.
>С видеокурсов от Udacity.
Я конечно все понимаю, инглиш ду ю спик ит?
НО курсы на английском что ли только? Смотреть сериалы - это одно, но вот учится программированию на английском - это перебор.
Если ты смотришь сериалы, то никакой проблемы для тебя уже нет. Лексикон скуден и мал.
Там в первой главе с xml субтитры русские нормальные есть, а текс очень простой, его транслейт понимает хорошо, я все понял.
К сожалению дальше написанных сабов нет и я не осилил. Пошел учить джаву - потом может вернусь, или новое что-то появится.
а) как-то дампать уведомление
б) дописать в апк в методе получения (гугля я наткнулся на OnMessageRecieved) отправление на сервер (или в бд), я не разбираюсь ни-ху-я в этом, что можно придумать?
Аноны, нужна подсказка по play console: Если не счету есть невыведенные деньги, их можно как-то использовать, кроме как вывести? старый акк зареган в америке, и счет вроде как нужен для вывода тоже из амер банка
[code]public class MainActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button button = new Button(this);
button.setText("play чё");
button.setOnClickListener(this::onClick);
setContentView(button);
}
public void onClick(View v) {
new View(new fuckingsnake());
}
}[/code]
А как правильно-то? Я тупой, да.
Книгу попроще взял бы что ли. BN перегружен инфой, особенно для незнающего язык.
Файл игрушки, собственно. Змейка. Отдельно запускал, работает. С обработчком беда именно. Мне нужно сделать так, чтобы после кнопки он и запускался, но что-то идёт не так. Пробовал через сет контент вью, эффект совершенно идентичный, вылетает и всё.
>Отдельно запускал, работает.
На кампукторе или андроиде? Может просто не хватать либ,например андроид не использует Swing Java
>после кнопки он и запускался, но что-то идёт не так
можешь запускать во 2 активити через интент
https://startandroid.ru/ru/uroki/vse-uroki-spiskom/58-urok-21-sozdanie-i-vyzov-activity.html
//LinearLayout LL = findViewById(R.id.LL1);
//FrameLayout FL = findViewById(R.id.LL2);
//View view = View.inflate(this,R.layout.text, LL);
//View view1 = View.inflate(this,R.layout.text, FL);
//LinearLayout LL = findViewById(R.id.LL1);
//FrameLayout FL = findViewById(R.id.LL2);
//LayoutInflater layoutInflater = getLayoutInflater();
//View view = layoutInflater.inflate(R.layout.text,LL,true);
//View view1 = layoutInflater.inflate(R.layout.text,FL,true);
метод inflate и у View, и у LayoutInflater возвращает View, добавляет ее в указанный Layout, и забирает от него LayoutParam (или не добавляет, в зависимости от параметра третьего). В чем разница между методами у этих двух классов ? И почему, когда я жмакую имплементейшн на них, мне показывается вот эта хуета ? Где их реальная реализация ?
Из документации:
>Inflate a view from an XML resource. This convenience method wraps the LayoutInflater class, which provides a full range of options for view inflation.
View реализует метод inflate, выступая в качестве обёртки LayoutInflater. У тебя просто не будет его экземпляра и ты не сможешь манипулировать им/его методами, что ограничивает тебя в возможностях.
ПОдскажите с высоты опыта: вот дизайнер нарисовал мне экран.
сверху кусок простого текста,
пониже еще кусок текста типа обратного отсчета (то есть каждую секунду обновляется)
пониже "лэйаут блок", который используется еще на паре других экранов с внутренностями типа текста, чекбоксов и кнопки
Во что лучше вынести этот блок? Как лучше инициализировать view модель этого экрана, если таких экранов несколько, только меняются данные (онм могут быть захардкожены, но create же вызывается для вью модели без параметров, как фабрике отличить для кого она готовит модель в данном случае?) где зранить эти захардкоженные данные? в репозитории? если нет, то где и чтобы поддерживался переворот экрана (те смерть активити)
NotificationManager должен работать. Студия ругается на что-то? Если ты делал по туториалу, проблема может скрываться где угодно. Проверяй в документации используемые флаги/константы. С ним не должно быть проблем, ведь тебе просто нужно передать ссылку на ресурс в контекст, значит проблема в том, что либо оповещение не создается вообще(не может создать инстанс), либо пытается кастить тип передаваемого аргумента(в этом случае вылетает ошибка каста), либо ты ещё где-то накосячил с логикой. Лучше покажи реализацию.
>>623753
Если я правильно понял тебя, можно использовать лэйаут в качестве контейнера для отображения фрагментов, имея одну активити, тогда и проблем с переворотом экрана не должно быть. Насчёт хардкодед не совсем понятно, но в любом случае выноси их в строковый ресурс и применяй проверку состояния, используя data binding. Если у тебя есть условный "viewModel.userName", ты можешь указать для него состояние, при котором ссылка на строковый ресурс в нём будет меняться на данные.
Код честно спизжен с какого-то сайта. В логах ничего, функция запускается точно, так что даже не знаю в чем может быть проблема. Что странно - я устанавливал готовый APK с одного туториала, и он не работал. Но программы из плея естественно работают с уведомлениями.
>Если я правильно понял тебя, можно использовать лэйаут в качестве контейнера для отображения фрагментов, имея одну активити, тогда и проблем с переворотом экрана не должно быть. Насчёт хардкодед не совсем понятно, но в любом случае выноси их в строковый ресурс и применяй проверку состояния, используя data binding. Если у тебя есть условный "viewModel.userName", ты можешь указать для него состояние, при котором ссылка на строковый ресурс в нём будет меняться на данные.
В целом правильно понял. Значит, я все верно делаю. Выношу повторяющуюся верстку в наследники лэйаута.
Но например представь есть 2 таких блока-наследника лэйаута подряд (с разными данными, которые не грузятся, а просто сохранены в приложении).
Значит, у них будет один и тот же класс viewModel (у вас же в андроид принято для простых вьюх использовать вьюмодели?), но как их коректно инциилазировать? Ведь через условный код
``` val model: MyViewModel by viewModels()```
будет дергаться стандартный конструктор в фабрике моделей, который даже доп параметров не принимает, а мне то нужны 2 разные модели (возмоэно где-то захардкоженные)
NotificationCompat, конечно, deprecated, но должен работать.
Попробуй создать канал перед тем, как билдить, вот конструктур:
>NotificationChannel(String id, CharSequence name, int importance)
Затем вызвать у менеджера: >notificationManager.createNotificationChannel(notificationChannel)
Его же передаешь в билдер.
>>623826
В таком случае имеет смысл поступить иначе и использовать вложенные фрагменты - Fragment и child fragment. Фрагментами в любом случае проще манипулировать, потому что их можно полноценно менеджить. Ты можешь поместить сколь угодно лэйаутов в child фрагменты и дергать их, используя флаги/изменяя видимость, сохраняя правильную последовательность зависимостей. К слову, разные активити могут использовать один и тот же фрагмент через контейнер и транзакции. Я всё ещё не до конца понимаю твой замысел, но что точно могу посоветовать - отталкиваться не от того, что у тебя "может быть не один условный лэйаут, а два", а от того, как предусмотреть возможность их добавления без каки-либо проблем. И не забудь про databinding. Viewmodel у тебя в любом случае должна быть в единственном экземпляре, поэтому твоя задача - опираться на это условие.
Охуенный совет. Обойти внимание да, а теперь просмотр вакансии на нем. Там будет 0
Получаю вышку на инженера, вкатываюсь во фронт только потому, что так решает рыночек. Но из логики было бы выгоднее вкатиться в андроид, потому что джавы у меня часов по 10 в неделю лекций + столько же наверное дома. Или же рынок реально такой злой и дальше надо будет фронт пилить и страдать?
я уже года 3 не искал работу, но мне кажется, что если ты хороший спец, не важно какими технологиями владеть. Главное, ты должен шарить, и шарить хорошо, ты должен в первую очередь решать проблемы клиентов и все такое. стать спецом сложно - поэтому если тебе больше нравиться андроид, а не фронт, то задрачивай его
Почему не флаттер?
потому что параша, баганая и нестабильная. Посмотри количество issues на гитхабе. Должно пройти года 2-3, чтоб эта помойка была более-менее юзабельной
Там каналы для уведомлений теперь обязательны начиная, вроде, с 8 андроида, если в твоих гайдах про них не говорили, то поищи гайды по новее.
Панелька называется ActionBar. Можно как вставить картинку в сам бар, так и сделать её фоном для него. Для каждой активити его можно установить в коде через создание экземпляра ActionBar и вызов метода getActionBar(), либо в xml, но первый вариант удобнее в случае привязки к данным. Для чистоты советую реализовать отдельную логику, которая будет дёргать ресурсы/данные по общему принципу, и применять её в зависимости от требуемого контекста.
> Для каждой активити его можно установить в коде через создание экземпляра ActionBar и вызов метода getActionBar()
Щас бы ActionBar в 2020 использовать вместо того, чтобы шлепнуть Toolbar или абсолютно любую вьюху в xml и кастомизировать его вообще как тебе угодно без ущербного апи.
Выше правильно описано, но лучше использовать Toolbar.
Поясните за геймдев. Часто вижу вакансии по разработке казуалок для мобил.
На чем лучше писать? libGDX, Cocos или сразу же учить c# и на юнити кросплатформенные пилить игры?
Юнити хорош, но блин, я лучше свифт накачу чтобы в перспективе добавить лычку ios разраба. ХЗ в общем, может вообще лучше в геймдев не соваться?
> лычку ios разраба
Хуйраба.
Геимдев с разработкой приложений пересекается примерно никак.
Пиздуй в гд в юнити тред.
Хочу порешать их.
Скиньте плиз, даже денег заплачу
Хотя через Java-код работает, но это скорее костыль, чем решение.
Так, я лютый новичок, так что прошу не ругаться.
Я слегка загуглил что такое стектрейс, и я так понимаю, мне, чтобы его осмотреть, нужно запустить приложение на эмуляторе.
Но из-за процессора мне приходится пользоваться только виртуальной машиной.
Я могу глянуть логкат без эмулятора?
> нужно запустить приложение на эмуляторе
> Но из-за процессора мне приходится пользоваться только виртуальной машиной
Это одно и то же.
Если ты свое говно запускаешь из прямо студии, то в студии нажми на логкат снизу, там будут все логи с крашами.
Воот, а у меня в студии не запускается. Вероятно, из-за процессора AMD. Потому прошу помочь мне вслепую.
При изменении темы на .NoActionBar в приложении не запускается ни одна активность кроме Main Activity
Сходи в магазин и купи андроид мобилу, отлаживайся на ней. Че как лох то я не пойму.
>из-за процессора мне приходится пользоваться только виртуальной машиной.
>из-за процессора AMD
Рязань? Если ты на винде, попробуй снести интеловский ускоритель эмулятора и перейти на hyper-v. Наличие поддержки виртуализации тоже проверь и далее по списку.
Для коннекта виртуалочки к студии кури adb. Не смотри что в гайдах юсб, через сеть(не обязательно вай-фай) тоже можно подключиться.
Удачи.
Да я не знаю. Не нравится мне заниматься фронтом и жсом в частности.
Но и андроидом я не пользовался лет 5 если не больше.
>Вероятно, из-за процессора AMD.
на официальном сайте андроид студии описаны ДВА официальных способа запустить андроид эмулятор на процессорах АМД. Первый работает только в виндоус 10 и использует WHPX, второй работает и в 7 и в 8.1 и использует специально разработанный драйвер. Я работал на мемном AMD FX и Win 8.1 одно время и с эмуляцией андроида всё было замечательно. Так что ты просто криворукий баран, не умеющий читать.
Найти удаленку фронтом проще
Мой фрагмент грузится около 1.3 секунды там нет запросов к api и прочих серверных вещей, только список с картинками и всякие дефолтные элементы, я подумал, что можно в это время отображать другой фрагмент, чтобы ui не выглядело тормознутым, но так нельзя видимо. Можно ли как-то заранее при первом запуске приложения отрендерить этот фрагмент, чтобы его первое открытие не занимало секунду?
Там скроллвью с констрэйнтлэйаутом внутри, что там править блять только если список с картинками
Это ресайклервью
Запихнул все данные в шейред преферансес через JSON. Чувствую себя так как будто сделал что-то очень плохое. Стоит ебаться и переделывать все в sqlite или оставить как есть, пока все работает?
нед
Ну там текст. Кажется что много, но на деле мб 10мб и довольно быстро пока что работает почти на всех телефонах.
Не туда смотрел, на жаве там больше примеров, чем на котлине.
а обычный текстовый не бекапится? и сейчас ты такой несешь пруфы
tg : @sstzx
некоторые говорят, что нет, ведь нужно научится читать на техническом английском. И с каждым днём я всё сильнее убеждаюсь в правоте их слов.
Как они сами заявили, это колбек, который сделает startActivityForResult - OnActivityResult юзлесс говном. По факту, будет что-то в духе
getFile { fileUri ->
...
}
Но как оно на практике, хуй его. В документации инфы кот наплакал, на всех форумах вообще 0.
Книга "Android Programming: The Big Nerd Ranch Guide" - можно ли после нее искать работу?
MVVM часто ли юзаете? Стоит ли отдавать ему приоритет, или брать MVP и не париться?
Firabase - стоит ли изучать?
ORM нужно ли? МБ ROOM?
И самый важный. Как выглядит процесс работы в реальной разработке? Новичок занимается дебагингом или чем вообще? Мне просто кажется, что на первой работе мне какую-то хуйню дадут, типа оптимизации макетов под разные мобилки.
Как работают с гитом в комманде, как делаются пуши и пул реквесты, что для этого почитать? Может все через гит флоу просто работают или что-то похожее на офисе идет?
Для тестов достаточно Мокито/Экспрессо?
Я уже и котлин бтв изучил, RecyclerView, SQLite, Java core раз 7 перечитывал из разных источников, Фрашменты, экшн бар, диалоговые окна, работу с камерой. Охуеть как много требуют от джуна по Android. Че дальше то будет? Надеюсь мне хотя бы $600 со старта платить будут. Иначе я бы лучше в дальнобойщики подался.
а как гугл узнает, что апк валидный?
Да, однозначно. Если честно, то на данный момент это единственная архитектура, которую стоит юзать в ведре. Она же за собой помимо знания viewmodel тянет также livedata и databinding.
>>643749
Это обычный сахар над стартактивитифоррезалтом всего-то. Можешь хоть сам такую написать. Файлы достаются через SAF.
>>640543
Адаптерделегейтс, не смей тащить епохи.
>>646670
А ты как то иначе сейчас пишешь?
>>646762
> единственная
Кокой ты категоричный.
> знания viewmodel
Ну там конечно "знания" огромные.
> livedata и databinding
Зачем? Можно спокойно биндить на сабжекты / чанеллы и не завязываться на какую то стремную хуйню с единственной сферой применения (пихнуть во вьюмодель) и прямой зависимостью на андроид сдк (привет роболектрик).
Чего грубый-то такой?
>Кокой ты категоричный.
Не хочешь - не юзай. Твой шанс пройти собес уменьшится раза в 3, все просто. Также по своему опыту прохождения работа есть, но люблю на собеседования ходить, для спортивного интереса + чтоб быть в курсе нового и актуального, если что пропустил могу сказать, что про мввм тебя спросят сейчас абсолютно везде.
>Ну там конечно "знания" огромные.
Достаточные. То, что ты поменял у себя презентер на вюмодель, а остальное оставил как есть, не значит, что ты понял все правильно. Вьюмодель - очень мощный и универсатльный инструмент, а не просто класс, куда надо запросы кидать, "штоб было))))0". И по твоей следующей реплике в после на 100% видно, что ты фишку вьюмодел и не выкупил.
>Можно спокойно биндить на сабжекты / чанеллы и не завязываться на какую то стремную хуйню
сallback-hell в 2020? Нет, спасибо.
>стремную хуйню с единственной сферой применения (пихнуть во вьюмодель)
Яснопонятно. Мы вам перезвоним. На собесе тебя просто разьебут в клочья.
>прямой зависимостью на андроид сдк
Мань, 99% андроид разработки завязано на андроид сдк. А то что ты упомянул робоэлектрик - твои личные сексуальные проблемы.
Кроме мвп больше ничего не знаешь? Давай еще мвц вспомни.
> очень мощный и универсатльный инструмент
Обычный ретеин обжект, только в красивой обертке.
> сallback-hell в 2020
Это ты к чему вообще? Где у тебя в рх цепочках или курутиновских чаннелах / флоу колбек хелл? У лайвдаты абсолютно нулевое применение, ты вместо нее биндишься из вьюхи на вышеописанное и радуешься жизни.
> Яснопонятно
Пихаешь лайвдату в рум и ретрифит по гайдикам? Понятненько.
> 99% андроид разработки завязано на андроид сдк
Ну да, лучше же лишний раз роболектрик запустить, чем писать простые и быстрые тесты без явных зависимостей на андроид сдк.
>>647267
Хорошо вангуешь.
Хуйню несёшь какую, пили код
>Кроме мвп больше ничего не знаешь? Давай еще мвц вспомни.
MVC и MVP - главенствующие архитектуры андроид проектов в прошлом, причем именно в таком порядке. О какой ты еще хочешь поговорить? MVI ? Юзается полуторами анонами со всего комьюнити, не отличается гибкостью, зато несет за собой пиздецкие нагромождения в коде. Особо не прижилась и не приживется.
>Обычный ретеин обжект, только в красивой обертке.
Только от гугла, который постоянно развивается, обновляется и расширяется по функционалу, заточен идеально под фрагменты и навигацию по ним.
> У лайвдаты абсолютно нулевое применение, ты вместо нее биндишься из вьюхи на вышеописанное и радуешься жизни.
Ты совсем ебанутый? Тебе надо на каждом экране иметь несколько состояний загрузки, ошибки, полученого контента етс. При этом чтобы всегда вся эта инфа сохранялась актуальной независимо от переходов, переворотов экрана и т.д. Я еще раз тебе говорю: прекрати обсираться тут привселюдно, зайди в гугл, нарой инфы про вьюмодел и мввм и все досконально прочитай и вникни, ты вообще не понимаешь, что это. Вот как минимум тебе пример - как ты строишь поведение приложения при переворотах экрана? Я конечно на 99% уверен, что ты кладешь на это болт (возможно, ты вообще не делал приложений с поворотами), либо пихаешь тонны инфы в savedInstanceState. Однако, открою тайну, так и быть: вьюмодели, в отличие от презентеров и обсервейблов сохраняются со всеми своими данными и после поворота держат их в себе, даже когда вью полностью пересоздалась. А при помощи лайфдаты, которую ты так и не осилил понять, ты сразу при пересоздании вью показываешь всю актуальную инфу, чего с обсервейблом у тебя сделать не получится.
>Пихаешь лайвдату в рум и ретрифит по гайдикам?
Среди всего прочего да. Проблемс?
> Однако, открою тайну
Спасибо!
> чего с обсервейблом у тебя сделать не получится
BehaviourSubject? UnicastSubject вместо копипасты SingleLiveEvent из проекта в проект? ConflatedBroadcastChannel если любитель курутинок? Есть куча существующих инструментов, которые уже решают ту задачу, которую решает лайвдата. То, что тебя гугл кормит сладким хлебушком, это не значит, что его нужно обязательно кушать.
> Проблемс
Ну чтож ты так, а как же курутинки, флоу? Это же тру вей от гугла!
2 телефона xiaomi на 855 снарпдрагоне, нужно синхронизировать захват с двух и более телефонов (ntp под вопросом) и в идеале получить сигнал на вспышку с этих телефонов. Все это должно работать на скоростях 120+ FPS, это вообще реально обычном андроиде исполнить?
+1
Глупые недоучки, не могущие в нормальную архитектуру накинулись на сладкий хлеб гугла в виде MVVM как на ману небесную. Та же лапша, недалеко ушедшая от сплошной лапши прямо в активити, но названная гуглом архитектурой. Сами вообще ничего не знают о существующих решениях. Сохранение состояния? - Moxy. Асинхронищина? Биндинги? - Rx. Вы, мамкины программисты как свою бизнес-логику, наполовину размазанную по фрагментам и активитям, тестить будете? Элементарнейшие логические вещи будете Instrumented тестами покрывать?
Открыть анроид студио, зайти в .хмл файл мейн активити, открыть графическое редактирование .хмл, перетянуть на экран виртуального телефона элемент textview (элементы слева), нажать на него после добавления, найти параметр text (справа все параметры выбранного элемента), вписать туда "hello world!". Запустить.
Дешевле и быстрее делать свои проги, есть вероятность что взлетит.
Из плюсов:
- не надо учить кучу ненужной инфы
- сразу делаешь что хочешь, для себя
- возможность показать на собеседовании что ты что-то сделал, если таки захочешь на работу
- намного легче учить, так как кроме тупой зубрежки реальная практика
Из минусов:
- если сделаешь что-то не интересное никому и ничем не лучше конкурентов, скорее всего доход будет минимален, если вообще кто-то это будет качать
- даже если и не сделаешь хуйню, прога может набирать популярность долго (пару месяцев-год), без сотен $$$ на рекламу.
- наговнокодишь и прога будет неэффективно работать, пока потом не переделаешь, узнав новые штуки (минус нивелируется если сразу пройти норм курс, но он только на юдасити платный и стоит месяц доступа 100 баксов вроде. Мб тут в ОП-пасте есть годные курсы, хз)
Лично я проходил бесплатный курс на юдасити, там разработчики андроида ведут курс, но чтобы не говнокодить этого не достаточно, но можно и наговнокодить сперва.
На фрилансе 23к где-то месяц подымал в свое время. Нестабильно, много Джобс из разряда напиши папку для андроида за 500 рублей. Обучение организуй просто практикой, возьми книжку элементс оф андроид и прорешай ее от и до.
Создание файла gradle.properties и явное указание версии вроде помогло. Но появилась новая проблема: gradle --assembleRelease выдает ошибку пик 2. Ну и собственно я хз как ее решить. Я подозреваю что это из-за того, что не удается найти файл ndk-build.cmd, но я не знаю где он, установленный студией, должен быть.
>BehaviourSubject? UnicastSubject вместо копипасты SingleLiveEvent из проекта в проект?
Ты к чему привязываться будешь, додик? К application? Или создаешь один god object, через который все данные проходят у тебя? Не тупи, это не оптимальное и, откровенно, плохое решение.
И какая нахуй копипаста LiveEvent из проекта в проект, у тебя во всех проектах одинаковые сущности везде, что ли?
>Ну чтож ты так, а как же курутинки, флоу? Это же тру вей от гугла!
Ничего не имею против вышеперечиленного, особенно корутин. Но спорить против того, что мввм в целом сейчас в адроиде - самая топ архитектура - глупо.
>>649744
Ты тупой просто имхо.
> на ману небесную
На просо с гречкой, блядь. Научись хотя бы писать для начала, зумер, ознакомся с тем, что это такое, гугл у тебя не забанен.
>Та же лапша, недалеко ушедшая от сплошной лапши прямо в активити, но названная гуглом архитектурой.
Еще один дебил, думающий, что мввм = мвп, только вместо презентера вьюмодель. В том то и прикол, что в мввм со всеми сопутствующими фичами уже лапши быть и не должно. Но, конечно же, не для таких дебилов, как >>647847 и >>649744 . И да, это архитектура, и да от гугла. Поясни, почему у зумерков-джунов-недоучек это вызывает такое жжение?
>Сами вообще ничего не знают о существующих решениях.
Знали еще тогда, когда ты осваивал сортировку пузырьком, малой. Но все развивается, появляются новые решения, более усовершенствованые и простые. То, что у тебя не хватает ума изучать новое - твои личные проблемы, от которых ты же и пострадаешь.
>Moxy
Я рад, что ты впопыхах это нагуглил и даже прочел пару предложений об этом, но ты не дочитал о том, что это - решение для MVP архитектуры в андроиде, то есть, та же лапша, которую ты несколькими предложениями ранее так сильно хейтил. То есть, ты сначала хейтишь мввм, а потом хвалишь моху, который по сути максимально приближает мвп к этой самой мввм, лул.
>Асинхронищина? Биндинги? - Rx
Ничего не писал в сторону реактивщины, она отлично ложится в плоскость мввм, во всех вьюмоделях без задней мысли берешь и юзаешь запросы к бекенду, к базе и ко всему, что может занимать время, при помощи rx, также без задней мысли при надобности все комбинируешь.
>Вы, мамкины программисты как свою бизнес-логику, наполовину размазанную по фрагментам и активитям, тестить будете?
Сука, бесите, малолетки, научитесь читать и вникать в инфу. Мввм как раз том и говорит, что логика не должна быть во фрагментах и активити, она выносится во всьюмодели, в датабиндинг, биндерадаптеры, етс.
>Элементарнейшие логические вещи будете Instrumented тестами покрывать?
assert 2+2 = 4 делает вжжжжж
>BehaviourSubject? UnicastSubject вместо копипасты SingleLiveEvent из проекта в проект?
Ты к чему привязываться будешь, додик? К application? Или создаешь один god object, через который все данные проходят у тебя? Не тупи, это не оптимальное и, откровенно, плохое решение.
И какая нахуй копипаста LiveEvent из проекта в проект, у тебя во всех проектах одинаковые сущности везде, что ли?
>Ну чтож ты так, а как же курутинки, флоу? Это же тру вей от гугла!
Ничего не имею против вышеперечиленного, особенно корутин. Но спорить против того, что мввм в целом сейчас в адроиде - самая топ архитектура - глупо.
>>649744
Ты тупой просто имхо.
> на ману небесную
На просо с гречкой, блядь. Научись хотя бы писать для начала, зумер, ознакомся с тем, что это такое, гугл у тебя не забанен.
>Та же лапша, недалеко ушедшая от сплошной лапши прямо в активити, но названная гуглом архитектурой.
Еще один дебил, думающий, что мввм = мвп, только вместо презентера вьюмодель. В том то и прикол, что в мввм со всеми сопутствующими фичами уже лапши быть и не должно. Но, конечно же, не для таких дебилов, как >>647847 и >>649744 . И да, это архитектура, и да от гугла. Поясни, почему у зумерков-джунов-недоучек это вызывает такое жжение?
>Сами вообще ничего не знают о существующих решениях.
Знали еще тогда, когда ты осваивал сортировку пузырьком, малой. Но все развивается, появляются новые решения, более усовершенствованые и простые. То, что у тебя не хватает ума изучать новое - твои личные проблемы, от которых ты же и пострадаешь.
>Moxy
Я рад, что ты впопыхах это нагуглил и даже прочел пару предложений об этом, но ты не дочитал о том, что это - решение для MVP архитектуры в андроиде, то есть, та же лапша, которую ты несколькими предложениями ранее так сильно хейтил. То есть, ты сначала хейтишь мввм, а потом хвалишь моху, который по сути максимально приближает мвп к этой самой мввм, лул.
>Асинхронищина? Биндинги? - Rx
Ничего не писал в сторону реактивщины, она отлично ложится в плоскость мввм, во всех вьюмоделях без задней мысли берешь и юзаешь запросы к бекенду, к базе и ко всему, что может занимать время, при помощи rx, также без задней мысли при надобности все комбинируешь.
>Вы, мамкины программисты как свою бизнес-логику, наполовину размазанную по фрагментам и активитям, тестить будете?
Сука, бесите, малолетки, научитесь читать и вникать в инфу. Мввм как раз том и говорит, что логика не должна быть во фрагментах и активити, она выносится во всьюмодели, в датабиндинг, биндерадаптеры, етс.
>Элементарнейшие логические вещи будете Instrumented тестами покрывать?
assert 2+2 = 4 делает вжжжжж
Окей, я долбоеб -- в студии был написан путь к ндк. Указал, собралось в апк с парой предупреждений. Все равно "приложение не установлено"
Забавно видеть, как человек сводит архитектурный паттерн к вопросу сохранения состояния, говоря, что Moxy приближает мвп к мввм. Тебе гугл проссал и прогречил мозги, недоучка
>архитектурный паттерн к вопросу сохранения состояния
А как еще пояснить довенам, почему мввм круче, чем мвп?
>>651799
А ты из каждой кнопки\эдиттекста\менюайтема будешь делать обсервейбл? Ну, удачи с фрагментом в 1к строк. А я вот юзаю двухсторонний биндинг и довольно урчу
@={viewModel.fieldName}
Дело в том, что вопрос сохранения состояния никакого отношения к паттерну не имеет. Оно реализуемо при использовании любого MV* паттерна. Если вы считаете это тем, что отличает мвп и мввм - вы не понимаете, чем они отличаются и путаете конкретную реализацию MVVM от гугла с паттерном в целом. На всякий случай поясню, что главное отличие состоит в способе обмена данными между VM и V, отсутствии ссылки на view в VM в угоду выставленным наружу коллбэкам, осведомленностью VM о жизненном цикле из коробки (это если говорить о гугловом исполнении) и толерантностью к фреймворковому коду в VM, в отличие от MVP, в котором все, что не View/UI - должно быть pure Java/Kotlin
В целом, все верно.
Но из этого:
>главное отличие состоит в способе обмена данными между VM и V, отсутствии ссылки на view в VM в угоду выставленным наружу коллбэкам
напрямую и следует, что через вм можно на изи сохранять нужные данные, состояния, етс и всегда к этому возвращаться.
И это нужно просто понять и переварить, но меня дико веселит, когда додики типа вот этого >>646764 пишут, что:
>Ну там конечно "знания" огромные.
Не понимая вообще всей истиной сути мввм и даже не пытается ее понять. Думает, что там все легко и понятно, но главной фишки, так и не понял. Но зато лезет в любой срач, где это хоть как-то упоминается.
Учитывая, что в презентер вьюха внедряется через интерфейс - связь не такая жесткая, как ее любят преподносить. Все, чем это грозит - чуть больше кода придется написать в ряде случаев. Я бы сказал, что это не такая высокая цена за тестируемость и стройность при условии, что проект большой и планируется долгосрочная его поддержка. Вообще холивар на тему MVP vs MVVM некорректен. MVP - он как автомат калашникова: надежный и суровый. А MVVM - лайтовый и подходит для проектов поменьше, где не нужен суперский SOLID и unit-тестируемость. Топовость MVVM обусловлена поддержкой гугла и меньший геморой при исполнении в правильном виде, чем правильный MVP
Шапка хуйня нелегитимная. MVVM не от гугла.
Можно создать один адаптер, который будет спавнить леяут, в котором будут все необходимые view, а потом уже, в он байндвьюхолдере делать каким-то элементам визибилити гон, в зависимости от состояния стейт.
Кароче, нечеткий вопрос - нечеткий ответ, непонятно как это вообще связано с румом.
Мимо дилетант
Нет, тут другое. Я хотел избежать создания нескольких таблиц и добавить сущности поля с состоянием, чтобы отображать их в разных вьюхах. Решил не морочить голову и использовать Реалм, дабы сэкономить время.
Кто юзает UI Automator? Что то я по нему вообще нихуя гайдов не могу найти, кроме обоссаного с хабра и вогеллы.
Это вообще норм или доджить его?
Юзай эспрессо. Автоматор нужен только, когда ты в другие приложения ходишь из своего.
uses-permission android:name="android.permission.INTERNET"
uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"
вот такие разрешения у меня стоят. Может что-то еще нужно чтобы приложению работать в wi-fi сети поднятой на самом телефоне?
При вызове команды .push().setValue()., закрывается приложение. Все подазрения падают на библиотеки, они на втором фото.
Сдаюсь, ребята, спасайте!
>>657385
Ну и бардак у тебя. одни и те же зависимости только версии разные. Апдейтни их до последних, лишнее убери.
Во-первых, убери appcompat-v7. Во-вторых, в чем суть задачи?
В logcat смотрел? Что пишет?
Будет круто, если скинешь код. принт скрины из пэинта, желательно Пока могу лишь предположить, что ты каким-то образом получаешь null на костылях, которые даже не кидают эксепшн.
Есть!
Приложение типа "чат".
Есть только кнопка. При нажатии в бд отправляется условное имя пользователя и текст сообщения.
Насчет logcat ты не ответил.
и снова скинул кусок кода
Судя по всему, ты пытаешься реализовать Realtime Database. зачем тогда столько зависимостей?
Ты верно следовал шагам в assistant, когда подключал Firebase?
Что касается кода - читай это:
https://firebase.google.com/docs/database/android/read-and-write?hl=ru
Совет - создавай экземпляры инстанса и референса, чтобы можно было манипулировать ими.
Обрати внимание на getReference(), который принимает path в качестве параметра.
public DatabaseReference getReference(@NonNull String path)
Всё, что тебе нужно сделать, чтобы не было ошибок:
Подключить Firebase с помощью assistant, изменить манифест под свою задачу, следовать официальной документации.
supportsRtl ни на что не влияет в данном случае.
Logcat да, виноват, только сейчас настроил эмулятор, и теперь могу работать как белый человек. Но пока опыта работы с логами не имею.
Асисиент, который встроен в Android studio, считает, что firebase уже подключен. Но
Почитай про дата-классы в Котлине и перепиши модель сообщения. Будешь доволен, ещё захочешь.
В макете 2 EditText, 1 TextView (который showText) и кнопка.
Всегда смотри логи, когда сталкиваешься с какой-то проблемой. Чекай и гугли название исключения, ищи последний лог, где упоминается ссылка на строку в коде. Это, вероятнее всего, именно то место, где всё сломалось. Либо это то место, которое сломалось из-за чего-то другого. В этом случае иди от последнего лога к предыдущим. Удачи.
Пробовал разные, но ни один толком не завелся.
Был один платный правда, но что-то было ДОРАХО.
Чем пользуетесь?
Пожалуйста, но настоятельно рекомендую внимательно сравнить обе реализации и найти различия. Из логов, которые ты скидывал, например, можно вынести несколько ошибок:
1) Проблема с onClickListener. InvocationTargetException - обертка исключения, которое выбрасывает метод или конструктор.
2) Эксепшн кидает Firebase. Конфликт именований полей и геттеров в POJO-классе. Пока данная ошибка не исправлена, данные не могут быть сериализованы. Как итог - DatabaseException.
>Stetho
Спасибо, первый раз слышу, попробую.
Жаль что нет чего-то нативного, похожего на db tools из intellij ultimate, уж больно там все ГОЖЕ. :С
Секунду, а как завершить процесс ?
> у меня бесплатные private repos, так как есть студак
Они уже как год или два у всех бесплатные.
Так еще и позавчера расширили возможности бесплатных приватных реп.
кто-нибудь смог нормально это дело сгруппировать или оно того не стоит и лучше обходиться префиксами и иметь плоскую структуру?
bad practice
Есть способы создать папки через gradle, в т.ч. и через создание массива, но не советую, потому что это делает взаимодействие с ресурсами непредсказуемым.
Не советую использовать нейминг с пика, лучше исходить из относимости/функциональности:
demo_activity
demo_activity_menu
demo_activity_menu_item
Такая же ситуация и с пакетами - в один пакет кидаешь активити/фрагменты, которые относятся к главному экрану, например.
согласен, наверное полезнее видеть все что относится к фиче в одном месте, нежели "все активити" или "все фрагменты", надо будет ПЕРЕПИЛИТЬ.
Насчет плоской структуры - грусно это конечно, это видится весьма ущербной херней, на SO вроде упоминали что гугол рассматривает варианты решения этой проблемы
Я бы с радостью юзал sqlite, но специфика проекта такова, что схема будет мешаться, нужен NoSQL.
Пока смотрю в сторону Paper, но хз, последний коммит в 2019, не оче (
Вкатывайся тогда в 3д-артиста, ведь разницы нет никакой - адаптировать модель под мобилку легко. Заработать можно, даже пофрилансить. Если голова работает и можешь быстро осваивать необходимый софт, это большой плюс, ведь многие артисты деревянные и с компьютером на вы. Каким софтом умеешь пользоваться? Можешь в скульптинг или только собирать по полигонам?
С 3д не хочу, хочу именно 2д модельки делать как на пике. Ну т.е. для всяких платформеров, аркад и т.д. Могу во флеш и анимейт. Пиксельная и костная анимация.
Тогда изучай всё, что связано с 2d, будь то инструменты или подходы, которые позволят делать быстро. Делай упор на скорость и качество. Было бы лучше, конечно, если бы ты и 3d освоил.
>2017
Точно, грустняк, поциент мертв.
Realm - выглядит збс, но почитал про отзывы разрабов о боли миграций - а у меня как раз нет нужды в схеме вообще, лучше чтоб оно само мигрировало новые поля, без моего участия.
ObjectBox потыкаю, спасибо
Но там схема и все ругают миграции ежжи?
Комменты от 18 года правда тока находил, но они были пропитаны БОЛЬЮ, это чото пугает
Хз, я сейчас юзаю для себя - все устраивает. Я пока с миграциями не ебался, просто идет автомиграция с потерей данных
Меня реактивность зацепила. Хз, может у других есть что-то похожее. Типо берешь селект из базы -> ту обсервабл/фловабл, дальше где-то подписываешься на них. И когда данные в базе меняешь - автоматически кидает onNext подписке с новыми данными.
Нет не только. Все можно в студии, некоторые только ее и юзают мов удобнаа как. Мне не удобно.
Нужно получить текущее изображение с экрана смартфона и передавать его по блютузу. Дальше уже сам разберусь на устройстве-приёмнике.
Полагаю что решение придется писать на джаве, это не страшно, но на всякий случай скажу что знаю дотнет, сишарп, вдруг на нём можно сделать это.
Наметьте, молю, в общих чертах, что нужно использовать.
Да, изображение должно идти непрерывным потоком. Я что-то нагуглил, но хочу услышать мудрого анона.
Нет.
Если я пока буду учиться, буду тестить учебные приложухи на старом бюджетнике на 6 андроиде будет норм?
Вроде джава 8 поддерживается с 7 андроида и с него же там какие-то изменения в компиляторе. А котлин насколько поддерживается в 6 версии?
И вообще я читал, что сейчас нужно вплоть до 5 версии поддерживать. Это значит все пишут на старых версиях языков?
Если ты вдруг не разобрался, отслеживай isLoaded состояние. Если !isLoaded, скрывай ProgressBar.
Лучше использовать MaterialProgressBar
>>671324
>В рашке нет андроид разрабов
Похоже, что да, полтора анона, но других тредов нет.
>>671333
В сторону версий ниже 21 лучше не смотреть. Важно то, что кроме платформо-развивающих фич, в API 21 Dalvik заменили на ART(JIT на AOT), добавили поддержку x64, Project Volta, оптимизировав энергопотребление. Если есть необходимость работать с API 15+, например, используется AppCompat для обратной совместимости, поэтому версия API не отражается на версиях языков и JVM. Некоторые фичи, которые не входят в саппорт-пакет, будут работать только в той версии, которая соответствует требованиям. В этом случае создаются кейсы с реализацией под возможности API, как это происходит, например, с получением пользовательских разрешений
Сложно сказать, много нюансов. Можно вполне удачно совместить знания и быстро прогрессировать. Работа с интерфейсом не сильно отличается от фронтенда(и в андроиде и в js ты используешь функцию, чтобы повесить слушатель на элемент интерфейса, например), в плане разработки же важно то, что ты делаешь продукт для мобильной платформы, отсюда вытекают особые требования, которые нужно учитывать. Стоит отметить, что Гугл даёт тебе всё необходимое для того, чтобы делать красиво Я стал заниматься андроидом, имея знания джавы, шарпа(преимущественно в контексте unity), питона, будучи трогавшим кресты и фп-языки, фронтенд. Сразу начал с Котлина, параллельно читал лит-ру по дискретной математике и смежным разделам. Я не вкатывался с нуля, поэтому не могу судить, но, вероятно, было бы сложнее. Думаю, что "простота вката" зависит от того, какого уровня квалификации ты хочешь достичь. Если понимать под вкатом устройство на работу, порог довольно низок, важнее соблюдать методологические догмы и быть командным кабанчиком.
Различий довольно много, но их существенность определяется таковой в конкретном проекте. В целом, большинство важных изменений касается либо производительности/энергопотребления(процессор, рендеринг и т.д.), либо интеграции новых интерфейсов(Отпечатки, VR и прочие вещи). Почитай об этом в истории версий, там много интересного.
Когда я устанавливаю и запускаю приложение, настройки нотификаций у меня без галки "floating notifications" - пикрелейтед, но мне для определенных видов нотификаций НУЖНО позарез чтобы floating показывались и при этом не запрашивать юзера отдельно лезть и проставлять эту галку.
Это например сделано в телеграме - при установке все чертовы галки на месте!
Инициализирую channel я с высшим приоритетом, сообщение отправляю тоже с высшим приоритетом. setDefaults тоже проставлен. Разрешения в манифесте такие:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/>
Пуш прилетает и вибрация идет, но оно не всплывает если галку руками не проставить :( Анон, направь на путь истиный, весь SO уже перерыл блеать!
Если я правильно тебя понял и тебе нужно отрисовывать уведомления поверх других приложений, нужно добавить Manifest.permission.SYSTEM_ALERT_WINDOW и делать проверку на canDrawOverlays, когда приложение активно. Если она возвращает false, кидаешь пользователя в окно управления разрешениями (ACTION_MANAGE_OVERLAY_PERMISSION). С 23 API нужно давать доступ вручную.
Понял, попробую, но само по себе добавление этого пермишона не проставляет тот checkbox, кидать юзера попробую.
Но в та же телега запрашивает права на запись файлов и аудио/видео, но не кидает юзера в настройки нотификаций, при этом там из коробки этот чекбокс проставлен.
Еще странность - в эмуляторе floating notifications работают, достаточно задать приоритет канала и сообщения.
Может какой-то нюанс в MIUI?
>If the device is running Android 6.0 (API level 23) or higher, and the app's targetSdkVersion is 23 or higher, the user isn't notified of any app permissions at install time. Your app must ask the user to grant the dangerous permissions at runtime. When your app requests permission, the user sees a system dialog telling the user which permission group your app is trying to access. The dialog includes a Deny and Allow button.
Доступ нужно давать вручную при установке, но если для использования определённого функционала нужно разрешение, можно настойчиво предложить пользователю поставить его.
MIUI посмотрел, там есть Permissions Manager, который может по дефолту блокировать определённые разрешения. В примере, который я нашёл, доступ к разрешениям реализуют через проверку на соответствие прошивки и явный запрос на их добавление.
Для галочки. Код телеги костыли на костылях которые походу пилит один токсичный олимпиадник без которого все рухнет.
>костыли на костылях которые походу пилит один токсичный олимпиадник без которого все рухнет
Хорошая шутка, а почему ты так считаешь?
Что вижу я:
С одной стороны, в коде есть хорошие решения, которые выражены в грамотной изолированности компонентов и реализации абстракций, с другой стороны, когда ты видишь активити одну из многих в 17к строк с бесконечными ветвлениями, где содержится реализация, которую стоило бы изолировать, причем все это переплетается и становится невозможным отделить ту же логику анимации(которая, кстати, может руиниться на девайсах с конкретной прошивкой без проверки) от ресайклера или когда посреди активити создается инстанс календаря, задумываешься о том, сколько будет стоить добавление нового функционала. Да и код полностью написан на джаве да, у них есть jni-модуль, но это лишь один из компонентов и рефакторингом, скорее всего, никто не будет заниматься хотя Котлин помог бы избавиться от многих проблем - с огромным количеством ветвлений, например Всё это выглядит так, будто они начинали с Clean Architecture, а потом им надоело.
То что ты видишь очень похоже на код олимпиадника тащемта, не?
В пром программировании такой код называют тяжелоподдерживаемым говнокодом, а у бизнеса годная команда начинает выбивать время на РЕФАКТОРИНГ. Ну, по крайней мере, в бекенде так, в андриде я недавно, может быть тут свой особый ВКУС.
Вижу, оттого и смешно, но было бы интересно посмотреть на приведённые примеры.
>может быть тут свой особый ВКУС
Нет, это дурной вкус.
А насчет поддерживаемости/рефакторинга я уже написал, это удивительное пренебрежение.
Я так понимаю это вообще будет легаси скоро, а новый прожект это некий Telegram X client, если реддит не пиздит
Почему олимпиадник? Работал с такими. (Сам из этих)
Токсичный - когда спрашивали почему все так хуево ответ был в духе, вас ебать не должно, что хотим то и выкладываем.
И вторая трабла - опять таки когда тапом по квадрату выводишь список запущенных - приложение на флаттере как сказать вместо снимка последнего состояния черный прямоугольник, это какие-то фундаментальные ограничения фреймворка или есть костыли для этого? Просто стартовый проект от команды разработчиков и такие болячки изначально.
> приложение на флаттере
Дружок пирожок, ты ошибся тредом. Клуб любителей флаттера двумя тредами ниже.
Использовал --env-filter, но теперь у меня два автора. Можно просто удалить одного из них?
Все работают.
А нахуя тут сидеть успешным разрабам?
Два адаптера для отображения двух состояний сущностиинфлейта двух вьюх, иначе данные из первого списка дублируются во втором. Ещё одна проблема в том, что parent перетаскиваемого объекта определяется корректно, но нельзя чекнуть родителя того, на кого он дропается, нельзя.
В адаптере есть var onItemDrag: ((Item) -> Unit)? = null, чтобы получать объект.
Во ViewHolder на айтеме висит TouchListener1 пик, состояние изменяется из фрагмента2 пик.
сейчас бы дрочить на рхЖабу когда есть Флоу в 2020.
Вечер в хату тварищи. Такой вопрос. По каким критериям Google Play росчитывает рейтинг приложения при поиске? Доки говорят их овер дохуя 80. Аноныч а как ты поднимал с говна свои приложенияговноподелки?
Зашел на кабанчик, что-то там много заданий на синхронизацию с 1с и т.д. Стоит ли учить все\. что связано с 1с или лучше стороной это обходить?
у меня несколько приложений в топ 20 категории, но это хуйня , в лучшие годы входил в топ5 категории, инсталов было просто жопой ешь.
ну так вот, скажи, схуяли мне делиться с тобой информацией, как я туда попал?
В любом случае нужно сперва стать немного популярным, чтобы потом вообще попасть в рекомендации гугл плея. Люди качают что-то с высокими оценками, будет говно невостребованное - хоть что делай, успеха не будет. Надо:
- востребованное чота
- рекламить в первые пол года, хотя бы в первые месяцы
- сделать так чтобы было кросиво
А вот как дело с играми, тут более интересно, потому что никто блин не знает что это за игра, просто по скринам и как тут действовать, надо ли рекламить - хз.
Кароч, даже если ничего вообще не делать, но прога востребованная и красивая, то она сама войдет в топы без твоего продвижения.
Скока в среднем за год делаешь?
У меня ноль. Застрял на курсах, все учу, учу, то блендер, то еще что-то. Как будто психологический блок на то чтобы просто уже блядь наконец сделать хоть что-то. Надеюсь переборю эту хуйню
Хули тут думать, если грамотно рекламную кампанию запилить. Только я не игрульки делаю, а говно приложения, и целей попасть в топ у меня нет, так что розслабь булки.
за прошлый 150к, в этом думаю будет 2x
>>692931
прикол в том, чтобы найти нишу. Я потратил в сумме на рекламу 600$ и то довольно неудачно и ради эксперимента для врыва с новым приложением. Суть в том, что если твое приложение говно - никакая реклама не поможет, если есть спрос - то и без рекламы все будет збс
Двая чая этому господину. А вообщее всегда угорал с додиков которые тащили Рх в проекты даже не понимая нахуя, потому что модно.
Попробуй найти работу без опыта использования популярных библиотек, мамкин нигилист.
Вот например в энтерпрайзе, когда хочешь связать модели подобным образом надо просто в поля User-a добавить ArrayList<Chatroom> и заполнять этот лист при входе в новый чат. Соответственно и в полях Chatroom-a будет лист с юзерами.
Принято ли подобное в андроиде или тут как-то по другому делают и это говнокод?
Ну если несколько уже проектов, то ок. А если один - чисто мне как-то страшно ложить все яйца в один кошик, так сказатьб. Часто прогу удаляли из-за нарушений каких-то правил, реклама не та, не для того возраста, пок-пок, после этого у меня паранойя что у один прекрасный день аппу полностью забанят. Кароч, надо взять себя в руки.
Кстати, у тебя сильное раздолбайство и лень или постоянно как конь по 8 часов в день сидишь улучшаешь что-то? У меня ужасное раздолбайство, но в проследнее время стало лучше.
первое время ебашил как дурной, сейчас поутихло, деньги больше не мотивируют.
Страх удаления есть, ставлю везде 18+, один раз суспендили, но после аппеляции вернули.
Как вариант, сделал порт на айфон. Там конечно все сложнее в разы, но хотя бы какие-то деньги капают, если с гуглом все
мне кажется даже выгоднее так делать, если сделать аудиторию 16+, то уже отсеится вся реклама для 18+, а это огромный рынок. Из-за пары пиздюков 16 летних теряешь дохуя бабла. А если 3+, там вообще печаль. Хотя графики гугла в адмоб говорили что там небольшие потери, 10% вроде...
Могли бы и автоматом подтягивать сами необходимую рекламу для необходимого возраста юзера, а не заставлять делать одну для всех.
я прикидаю как ты "ентерпрайз" писал
Почему все разрабы такие злые? Есть же в открытых источниках исходники, почему бы не поделиться? Разе не для этого есть опен соурс?
удачи мой юный друг, декомпилируй ее полностью
Тут два тупых подвопроса у меня:
- назначаете ли id всему или только по необходимости, где надо чото линковать или из кода вызывать?
- как придумываете имена? У меня какой-то блетаь АД вообще с именами, не понимаю как лучше их выдумывать, никакой структуры нет, называю по функционалу, но получаестся мягк оговоря жиденько.
И еще - стараетесь ли избегать коллизий или если оно не мешает правильному резолву - то и похуй? Например, у меня много где есть объекты с id='progressBar' например, это похуй? или я должен обмазываться префиксами, вроде 'applesProgressBar'?
1) По необходимости
2) Для нескольких TextView из разных лэйаутов, например, будет так: tv_main_name, tv_detail_name. Фрагменты обзываю: fragment_main, fragment_detail
Фикс по поводу фрагментов. Хотел сказать, что нейминг айдишников аналогичен, т.е. сначала тип компонента -> относимость к модулю -> имя
Нагуглил что есть штука что переводит код джавы в обджектив, для айос: https://github.com/google/j2objc
Кто-то юзал или есть способы получше?
В айос разработке знаю 0
Ну такое, лучше взять свифт и написать, те же яйца только в профиль.
Что за приложение по сложности? Если простое, лучший способ - написать его на Свифте. Ноль ты или нет, достаточно прочесть об особенностях языка(синтаксис, структуры, протоколы, расширения и т.д.), остальное подтянется, в том числе и sdk.
портировал, приложение не сложное, ушло месяца 2-3 в неспешном темпе
Удваиваю вопрос.
А теперь мой. Аноны, я хочу повесить на маркер на гугл карте OnInfoWindowClickListener, но он нихуя не работает, хотя LongClickListener работает отлично. Вопрос какого хуя?
Вот тут сам код, logcat, и мой ломаный английский.
https://stackoverflow.com/questions/61988468/oninfowindowclick-dont-work-but-long-click-works-fine
Ты вешаешь слушателя на InfoWindow, где оба метода возвращают войд. Ты можешь сделать кастомный TouchListener и детектить клик/лонг клик, вызывая его методы внутри методов InfoWindow, либо юзать что-то одно. Если вешать слушателя на маркер, оба метода будут работать, т.к. его они возвращают булеан.
Я вчера среди ночи писал это и видимо не так объяснил. Проблема в том что у меня не работает обычный клик (пик 1) и я для теста решил добавить лонг клик рядом с обычным (пик 2).
Лонг клик работает как и должен, а вот обычный как не работал так и не работает.
P.S. mGoogleMap - это private GoogleMap mGoogleMap;
Понятно, что есть стандартная функция с "отправить отчет" и оно появится в консоли разработчика, а что если это варнинги или вообще весь лог? Есть какие-то годные интеграции со сторонними сервисами может?
Сука, меня эта херня с ума сведет. Уже напрямую из документации копирую OnInfoWindowClickListener и нихера он не работает
>mGoogleMap - это private GoogleMap mGoogleMap;
Вешай его внутри onMapReady(), должно работать. В любом случае, всегда можно сделать кастомный тач, который можно заточить под любую задачу.
Снова для теста повесил оба Listener-a внутри onMapReady() и опять работает только лонг клик. Пиздос
Повесил. Не работает. Ладно, черт с ним, видимо не судьба. Привет тебе гугл от детей донбасса
Делай по гайду, там маркеры и кластеризация.
В setOnInfoWindowClickListener обязательно создавай новый объект.
https://ahsensaeed.com/android-custom-info-window-view-on-marker-click-map-utils/
датасторадж недавно обновили и добавили рум. Раньше был пиздец с ручными стринговыми коммандами в датабейс и это была одна боль. Остальное - хз.
Ладно, спасибо. По сути не сложное, наверное. Очень сильно на гугл апи не используються. Забыл что на айос свифт завезли. Си шарп был слишком геморным.
Ладно анон, спасибо за помощь. В пизду этот андройд с такими проблемами.
Решил курсач попробовать написать и заодно расширить свои познания. До этого веб приложения на жабе писал (Spring и прочие радости), но за все года такой херни не видел. Чтобы одна строчка из документации работала, а другая, написанная по тому же принципу нет. Удачи вам тут и терпения.
Такое случается нередко, отсюда и привычка оборачивать функционал в кастомную реализацию, искать наиболее подходящее решение. Но в этом что-то есть, заставляет сомневаться в своих навыках.
А что с гайдом? Не получилось в итоге?
К слову сказать, на JS реализовать подобное очень просто, если тебя интересует именно маппинг и применение JS актуально.
Решил все таки. Классика в общем. Скопировал код из твоего гайда, ничего не заработало. Спустя пару часов раздумий решил посмотреть на зависимости и увидел что маркеры в гайде подключены через более старую версию зависимости, а я поставил более новую -
implementation 'com.google.maps.android:android-maps-utils:1.3.1'
А там уже во всю перешли на MarkerManager, и вешать listener-ы через него надо. На сайте с документацией по Google Maps об этом кончено же умолчали. И единственное место где написано что надо юзать MarkerManager это гитхаб.
Как они сами говорят - "These changes also modify behaviors that are documented in the Maps SDK for Android Maps documentation site."
Поздравляю, хвалю за упорство.
Пожалуйста, укажи на ошибку, чтобы я мог её исправить и не повторять в будущем.
Делать на java? Я слегка охуел от того, что нет структур и с трудом представляю как буду парсить входящую структуру через ByteBuffer или DataInputStream данных на стороне ведра. Ебануться можно.
На qt хэллоуворлд для ведра сделал: в принципе нравится. Предвижу массу подводных камней, но это более знакомо. Делают ли сейчас серьезные проекты для андроида c использованием Qt и стоит ли за него браться?
В оф. доке достаточно подробно описана реализация. Местами она размазана, так что можешь поискать более стройную на гитхабе.
>Делать на java?
Зависит от целей. Делай на ней, если хочешь, инфы много.
>нет структур
Каких структур и в чём, собственно, проблема? У тебя есть сервис, ты создаешь сокет и используешь стримы для записи/чтения буфера в отдельном потокене в UI, получая/передавая массив.
> Каких структур и в чём, собственно, проблема?
Например, со стороны компа через com порт поверх блутуса в приложение на Андроид передается такая структура:
#pragma pack(push,1)
typedef struct SMessage {
uint32_t msgHeader;
uint32_t msgLength;
uint64_t sensorId;
double temperature;
double pressure;
uint8_t dataId[12];
} SMessage;
#pragma pack(pop)
На плюсах в приемнике я натянул указатель на структуру поверх принятого массива данных и весело разбираю данные. А в жабе я пока что нагуглил такой вариант:
ByteBuffer buf = ByteBuffer.wrap(array); // приемный массив byte
buf.order(ByteOrder.LITTLE_ENDIAN);
Integer msgHeader = buf.getInt();
... и так далее для всех полей. Полей в структуре у меня штук 15-20. Для каждого так писать для меня выглядит дико, м.б. опыт байтоебства сказывается. Есть ли более изящные решения?
> Зависит от целей.
Приложение для себя по большей части для получения опыта.
C++ структура реализуется с помощью класса в Java, поля в конструкторе. Затем пишешь что-то вроде:
SMessage[] msgs = new SMessage[10];
msgs[0] = new SMessage(_, _, _);
Вообще, класс можно заточить под любые нужны, имплементируя нужные интерфейсы и убрав добрую часть реализации в методы.
Посмотри ещё BufferedInput(Output)Stream.
Можешь воспользоваться протобафом. Сгенерирует тебе классы и маршалинг для джавы и для плюссов .
Принято ли удалять логи при выходе в продакшн? Или наоборот лучше оставлять, чтобы отслеживать всякое.
А вдруг какой-то кулхацкер по инфе из логов взломает что-то.
Логи нужны для дебаг-сборок. В прод такие вещи лучше не высылать.
И ещё вопрос - как лучше структурировать пакеты внутри test? Смотрел примеры, везде хранят тесты прямо в рут пакете.
Делаю чатик, и возникла необходимость сделать приглашение пользователя в конфу. Делать через Dynamic Links не хочется, слишком сложно (мне не нужен такой функционал) для маленького приложения вроде моего. Да и тогда получится что пользователю нужно ещё и ссылку другу послать (по почте например).
Я бы хотел чтобы при нажатии на кнопку (пик 1) и введении Email-а пользователя, которого приглашаем (пик 2) у этого пользователя вылезал пуш о том, что его приглашают и при нажатии на этот пуш он вступал в конфу (соответственно в чатруме есть коллекция User List и именно туда он и запишется).
Вся тема с добавлением юзера в базу и т.п. не проблема. Вопрос лишь в том, как отправить пуш нужному юзеру через Firebase?
Или же, если знаете как по-другому реализовать подобный функционал, то подскажите пожалуйста. Спасибо. Добра вам.
>ссылку другу послать
>другу
Если они друзья, они уже имеют контакт через другие средства связи. Просто сделай шейр интент и все.
Не все помнят мейл друга.
Им что надо будет писать другу, спрашивать их емейл чтобы туда ввести? Лишняя ебля, но там могут быть разные юзеркейсы, если ты хочешь чтоб приглашали НЕ друзей, а незнакомцев.
Доступ к гугл акку, где будут все "друзья" и им мейлы? Но зачем вообще через мейл делать? Кароче, хз, но тебе лучше знать что ты там делаешь и зачем.
Не суть, на номер телефона (например) или на логин не сложно переделать. Вопрос в том, можно ли отправить нужному пользователю пуш через Firebase? Во всех гайдах описывается то, как этот пуш отправлять через консоль Firebase (пикрил), а мне нужно делать это программно, прямо из приложения
Есть серверное апи, чтобы слать пуши. Через обоссаную админку шлют только всякое маркетинговое говно.
Ты можешь дернуть серверное апи с телефона но:
1) твой серверный токен для пушей спиздят
2) тебе нужен чужой пуш токен, чтобы отправить этому юзеру пуш. можешь конечно выгружать пуш токены юзеров в фаирбейс, а потом запрашивать у фаирбейза по чужому емейлу чужой пуш токен и отправлять ему пуш.
Безопасность такого решения крайне сомнительна, но для твоей мелкой поделки пойдет.
Из-за разного api в разных версиях я не хотел бы пердолиться сам, а положиться на либки, но самая популярная походу это - https://github.com/pwittchen/ReactiveNetwork
Но она требует чтоб я в манифесте у себя разрешил non-tls соединения, что вроде как хуево?
Вообще, насколько часто вам приходится прописывать:
base-config cleartextTrafficPermitted="false"
?
> This method is less efficient than observeNetworkConnectivity(context) method, because in default observing strategy, it opens socket connection with remote host (default is www.google.com) every two seconds with two seconds of timeout and consumes data transfer.
Тебе настолько надо иметь точное значение наличия соединения с интернетом? Да, если слушать сраный коннективити бродкаст, то он вообще ничего не значит и соединения может и не быть. Но какой у тебя кейс, когда тебе нужно прямо супер точно знать? Показать очередную ненужную плашку "вы офлайн"? Так ее можно и на бродкасте показывать, а если по бродкасту связь есть, то показывать офлайн плашку только после таймаута сети.
Да по сути речь идет о сраной плашке, думаешь эта либка это оверкилл?
А броадкаст подразумевает такой же пердолинг с разными версиями API?
Тебе по сути нужен только ConnectivityManager.registerNetworkCallback.
Можешь стащить себе LollipopNetworkObservingStrategy, MarshmallowNetworkObservingStrategy, смерджить в один и радоваться жизни.
Здрасьте, что думаете о такой хуйне как flutter
Do as you bid.
Только не жалуйся потом когда челики из гугла забьют на флаттер потому что нужно делать новый проект для промоушна, а на старый всем похуй.
В обычном джавовском приложении точка входа - метод main.
В андроиде это все глубоко спрятано и самый близкий к началу приложения Application::onCreate.
Но в андроиде есть система "экранов" и в общем вся движуха происходит в Activity - смотри его лайфсайкл.
Цикл с кадрами это довольно специфическая штука характераня как раз только для игр.
Если ты что-то хочешь рисовать в унисон с тем как происходит кадр на экране смотри в сторону Choreographer, кастомных реализаций View, SurfaceView. Возможно тебе потребуется самому создать этот цикл и стартовать его когда активтя резумится и стопать когда паузится. Я хз что у тебя за юзкейс когда это надо.
>как выглядит воркфлоу андроида
Если кратко:
1) Выбор архитектуры, удовлетворяющей задачам, и фреймворков, которые позволят наиболее эффективно реализовать её.
2) Внедрение зависимостей и создание базовой структуры, которая позволит абстрагировать отдельные модули.
3) Создание логики, будь то работа с API(сервис, фабрика и т.д.) или локальными данными(сохранение, изменение, манипулирование)
4) Создание модулей, обеспечивающих доступ к данным, либо работу с потоками данных, с соблюдением зависимостей/изолированности. Здесь же реализуется многопоточность/асинхронность и, по сути, декларируется способ организации работы, исходя из поставленных задач.
5) Создание необходимых адаптеров для ui-контейнеров/виджетов.
6) Создание ui(активити, фрагменты, всевозможные клики, драги, анимация), меню, навигация. Тут тоже нужно учитывать то, что ui-компоненты не должны знать больше, чем нужно.
7) Тестирование, которое, в идеале, должно быть непрерывным на протяжении всего рабочего процесса.
Читай о SOLID, архитектурных паттернах, clean architecture, DI, управлении потоками и иных паттернах, часто используемых в разработке.(Многие из них стали частью SDK, либо реализованы в языках.)
Задавай вопросы.
Юэкейс простой - получать непрерывно данные с датчика, делать на основе них вычисления, и на основе вычислений апдейтить картинку. Я уже сам нашел решение - создавать отдельный циклический поток под логику, но это пиздец какой-то. У меня небольшой опыт программирования, причем в основном академического - с математическими вычислениями, алгоритмами и т.д, и я как-то привык к четкой итеративной структуре, поэтому и игры было делать очень приятно.
У тебя гугл переподписывает приложение твое. Ты в админке адмоба небось свой локальный ключ указывал, а не тот, которым гугол переподпишет.
>Ты в админке адмоба небось свой локальный ключ указывал
там SHA-1 где-то указывается ?
Это где ? От адмоба я вроде брал только id приложения и рекламного блока.
Это норма - ведь приложения заточены на то что бы получать инпут и что-то делать, а не постоянно рисовать картинку.
>Что под этим подразумевают?
Понимание теории и умение пользоваться инструментами.
Читай REST API, okhttp, gson, Moshi, Retrofit, RxJava/корутины, адаптеры, конвертеры. Как получать и обрабатывать данные, кэшировать; какие существуют подходы, для какого стека или в контексте какой задачи/требований они актуальны; особенности архитектуры клиент-серверного приложения(Вопрос с подвохой, потому что любое приложение должно быть спроектировано таким образом, чтобы можно было легко внедрить remote. Это показатель правильного построения зависимостей между модулями.). Best practices посмотри, ищи примеры и пробуй реализовать.
Спасибо за ответ
ловить броадкаст какой нибудь, класть в префы, если между предыдущим бродкастом и тем что в префах большая временная разница то профит
пилю в одно рыло бекенд + андроид приложение, хочется написать интеграционный тест, чтобы он запускал сервер и андроидовскую аппликуху и прогнать несколько базовых сценариев.
Это вообще практикуется? Или это ебанутая хуйня и интеграционный тест такой хуй напишешь?
Хуево сформировал. По сути я хочу тестировать андроид также, как тестировал бы вебо-парашу - берешь cucumber и selenium и эмулируешь всю хуйню, так же и тут. Надо дрочнуть на аналоги селениума для андроида, если они есть вообще
Теперь это мой БЛОЖЕК.
Похоже есть appium, который делает примерно что я хочу.
Был еще когда-то selendroid но похоже он уже не поддерживается, судя по коммитам.
в последних версиях идл стейт бродкаст не ловится, если приложение не весит в фоне, но правильно ли его вообще юзать для таких целей? по идее он может и не сработать, если в фоне будет висеть какое-нить другое приложение, которое жрет сурсы системы и не дает телефону перейти в спящий режим, или я чего-то не понимаю?
Как мне реализовать темную тему?
Интересует от 23 API, в курсе что в 10 ведре есть сахарок для темной темы.
Пока вижу 3 пути: выбирать разметку при запуске активити, применять стили к компонентам, красить компоненты.
Смотри AppCompatDelegate в доке, остальное нагуглишь.
Учти, что нужно проверять состояние и обновлять, к примеру, внутри onResume, если юзаешь несколько активити, либо ловить ивент при смене фрагмента, чтобы работало красиво.
Я делал такое однажды, точно не помню уже, но то гуглится, скорее всего что-то с паддингом
Это many to many . ЛУчше по id связывать
Есть Locale и Configuration. По-умолчанию из конфига дёргается дефолтная локаль, которая выбирает доступный перевод, исходя из настроек девайса. Создавай локали и апдейть конфиг. У него есть метод getLocales, который позволяет получить хэшмапу локалей и свапать их в рантайме. Читай документацию, там всё есть.
Спасибо, только на деле рефакторить через стили как следовало не стал, ибо это пара суток работы, вместо этого просто засплитил требуемые цвета для дневного и ночного режимов соответственно. Осталось нюансы пофиксить и анимации приклеить
Если тебе просто нужна возможность переключать, можно и так.
В ресурсах должен быть порядок
>Учти, что нужно проверять состояние и обновлять
Вот это, кстати, я написал на случай, если ты хочешь автоматически менять тему c привязкой ко времени, отдельными кейсами анимации и т.д.
Это копия, сохраненная 9 июня 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.