Программирование

Ответить в тред Ответить в тред
Check this out!
Android Development thread 2020 /android/ Аноним 04/10/20 Вск 12:02:17 18227311
1.jpg 21Кб, 512x256
512x256
2.jpg 290Кб, 3000x2121
3000x2121
3.jpg 12Кб, 512x288
512x288
4.jpg 38Кб, 1280x710
1280x710
Android Development Thread страует здесь.

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

>Хочу вкатится в 20/30/50 лет, не поздно?

Нет, не поздно. Лично знаю несколько примеров из жизни когда вкатывались в 30+ лет.

>С чего начать?

Для начала изучи roadmap - https://roadmap.sh/android

Roadmap анона из предыдущего треда:

Основы программирования, логические операции -> Джава(базовый синтаксис и особенности языка) -> ООП -> особенности различных версий Джава -> алгоритмы и структуры данных -> многопоточность -> дженерики -> функции высшего порядка -> Котлин -> Android SDK(UI, версии и различия, особенности оси на уровне работы виртуальной машины) -> работа с БД, CRUD(можно и на этапе знакомства с алгоритмами) -> git -> networking/REST API/JSON/сериализация -> актуальные фреймворки зачем и почему, спойлер: экономия времени -> архитектура, зависимости, инверсия контроля -> ?..

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

В эту же последовательность нужно вставить clean code, SOLID, DRY/DIE, KISS, YAGNI и прочие модные аббревиатуры, которые весьма актуальны. Что-то упустил, но, думаю, этого достаточно.

Навигация, от книг до вопросов на интервью:
https://github.com/qqqlll/Java-Thread/wiki

Очень много уроков и не только по ведройду. Почекай и посмотри, вдруг зайдет:
https://coursehunters.net/mobile-development

https://developer.android.com - ресурс от гугла с полным описанием всего.

https://metanit.com/ - ресурс с кратким разбором языков ПО, для тех кому лень в книги.

https://stackoverflow.com/ - ответы на большинство вопросов касающихся кода.

Курсы от OTUS:

https://cloud.mail.ru/public/4nHb/449Ub4Pqj

https://drive.google.com/open?id=1cxWWBZzHNRAdd0wnjN6lfLDcYqMv7ohm

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

>Что по книгам?

Java:
Head First Java Kathy Sierra
Thinking Java 4th Bruce Eckel

Шилдта не рекомендую, говнокод.

Kotlin:
https://techrocks.ru/2020/01/20/12-books-for-kotlin-learners/ - краткое ревью 12 книг.

Flutter:
http://flutterapps.ru/flutter-books/

>Стоит ли сразу вкатиться в котлин минуя джаву?

Нет. Не стоит. Есть точка зрения, что котлин позиционируется как "удобная/лучшая джава", подразумевая то, что ты хочешь писать на джаве, но более современно и практично. Да и глупо игнорировать джавоский мир, который является в топе по числу библиотек и решений, где тебе все равно придется погрузиться когда-то в его синтаксис.

>Прочел книгу по java/kotlin/flutter и посмотрел видосы, на деле ничего не понимаю. Куда идти дальше?

Делай свои мелкие пет-проекты, можешь копировать чужие и дополнять функциями которых там нет. Главное правильно пиши сам, гугли, трать часы и дни на мелкие функции НО сделай сам, что бы полноценно понимать что к чему. Вся суть сводится к тому, что бы ты изучив ROADMAP который указан выше, вынес знания, которых хватит на создание и понимание пет-проектов с помощью которых познаешь суть разработки. Также на собесах любят когда есть портфолио в гугл плей.

>Где взять примеры проектов?

Можешь банально поискать на ютюбе или в телеграмме. Для примера:

https://www.youtube.com/channel/UCPz3xmUpIbo8jooCtV_vMNw
https://www.youtube.com/c/devcolibri/videos

>Когда можно идти собес? И что для этого нужно?

1. Нужно хорошее знание Java/kotlin.
2. Понимание базовых принципов Android (жизненный цикл activity/fragment, что такое Context, intents, services, UI thread, support library и ее версии (уже androidx), shared preferences, SQLite, Handlers, Executors, Content-Providers, firebase.
3. Знание популярных библиотек типа Retrofit + Glide/Picasso + RxJava2 + Dagger2(по обстоятельствам) + гугловские поделки jetpack, понимания СОЛИД и других паттернов проектирования.
4. Базовое понимание что вообще такое Gradle. Рекомендую хорошенько изучить XML.
5. И хотя бы несколько готовых приложений.

upd: Также стоит прочекать вакансии в вашем городе и собрать самый часто используемый стек технологий и отталкиваться от него.

Незабывай изучать английский, потому что гуглить придётся именно на нем ибо информации в разы больше.

Ресурсы по инглишу для нубов:

Грамматика:
https://ru.duolingo.com/
https://lingualeo.com/

Сериалы и шоу, для того что бы увидеть полный список нужно купить подписку. Есть двойные субтитры RU/EN. Цена 300 рублей, но часто проходят акции 300 рублей за 2 месяца подписки.
https://ororo.tv/
https://ororo.tv/ref/1835272 - реф ссылка. Указал потому что: Переход по Вашей ссылке дает пользователям бонус +10% ко времени их следующего абонемента.

Также советую полностью сменить язык интерфейса на всех устройствах.

Ютюб каналы с простым английским:
https://www.youtube.com/c/Anomaly/videos
https://www.youtube.com/c/EnglishClass101/videos
https://www.youtube.com/channel/UCMCjGkbqKVkjJN2sVWocz0w
https://www.youtube.com/c/SpeakEnglishWithTiffani/videos

Старая шапка. За 2019 год.

https://pastebin.com/sh7eC6R4
Аноним 04/10/20 Вск 12:32:27 18227492
>>1822730 →
хамарин формс.
сначала начал андроид ковырять с котлином, не зная котлин
ковырял ковырял и подумал "чет котлин туго идет, нафига мне его учить то"
Там побыстрее разработка. Все таки xaml я знаю и это xaml, а не инфлатеры
Но там свои проблемы. Вот мой список граблей что помню
1 долгий запуск. лично меня бесит
2 полный клон моего приложения жрет в 2 раза больше памяти
А я из тех у кого не топ смарты и меня это бесит.
3 они дают AppShell это как навдрейер. очень удобный (все таки хамл), но блин он держит ссылки на страницы корневого уровня всегда. Бред. Конечно типичный мастер-чилд таким не страдает, но это ж уже рукоделие
4 GridView с карточками кривой. При удалении элементов схлопываются маржины справа. это баг, но делать мне больше нечего как багрепорты писать.
5 асбтрагированность от платформы это хорошо, но иос мне не нужен, так что только мешает это
6 Оказалось что я не могу прицепить longClickListener к картам. Его там просто нет. Мне тупо нужно было контекстное меню, а оно только для списков сделано. Нагуглил что пишешь велосипед в андроид модуле где используешь таймеры, а в трекере написали что этот функционал они за год не сделали и перенесли на мауи (который будет аж через год).
7 почитал какая там либа для мускуля, взял ее и... нельзя указать foreignkey< ну чтобы генерило таблицу. фичкреквесту 9 лет уже. Я код посмотрел и добавил за 30 минут. Потом оказалось что миграции тоже сам пиши. Легко, но после room это дикость.
8 ну и конечно размер apk

Но раз я уже немного вьехал в андроид, то вернулся, благо там андроидх

Аноним 04/10/20 Вск 18:09:19 18229573
>>1822731 (OP)
Анончики, всем привет
Хочу запилить приложение на мобилку. Простенькое, для личных целей (для целей локального коммьюнити, если точнее). Окончательно разочаровался найти какие-то внятыне видеоуроки по приложениям на котлине (изначально хотел делать на нем), потому прошу подсказать аксакалов: есть какие-то годные признанные отцами уроки по созданию android-приложения на java?
Мне простенькое запилить, особо в дебри погружаться не хочется, да и я не профессиональный программист.
А если пойдет, то уже можно в дебри
Аноним 04/10/20 Вск 18:15:15 18229604
Аноним 04/10/20 Вск 18:24:09 18229695
Мобилки же еще большая хуйня чем веб.
Аноним 04/10/20 Вск 18:31:53 18229776
>>1822960
С первого взгляда это больше похоже на то, что я назвал "дебри"
Мне бы что-то попроще, там где
"смотри как я делаю, вау, написали пару строк кода, у нас уже норм приложение, ухх!"
Что-то нагляднее
А разбор приложения (который с урока 34) там без базы нихера не понять.
Или это уже максимум просто и я охуел совсем?
Аноним 04/10/20 Вск 18:33:55 18229797
>>1822977
ну так чтобы понять прочти то что перед приложением
тогда и будет тебе база.
Аноним 04/10/20 Вск 18:51:12 18229958
Аноним 04/10/20 Вск 19:13:28 18230249
Аноним 04/10/20 Вск 21:16:37 182313910
Возможно ли с kotlin в будущем перескочить на swift? Я бекамер если чо, подскажите
Аноним 05/10/20 Пнд 00:26:49 182324311
>>1823139
Первична платформа, а не используемый язык, так что вопрос должен быть поставлен так: "возможно ли перейти с Android на iOS". Так или иначе, не вижу причин, из-за которых это бы не было возможно.
Языки схожи, принципы и паттерны те же. Да, есть и различия, но в их понимании нет ничего сложного. Мобилка есть мобилка.
Аноним 05/10/20 Пнд 03:18:54 182328812
Перепост из прошлого треда. Может, кто ещё отпишется.
Вот раньше была такая вещь, как RoboVM - нечто, позволяющее писать аппсы под iOS на жаве. Но потом её купили мелкомягкие, и оно потухло. Хотя, вроде, есть живой форк (https://github.com/MobiVM/robovm) и ещё BugVM (тоже, вроде, форк, но полудохлый). Ещё есть Multi-OS Engine от Интела и нечто под названием Gluon Client Plugin, использующее GraalVM от Оракла. Может, что-то из этого кто-то из анонов уже использовал? Как оно? Насколько оно надёжное и беспроблемное? Отпишитесь, плиз.
Аноним 05/10/20 Пнд 12:02:42 182345313
Посоны, помогите. Знаю жабу, солид и всякую другую хуйню. мне сейчас можно прямо в котлин или стоит на жабе пописать?
Аноним 05/10/20 Пнд 12:15:40 182347014
Аноним 05/10/20 Пнд 12:19:08 182347815
Аноним 05/10/20 Пнд 12:40:15 182350816
>>1823470
>>1823478
Просто хуй его знает. Если я буду юзать котлин с последними наворотами, это всё будет нормально работать на старых андроедах(с 5, например)? Алсо, чекал книги по андроеду, так вот книг с контентом ПЕРВОГО ПОКОЛЕНИЯ в 2020 не выходило вообще. Это значит, что джава, как язык для андройда — ВСЁ?
Аноним 05/10/20 Пнд 12:48:37 182351617
>>1823508
Можно юзать котлин только с теми наворотами, что позволяет котлин под андроид
так что все будет нормально
Аноним 05/10/20 Пнд 12:51:28 182351818
>>1823516
>котлин под андроид
ну я это и имел в виду. котлин с последними наворотами под андройд.
Аноним 05/10/20 Пнд 13:07:33 182353519
>>1823508
Тут не от языка зависит, а от андроид СДК. Но чаще всего даже относительно новые фичи имеют поддержку старых версий андроида, if (Build.VERSION.SDK_INT>..) пишешь относительно редко, midsdk на уровне 5-6 андроида cейчас вполне комфортен.
Аноним 05/10/20 Пнд 13:16:12 182354720
>>1823508
И джава не совсем все, т.к есть солидный массив приложений на жабе, которые переписывать чисто ради того чтоб было все не на жабе а на котлине никто не будет.

Но все что пишется новое - пишется на котлине, практически 100%. Сам гугл обьявил что теперь андроид разработка - "kotlin first".

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

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

З.Ы Речь конечно о используемой ведроидом 8-й жабе, если сравнивать котлин с 14 (или какая там уже, 15?) - не все так печально. Но в целом сейчас я не вижу ни 1 причины начинать проект на жабе вместо котлина.
Аноним 05/10/20 Пнд 13:23:26 182355321
>>1823547
>переписывать
там жи вроде полный интероп с жабой должен быть. тоесть, основная кодбаза на жабе, если у нас всё по солиду, где-то должен быть интерфейс, который можер реализовать на котлине. или это я сейчас хуйню сморозил?
Аноним 05/10/20 Пнд 13:34:32 182356222
>>1823553
Да можно спокойно совмещать, так в общем-то и делают, там кажись только пару дополнительных телодвижений - типо котлиновский компаньон промаркировать @JvmStatic если их с жабы дергать будут, я лично обжегся на пересечении джава/котлин только раз - подробностей особо не помню, прикол был в том что линт подсказал что проверку на null можно выпилить, мол там null и так быть не может, убрал и получил 0,002% крашей с npe в проде.
Аноним 05/10/20 Пнд 13:41:11 182356723
>>1823508
>джава, как язык для андройда — ВСЁ?
Да. Старые проекты поддерживают, могут переписывать/писать отдельные модули на Котлине. Новых на Джаве единицы.
>>1823547
>можно сделать легко на жабе и нельзя на котлине нереально
Многомерные массивы в Котлине ужасны
Аноним 05/10/20 Пнд 13:48:43 182357624
100.jpg 100Кб, 1281x653
1281x653
>>1823567
>Многомерные массивы.
Уфф, аж универскими лабами повеяло. Ну вот накидал за пару минут, код офк говно - но особых отличий от жабы в худшую сторону я не вижу.
Аноним 05/10/20 Пнд 14:36:35 182363725
>>1823576
Просто помню, что мне нужны были многомерные массивы и пришлось делать костыли.
Аноним 05/10/20 Пнд 14:44:29 182364426
>>1823576
о, в котлине можно квадратные скобки перегрузить?
Аноним 05/10/20 Пнд 15:46:16 182371027
>>1823576
Кстати, когда завезли скобки? Точно помню, что их не было и приходилось пилить многоножку
Аноним 05/10/20 Пнд 18:36:14 182384428
>>1823644
>о, в котлине можно квадратные скобки перегрузить?
нет офк, перегрузка операторов это еще в крестах кажись есть, но не жаба-подобных языках.

Вообще немного не понимаю удивления, в древних версиях котлина можно было только методами стучаться чтоль?
Сейчас по индексу можно не то что в массивы, в листы можно)
Аноним 05/10/20 Пнд 18:37:14 182384529
>>1823844
> по индексу
По индексу в квадратных скобках, самофикс
Аноним 05/10/20 Пнд 22:49:49 182399330
Аноним 05/10/20 Пнд 23:12:29 182400631
Есть у кого-нибудь книга "Волшебство Kotlin"? Поделитесь ссылкой
Аноним 06/10/20 Втр 07:16:18 182411232
>>1823993
Обосрался, не знал(
Аноним 06/10/20 Втр 17:38:01 182454433
image.png 92Кб, 400x400
400x400

Аноны, есть ли удачный опыт использования тулзовин для анализа экспешонов/крашей приложухи?

Нагуглил такого мамонта как ACRA, но может есть что-то еще?
Аноним 06/10/20 Втр 18:56:40 182464534
>>1824544
Что понимается под анализом? ФБ крашлитикс не хватает?
Аноним 06/10/20 Втр 22:48:54 182483635
>>1822731 (OP)
Здрасьте
А есть вариант именно в андроид-приложении, написанном на java/Kotlin запустить питоновский скрипт, который выплюнет некоторое количество данных, и уже дальше работать с ними? Понятно, что это считается моветоном, но все же.
Аноним 07/10/20 Срд 10:29:24 182501636
Аноним 07/10/20 Срд 12:18:31 182508337
>>1824836
пхахаха. обосратушки на яве написать ML ?
Ну так пиши на kivy.
Аноним 07/10/20 Срд 12:22:57 182508838
Аноним 07/10/20 Срд 14:48:52 182519639
Бля, какого хуя нихуя нет удаленок для джунов
Только сеньоры. Рили вообще джуну ремоут найти?
Аноним 07/10/20 Срд 17:24:07 182532340
Реально устроиться flutter разрабом имея продуктовый опыт только в вебе разработке, ну и знания самого флаттера на уровне написания простеньких приложений, аля дерни апишку, сделай круд, распарси жсон?
Аноним 07/10/20 Срд 19:39:45 182540741
Посоны, а разработочка по андроед фьючапруф? Через пяток лет мобильные камни будут по мощи как ноутбучные сейчас и можно будет крутить тот же условный электрон, например. Или нет? Поясните.
Аноним 08/10/20 Чтв 22:12:54 182622542
Почему говорят, что фрилансить на андроиде сложно?
https://www.upwork.com/freelance-jobs/android/
Подаешь заявку, описываешь заказчику почему ты у мамы самый умный, кидаешь примеры своих приложух из гугл плея
Что может пойти не так?

Да даже вот такой проект: https://www.upwork.com/job/Looking-for-android-developer_~016730f21c59ec87ef/
Ссышь заказчику в уши огромной простыней почему сможешь сделать приложуху лучше других

Просто пиздецки как не хочется работать в офисе, а на полноценную официальную удаленку берут только сеньоров, как выяснилось
Аноним 08/10/20 Чтв 22:14:07 182622643
Алсо, заказчики ведь люди чаще всего впечатлительные, поэтому им достаточно того, чтобы твоя приложуха из портфолио была со стразами и всей-всей-всей md-мишурой, в коде-то они в 99% вообще не секут, лол
Аноним 08/10/20 Чтв 22:14:23 182622744
Хотя мб я чего-то не понимаю
Аноним 08/10/20 Чтв 22:40:11 182623745
Аноним 08/10/20 Чтв 22:58:56 182624446
Сап, подойдет ли джава для первого языка программирования?
Очень интересует разработка мобильных приложений
Аноним 08/10/20 Чтв 23:03:08 182624747
>>1826244
Я для обучения скорее с++ взял - будет больно, но для обучения самое то (если есть время и нервы), а только после него вкатываться в уютную, удобную и безопасную джаву/котлин.

Аноним 08/10/20 Чтв 23:18:42 182625648
>>1826237
Ну я и есть околоджун, просто много из себя ставлю и пишу сразу как положено с использованием navigation components, например. Да и вообще все на джетпаке, перечитал уже почти все гайды гугловские. На работу пока не устраивался, скоро начинаю писать первое серьезное приложение для гугл плея и гитхаба. Зимой мб пойду на галеру в офис за 20к (живу не в дс) и получу этот год-два опыта, а потом буду ловить удаленку мидлом

Но как же хочется без этих галер ебаных, в тот же фриланс на апворк. Инглиш знаю, до этого пару лет работал копирайтером на etxt (кто знает тот поймет), в общем знаю как выживать в чане с говном с 1$-индусами и че надо писать заказчикам. Material Design знаю на хорошем левеле. Ну чем я не фрилансер?
Аноним 08/10/20 Чтв 23:32:25 182626549
>>1826256
Я бы не совался на апворк, серьезно. Говорю как человек просидевший первый свой год работы в микро апворк конторе.

Почему? Трудно что-то вырвать прежде всего. Условно говорят сидит сейлз (с В2 инглишием и подвешенным языком) с аккаунта шхуны, где есть уже какое-никакое портфолио и рейтинг - и то, найти проект ему весьма и весьма нетривиальная задача.

И если б проекты были нормальные - так нет, код почти всегда индусское дерьмо, заказчики бывают оч разные, но регулярно пытаются прокинуть на бабки.

В общем геммор еще тот, совмещать в себе и сейлза и разраба как по мне сомнительное удовольствие.

По итогу, на мой взгляд фриланс биржи - это дно разработки, ниже только студенческие лабы/дипломы

Для меня, даже с высоты моего скромного опыта эти все пропоузалы на проект за 1к баксов выглядит как очередь для нырка в навозную кучу и сейчас если я буду искать работу, то в первую очередь я буду бросаться на вакансии в крупных галерах, во вторую на средние и продуктовые - и только с голодухи и безисходности я готов снова пойти в upwork-agency фиксить индусское дерьмо.
Аноним 08/10/20 Чтв 23:59:45 182627350
>>1826247
А в чем смысл так делать?
Аноним 09/10/20 Птн 00:00:43 182627451
>>1825196
я месяц назад джуном на удаленку вкатился. так что - да, есть
Аноним 09/10/20 Птн 00:07:16 182627752
>>1826273
После крестов можно учить и понимать почти любой язык, а джава как 1й язык может зациклить новичка на хай лвл, ооп языках с виртуальной машиной и прочим. Впрочем если цель формошлепство - учи сразу котлин
Аноним 09/10/20 Птн 00:11:13 182628053
>>1826274
Брат, рассказывай подробнее
Где нашел, как долго искал, фуллтайм или нет, из какой страны компания? Какие у тебя умения и что было на собесе?
Аноним 09/10/20 Птн 00:26:46 182629154
>>1826280
учился у инфоциган(гигбрейнс). по итогу на вкат потратил год. дохуя было отказов. в итоге устроился в подмосковье. 30 на испытательном, 50 после.
спрашивали на 1 этапе многопоточку, жизненный цикл и "расскажите что знаете/умеете".
на 2 этапе гоняли по библиотекам, даггер, рх, мввм, мвп, ретрофиты, бд.
когда устраивался знал только джаву, за неделю поднатаскался на котлин.
Аноним 09/10/20 Птн 00:29:41 182629455
>>1826291
и да, до этого особо не кодил, сисадмином(не эникеем, а сети сервера и вот это вот все) хуеву гору лет работал. щас 28, так что историй про то что - вы ненастоящий программист - небыло
Аноним 09/10/20 Птн 16:14:15 182670056
Сколько весит SDK если ее поставить под линукс?
Аноним 09/10/20 Птн 16:15:01 182670157
>>1826700
пс (в установленном виде)
нищебродский ссд на 60 гигов из которых свободно 20
Аноним 09/10/20 Птн 16:48:38 182671258
>>1826701
Всем спасибо, все свободны. Не думал что так немного. (гига 4).
Аноним 09/10/20 Птн 22:58:46 182707059
нужно написать прилагу мелкую, для изучения ин. языка.
считать из файла урок (файл json или xml), и показать экран с упражнениями из урока. кароч хз, я пока думаю, для начала один единственный формат упражнений, типо вставь пропущенную букву в предложение.
Оплата только битком, писать orium.box@gmail.com
Аноним 10/10/20 Суб 15:19:06 182735360
>>1824544
В гуглоплее встроенная есть
Аноним 11/10/20 Вск 12:03:34 182784761
>>1822731 (OP)
Пацаны, короче, брейте бороды, чтобы их не было. Так, чтобы хлебало гладкое было. Голову тоже лучше налысо брить.
Код тогда отличный будет выходить.

А так - говно из-под хипстеров.
Аноним 11/10/20 Вск 18:45:24 182801362
Кста, а ведь по идее, если ты разработчик 2d-игор (на Unity), фрилансить прям легче будет?
Аноним 11/10/20 Вск 18:47:14 182801563
Прост рынок мини-игрушек востребованный, но я особо не вижу, чтобы дохуя было игроделов на том же апворке
Аноним 11/10/20 Вск 20:42:52 182806464
>>1828015
Не думаю что апворк хороший вариант. Мне кажется следует либо идти в гейм-дев конторы, а если хочешь сам на себя работать - ну сделай в соло игру, напихай туда рекламы/доната и заливай себе в стор. Я бы шел вначале в контору, а в свободное время пилил бы свой проект.
Аноним 11/10/20 Вск 21:37:11 182809265
>>1828064
>Я бы шел вначале в контору, а в свободное время пилил бы свой проект

Двачую этого лично знаю людей, которые увольнялись и пилил проекты от 6 до 12 месяцев в итоге получая выхлопа 0% и только уходили в минуса, не считая того что за это время дохода небыло ибо и работы основной небыло.
Аноним 12/10/20 Пнд 15:45:10 182859066
>>1828092
Так чаще всего и бывает, большинство таких приложений имеют пару десятков скачиваний - от самого разраба и круга его друзей/коллег.

Самый успешный случай: работал на одной галере и знал одного разраба с своим, живым проектом в гугл плее - какая-то карточная игра (оффлайн + онлайн), монетизация на рекламе и подписке, тысячи активных юзеров (точно уже не помню).

Это самый позитивный случай из тех что я знаю, но даже с него, выхлоп - 300-400$ в месяц, при зарплате на галере около 2к.

Аноним 12/10/20 Пнд 16:02:33 182860067
>>1828590
Знаю чела вкатывался в кодинг, до вката сделал проект БЛОКНОТ, СУКА БЛОКНОТ с фичами, в то время там было 500к скачиваний и 100к юзеров ежедневных пользователей.

Профит вроде 300+ евро в месяц.
Аноним 13/10/20 Втр 11:25:23 182912168
Поясните, почему до сих пор кто-то юзает или даже требует в разработке проектов для DI Dagger? Какой в нем смысл, когда есть богоподобный Koin. Он настраивается легче, он быстрее, адекватно показывает в консоли где ошибка, если она есть. У него есть офигенная функция инициализации синглтонов при старте приложения, а не при первом обращении. Так нахуя кому-то еще нужен дагер? Просто нежелание принять новое?
Аноним 13/10/20 Втр 11:34:01 182913869
Кошерно ли нынче использовать RxJava? Или есть какая-то более удобная парадигма?
Аноним 13/10/20 Втр 11:39:39 182914470
Аноним 13/10/20 Втр 21:56:25 182958971
>>1829138
> Кошерно ли нынче использовать RxJava
Смузихлебы заклюют.

>>1829121
> почему до сих пор кто-то юзает или даже требует в разработке проектов для DI Dagger
Ну вот щас, 2 недели у менеджеров попрошу на миграцию и будем использовать божественный коин а получу залупу за щеку.
К тому же даггер работает, к нему все привыкли, там зачем тратить человекочасы на переезд на коин?
Аноним 14/10/20 Срд 08:53:30 182981272
>>1828600
Кстати, до сих пор не встречал идеального блокнота. То табуляции там еврейские, то тупят с кодировками, то не могут запомнить настройку word wrap.
Аноним 14/10/20 Срд 09:11:45 182981673
>>1829144
На первый взгляд, выглядит оно так же, как и RxJava. Т. е. та же парадигма с цепочками Observable-ов.

>>1829589
>Смузихлебы заклюют.
Почему?
Аноним 14/10/20 Срд 12:54:08 182998474
>>1829121
Если в проекте используется Даггер, миграция максимально бессмысленна и убыточна, если речь идёт о чем угодно, кроме Hilt, который имхо является эталонной реализацией, которая лучше всего вписывается в парадигму разработки под мобильные девайсы. Koin - service locator. Он предоставляет ссылки на объекты, которые привязаны к функциям - это простая замена ручной реализации. Даггер имеет правильную di-каноничную структуру полный граф зависимостей, просто дебажится, генерирует код с помощью аннотаций, что позволяет скрыть реализацию и максимизировать абстрактность. Он гибок, масштабируем, потому выигрывает в сложных проектах. он дешевле в долгосрочной перспективе
>>1829138
>>1829816
>удобная парадигма
Парадигма - реактивное программирование, частью которого является реализация вида:
>парадигма с цепочками Observable-ов
Kotlin Flow, считай, является нативной реализацией RxJava, где ключевым механизмом являются корутины. Вот, пожалуй, и всё. всё же, функционал у RxJava шире
Проекты, где уже используется RxJava, не будут переходить на Flow. Новые же, вполне вероятно, будут пилить и на нём.
Аноним 14/10/20 Срд 13:13:05 183001875
>>1829812
Глянь EmEditor, может понравится
Аноним 14/10/20 Срд 14:45:33 183012876
>>1829984
Хз, у меня даггер ничего кроме горения жопы не вызывает. Сложная для понимания, громоздкая штуковина которая только усложняет жизнь. Может в не в моей вселенной, где вертятся огромные мобайл проект написанные по клину и покрытые тестами даггер и полезен, но на кой хрен он для 95% проектов нужен я не понимаю.

Пробовал писать проект с этим дерьмом, спустя 2 дня словил какую-то абсолютно ебанутую ошибку (циклическая зависимость если верить гуглу), поковырял 40 минут, не починил - снес к хуям зависимость на даггер и больше никогда ее не добавляю. Либы должны упрощать жизнь, а не усложнять. Реального полезного функционала 0, а дополнительной ебли овердохуя.

(офк для собесов пару бредовых предложений про так какая охуенная вещь DI и Ioc я знаю, но не верю ни в 1 слово из них).

Сейчас в вакансиях все чаще Koin мелькает, может там все хоть чуточку понятнее.
Аноним 14/10/20 Срд 19:34:46 183050377
Пару дней назад решил вкатываться в андроид-разработку, начал с котлина.
Можно так делать, либо надо сначала дрочить жабу?фу бля
Аноним 14/10/20 Срд 21:26:22 183063078
вкатился во флаттер с бекграундом в виде опыта в веб-разработке.
на руках имеется оффер и еще завтра второй будет (оба на позицию джуна 800$, но я за 3-5 месяцев выйду на уровень мидла и попрошу ревью с удвоением хп).
Аноним 14/10/20 Срд 23:50:49 183072379
>>1830630
Молодец, как долго вкатывался? Какого уровня знания в вебе? Флаттер хорош для своей нишинебольшой кроссплатформенный клиент/прототип, сколько бы его не ругали. сам его использую
Аноним 15/10/20 Чтв 09:56:59 183091980
>>1830723
ну в вебе я был около трех лет, на реакте писал где-то чистыми полтора года. заебался чето с браузером ковыряться и решил ну его нахер. как раз из-за короны период был, когда смог вкинуться в изучение нормально. В целом познакомился с ним зимой, а плотно изучал последние 2 месяца.
Собесы прокачивают как ни крути. Даже если вы на 100% уверенны, что не пройдете - все равно тех. собес будет полезен. Вы сможете услышать вопросы, которые надо будет подтянуть. Джунские вопросы уже от зубов отскакивают после 5-6 собесов.
Я расчитываю, что он не для прототипов будет, а откусит большУю часть рынка мобильного. коммьюнити растет, это хороший показатель.
Аноним 15/10/20 Чтв 15:16:05 183123581
>>1830919
>Я расчитываю, что он не для прототипов будет, а откусит большУю часть рынка мобильного.
Когда у тебя начинаются подобные маняфантазии, сразу спроси у себя:
1) Чем он лучше реактнейтива/замарина/ионика/qt/итд;
2) Почему ни у кого не получилось, а у него получится?;
3) Он имеет какие-то преимущества перед нейтивом в техническом плане? Особенно учитывая, что когда он перестанет хотя бы так жутко лагать никогда уже SwiftUI и Jetpack Compose будут взрослыми.
Аноним 15/10/20 Чтв 22:02:27 183155182
>>1831235
1)приятнее разрабатывать. меньше проблем с перформансом, проще сделать 60фпс анимации и т.п. замарин и ионик умирающие темы. на рынке почти не имеют своей доли.
2) за флаттером гугл + некст система на замену ведра будет вся на флаттере. она уже на нем + поддержка десктопа уже появилась и веб хуярить можно. я еще не пробовал, но думаю кайфово.
3)это кроссплатформа = главное преимущество
Аноним 15/10/20 Чтв 22:54:37 183157283
scenicwithinfuc[...].png 30Кб, 960x540
960x540
>>1831551
>приятнее разрабатывать
Вкусовщина.

>меньше проблем с перформансом
Если говорить про отрисовку UI, то всё ровно наоборот. Хотя, я хуёво шарю в андроиде, но на айоси рн рисуется нативными средствами и не лагает на простейшем списке, в отличие от флаттера, который даже это говно переговнил по скорости работы.

>за флаттером гугл
Скинуть тебе сайт с похороненными гуглом проектами? За рном фейсбук, а за замарином м$ (скоро выйдет MAUI и будет ещё один декларативный мобильный гуй-фреймворк). Тащемта, сейчас неподдерживаемые никем технологии и не всплывают.

>некст система на замену ведра будет вся на флаттере
а) Вроде как валидный поинт — но когда она будет-то? Ещё через несколько лет? А потом ещё ждать несколько лет пока она начнёт теснить андроид? Учито что-то что будет востребовано через 4-6 —да, это жостко;
б) Тащемта, если хотя бы залезть на доку фуксии и быстро глянуть картиночки, то становится понятно, что флаттер будет одним из фронтендов, причём даже рендерится он будет не сам, а системными средствами (как рн сейчас), кекус. А разрабатывать реально нативный UI для фуксии прямо сейчас можно на... плюсах и, нахуй, расте. Готовь жепу к байтойобству, если так ждёшь фуксию, лол.

>3)это кроссплатформа = главное преимущество
Ну, я тебя не об этом спросил. Как ты его бизнесу продавать будешь?
Просто сейчас с кроссплатформой такая ситуация, что она нужна либо для тестов всяких гипотез, либо малкому бизнесу, и рынок достаточно узкий (вакансии можно найти в основном в ооо ашот&ко и галерах, клепающих аппы этим ооо ашотам, либо в паре больших компашек, но ничего кроме прототипов на этом ты делать не будешь).
Большой бизнес предпочитает потратить бабла, чтобы не отгребать 1 звездочные ревью в сторах из-за кривого скролла и прочих особенностей технологии, имплементировать новые системные фичи максимально быстро, не спотыкаться о то, что чего-то нет и долго надо делать руками или вообще нормально сделать нельзя, получать продвижения от самих сторов (чего в том же аппсторе кроссплатформе банально не светит никогда, а в том же маковом аппсторе уже не пропускают приложения на электроне, что как бы кек).
Короче, пока кроссплатформа будет позволять только экономить, при этом значительно жертвуя качеством — она так и будет узкой нишей на рынке.
Аноним 16/10/20 Птн 00:40:59 183161384
>>1831572
> не отгребать 1 звездочные ревью в сторах из-за кривого скролла
Этого и в нативных приложениях жопой жуй так то. Чаще хуевые оценки ставят из-за функционала, а не потому что у тебя списочек просел до 20фпс. Юзеры будут кушать говно, пока нужный им функционал работает.
Ты конечно сейчас скинешь мне приложение пердузы, но там ясно было зааноншено мол встречайте кроссплатформу, отчего борцы за чистоту кода сразу побежали ставить единички хотя там и правда нарукожопили.
Та же ригла на флаттере имеет вполне ок рейтинг на иосе
https://apps.apple.com/ru/app/%D1%80%D0%B8%D0%B3%D0%BB%D0%B0-%D0%B0%D0%BF%D1%82%D0%B5%D1%87%D0%BD%D0%B0%D1%8F-%D1%81%D0%B5%D1%82%D1%8C/id1505062873

Ща еще на декстоп раскатят, надеюсь электроноговно сдохнет нахуй после этого.

держу кулачки за флаттер, но сам в него не лезу
Аноним 16/10/20 Птн 10:37:19 183172085
Сложно ли запилить тудушку(с блэкджеком и куртизанками) под андрюшу?
Аноним 16/10/20 Птн 10:46:05 183172886
>>1831613
>Та же ригла на флаттере имеет вполне ок рейтинг на иосе
Лагает ещё хуже пердузы (особенно открытие модалок в статьях, просто 3 фпс), правда ЦА из бабушек и дедушек явно на это внимания обращать не будет, вот уж ахуенный пример.

>но там ясно было зааноншено мол встречайте кроссплатформу, отчего борцы за чистоту кода сразу побежали ставить единички
Ага, набегают сотнями и ставят еденички, лол. Маня, это называется ЦА — у пердузы это молодёжь, в отличие бабушек у риглы, и требования к приложениям у них другие.

>Ща еще на декстоп раскатят, надеюсь электроноговно сдохнет нахуй после этого.
Сказал так, будто на нём написано что-то кроме полутора редакторов текста, лол.
Аноним 16/10/20 Птн 10:46:46 183173187
>>1831720
Ты просто ахуеешь, пиздец как сложно. Надо быть доцентом физмата МГУ, иначе не осилишь.
Аноним 17/10/20 Суб 14:15:37 183260588
>>1822731 (OP)
Сап, кто то пишет на QML? есть вопросик по реализации бекенда на Qt/
Аноним 17/10/20 Суб 15:35:50 183267689
>>1832605
Мне кажется, таких анонов легче найти в крестотреде.
Аноним 17/10/20 Суб 18:29:54 183288190
image.png 31Кб, 640x261
640x261
Весьма абстрактный вопрос, но все же, аноны, подскажите на тему:

Есть несколько стульев в плане работы с sql и Android Room:
- "Большие" запросы с кучей джойнов и с использованием @Embeded, все выцепляется в одном запросе

- Куча мелких запросов, никаких адских sql запросов, но дополнительный слой над ДАО (ну или в нем самом), где выплоняется несколько запросов и объединяется результат

В первом случае имею ебучей длины sql (под 100 строк), но все выцепляется за раз.

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

Как вы пишете на этой ссанине (Android Room) логику получания сложных объектов с вложенными структурами?

Я не смог подружиться с @Relation, оно не оче работает с one-to-one, а у меня именно что нужно это вложыенный несколько раз one-to-one выцеплять.
Аноним 17/10/20 Суб 18:44:53 183289991
>>1832881
Интересно, что за проект такой)
Я бы выбрал 2й вариант, тупо потому что с склейкой любой джун разберется если что, а вот копаться в sql запросах куда более мерзкое дело, не каждый андроид разраб достаточно хорошо знает все эти ваши джоины и прочее.
Аноним 18/10/20 Вск 07:26:52 183332992
>>1825323
нет.
Не так много вакансий.
Всегда требуется в довесок 1-2 года разработки нативных приложений или React Native.
Аноним 18/10/20 Вск 11:44:15 183337293
>>1832676
Спасибо, схожу туда, сидел прост 3 года на qt и как magnum opus хочу сделать приложение на qml в качестве прощания, но так никто не делает, и если возникают вопросы по реализации ответить в гугле некому)
Аноним 18/10/20 Вск 12:33:19 183338794
>>1832899

Прожект с наличием иерархии объектов, аналогично, например, иерархии животного мира, где там есть типы, классы, отряды и тд, всякие характеристики, куроч есть дохуя у меня и one-to-one и one-to-many и все это выглядит уебищно с первым вариантом, которым я пошел.

Плюсом первый вариант не подходит для того чтоб делать выложенные несколько раз структуры, там и так-то довольно ущербно все это с этими префиксами и необходимостью перечислять колонки, добавляя этот сраный префикс. Куроч боль ука этот Android Room
Аноним 18/10/20 Вск 14:51:26 183352095
>>1823567
>java для андроид все
Чет орнул в голосину с долбоеба.
А ничего, что так, на вскидку, 98% библиотек и не только написано на жабе? И котлин только сахарок для синтаксиса и быстрой разработки? Я уже промолчу, что на жабе можно писать не только туфту под мобилки, а закрыть, например, весь стек технологий для проекта, написать серверную часть к примеру. Да и захотелось дропнуть мобилы, знаешь джаву, вэлкам куда хочешь, хоть в написание оболочек для кофеварки. С котлином соси бибу на андроиде. Пруф ми вронг, как говорится
Аноним 18/10/20 Вск 15:57:08 183355696
>>1833520
>Да и захотелось дропнуть мобилы, знаешь джаву, вэлкам куда хочешь, хоть в написание оболочек для кофеварки
Только вот всё равно придётся дауншифтнутся максимум до начинающего мидла, просто потому что ты не знаешь предметной области.

>написать серверную часть к примеру
Да это на любом языке сделать не проблема, особенно в эру микросервисов, когда каждый пук можно писать на разных языках. Только вот дауншифтинга по причине описанной выше так же не избежать.

>Пруф ми вронг, как говорится
Тащемта, ты типичный нюфажек, который считает что кого-то ебёт его знание языка (который изучается от корки до корки за пару месяцев в данной ситуцаии, если ты не вкатыш, а твоё стремление сменить сферу в будущем намекает что к тому времени ты уже не будешь вкатышем, лол). Знание языка — это требование к, блядь, джуну, а не к разработчику.

От разработчика требуется знание платформы, паттернов, архитектурных подходов, набитые шишки во всех возможных местах, понимание что и как работает и как сделать то и это чтобы не лагало. Бывают конечно исключения, когда сложность языка ушла куда-то нахуй и уже целая история найти человека хорошо знающего язык (C++, например), но это не про джаву и котлин вот никак (у которых различия чисто синтаксически-сахарные).

Короче, сферу можно сменить всегда, но без просадки по зп и лычке ты этого не сделаешь (если не перейдёшь на буржуйскую галеру, в таком случае можно и апнуться, но только в случае удалёнки), а знание языка в такой ситуации — вообще второстепенная вещь.
Аноним 18/10/20 Вск 17:33:50 183361997
>>1833556
Блин, ты перефразировал мой предыдущий пост более нудным образом. Друже, знаешь, с котлином, если начать неожиданно с него, может получиться такая же история, как с пхп-макаками в свое время, не типизированные язык, все дела. То же и тут, всякие множественные конструкторы, отсутствие nullPointer, примитивные типы от объектов, проебанные статические члены и не приватные поля хороший замах на функциональность, только вот нахуй он тут и еще много чего. Это, блядь, фундаментальные вещи любого другого ООЯП, а котлинодибил о них ни сном ни духом, умный интерпретатор за него все замутит да здравствует сахарок. Я к тому, что котлин хорош для скоростной разработки говна на коленке, но не для вдумчивого осознания происходящего и тем более не может собой заменить жабу, лол. Вместе - да, отдельно - нет. Никто никогда не будет переписывать имеющиеся вещи с жабы на котлин. Да хули, банально погугли че нить под андроид, на сцаном стэковерфлоу какой процент ответов на котлин? Правильно, никакой, все на жабе. Заебись обучишься аки боженька
Аноним 18/10/20 Вск 18:22:03 183368398
>>1833619
>хорош для скоростной разработки говна на коленке, но не для вдумчивого осознания происходящего


Глупость высшей степени считать, что тип разработки ("на коленке" vs "вдумчивое") зависит от инсрументария, к тому же столь похожего.
Аноним 18/10/20 Вск 19:44:20 183377699

> 1833619
> на сцаном стэковерфлоу какой процент ответов на котлин? Правильно, никакой, все на жабе. Заебись обучишься аки боженька

Есть автоконвертация жаба-кода в котлин. Да и какой нужно быть одебилившей джэвэмной, объектно-ориентированной котлино-макакой чтоб не осилить джавовый код прочитать хотя бы?
Аноним 18/10/20 Вск 19:59:13 1833812100
>>1822731 (OP)
Здрасьте Здрасьте Люди добрые
Понемногу пилю свое приложение, фор фан, так сказать, понемногу вкуриваюсь в тему
Добавил в приложении кнопку перехода на секонд активити, и все работает
Но в правом нижнем углу значок письма
Изначально там уже была какая-то кнопка
Код для этой кнопки

findViewById<FloatingActionButton>(R.id.fab).setOnClickListener { view ->
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show()
}
В общем, его я закомментарил, кнопка перестала нажиматься, но она осталась.
в xml файле активити нет никаких упоминаний о кнопке
https://pastebin.com/cixWg3Yx - xml, там только одно текстовое поле
В превью никакая кнопка не отображается.
Что за нах магия? Что делать?
Аноним 18/10/20 Вск 20:37:42 1833884101
>>1833812
это может быть связано со строкой в файле манифеста
android:theme="@style/AppTheme.NoActionBar"
но это не точно
Аноним 18/10/20 Вск 20:45:57 1833896102
как помещатся в 65к лимит методов?
это пздц, подключаю androidx, firebase, рекламу и все, лимит превышен. Притом моего кода на 3к всеголишь
Аноним 18/10/20 Вск 20:51:50 1833902103
>>1833619
>Я к тому, что котлин хорош для скоростной разработки говна на коленке, но не для вдумчивого осознания происходящего и тем более не может собой заменить жабу, лол.
Друже, чтобы писать вдумчиво, осознавая что происходит под капотом — надо писать максимум на, блять, си. И вообще вкатываться в программирование по хорошему надо через него, потому что он даёт минимальную абстракцию над железкой и ос, а не закрывает всё виртуальной машиной и тысячей абстракций, начиная от языковых заканчивая твоими абстрактными фабриками синглтоновых бобов.

>Да хули, банально погугли че нить под андроид, на сцаном стэковерфлоу какой процент ответов на котлин? Правильно, никакой, все на жабе. Заебись обучишься аки боженька
Ну, если для тебя подобное это проблема, то стоит задуматься о карьере грузчика.
Аноним 18/10/20 Вск 21:39:25 1833959104
>>1833520
>Чет орнул в голосину с долбоеба
Так же подумал, когда увидел твои нюни.
Собственно, анон тебе уже всё расписал. Единственное, что тут можно добавить - да, новые проекты действительно пишут на Котлине, в чем ты можешь убедиться самостоятельно.
обзванивай галеры/спрашивай на проходной/выбирай свой способ
>>1833619
>всякие множественные конструкторы, отсутствие nullPointer, примитивные типы от объектов, проебанные статические члены и не приватные поля
Это юзкейсы, которые были реализованы для стандартизации/упрощения. Ты можешь сделать всё то же самое на манер джавы. Считать null-safety минусом, конечно, интересная позициянет. Автобоксинг тоже является элементом удобства, потому что компилятор самостоятельно избавляется от лишней ссылочности, что идёт на пользу производительности. Статика - зло, ловушка для дурака, так что это тоже правильное решение. ФП на любителя. мне нравится
>Никто никогда не будет переписывать
О том, что это нецелесообразно, уже было сказано.
>Заебись обучишься
Есть разница между целенаправленным и глубоким изучением и ознакомлением с тем, что необходимо для понимания механизмов, с которыми ты сталкиваешься в работе.
>>1833896
multidex
Аноним 19/10/20 Пнд 13:18:34 1834453105
>>1832881
Не стоит, короче, брать исключительно один подход это как раз и разорвет потом мозг - может возникнуть ситуация, когда будешь пытаться впихнуть невпихуемое. Включай мозг и продумывай где лучше разбить по разным сущностям, а где ебануть @Embedded и вытаскивать все джоинами. Обращай внимание на то как часто происходит обращение к бд касаемо какой-либо сущности, как будет удобнее работать, насколько действительно большая сущность. Возможно, где-то сущность используется только частично, а не целиком. Прикидывай в голове в каком месте какой подход будет оптимальнее.
Аноним 19/10/20 Пнд 13:24:27 1834457106
>>1833520
Чувак, конечно, жава задумывалась для разработки всякого embedded, но на практике все продолжают писать прошивки на C (иногда C++). Java слишком жирной оказалась для этих целей. Для кофеварок не то что STM32F0/F1 хватит, а даже какой-то старой Atmega8. А там Java означает сожрат всю flash и не только.

Поэтому, валиднее говорить, что, мол, захочешь тырпрайз под банки писать - жова лучше. Хотя, как ни крути, сейчас все проекты под ведро пишутся на Кт.
Аноним 19/10/20 Пнд 14:16:00 1834488107
>>1834453

Спасибо, в итоге в этом направлении и двигаюсь, часть переделываю на отдельные методы, часть оставляю так, буду анализировать как оно используется
Аноним 19/10/20 Пнд 20:09:20 1834831108
Аноны, есть вопрос. Если выложить приложуху в гугл, то как проходит оплата разработчику с монетищации и сколько времени проходит с момента оплаты покупателем до появления денег на счету девелопера?
Аноним 19/10/20 Пнд 23:02:01 1834921109
>>1829984
> Koin - service locator
нет, Dependency Injection

>Если в проекте используется Даггер, миграция максимально бессмысленна и убыточна
В целом да, но если проект относительно недавно начат (считай - менее года назад), то лучше переехать. Ну, или держать одних и тех же разрабов на нем, лол.

>dagger
> просто дебажится
> гибок
> масштабируем
> выигрывает в сложных проектах
тут просто в голос. Просто без троллинга или оскорбление посоветую - юзани в одном проекте Коин. А потом можешь придти сюда и признать неправоту.

> Kotlin Flow, считай, является нативной реализацией RxJava
Урезаной минимум наполовину. БОльшую часть реальных задач из реальных проектов, которые при помощи RX делаются на изи, ты не особо сделаешь на корутинах без мозгоебли, танцев с бубном и т.д. Да и из беты они не так давно вышли.




Аноним 19/10/20 Пнд 23:06:25 1834923110
Кстати, любителям дагера вопрос. Вы все еще дрочите ебанутый на голову инжект вьюмоделей в активити\фрагменты каждый раз плача или все же погуглили хоть раз в сторону Коина и увидели, как там реализована по-человечески работа с вьюмоделькой и ДИ?

На размышление дается 30 секунд.
Аноним 20/10/20 Втр 09:01:46 1835117111
>>1834923
Нет, не гуглили.
Нет, не фанаты даггера но продолжаем жрать это.
Аноним 20/10/20 Втр 12:46:36 1835234112
>>1833812
Бамп кнопкой письма!
Где ещё может лежать какой-то кусок кода, который может быть ответственным за эту кнопку? Подскажите, в какую сторону копать.
Аноним 20/10/20 Втр 20:02:25 1835600113
>>1835234
Кнопка письма это FloatingActionButton. Вообще она добавляется в разметку. Попробуй перейти по ссылке нажав на айдишник view. В том месте где у тебя R.id.fab
Аноним 21/10/20 Срд 15:05:39 1836153114
>>1834921
>нет, Dependency Injection
Ок, пруфаю устами профессионалов.
Фаулер:
The fundamental choice is between Service Locator and Dependency Injection. The first point is that both implementations provide the fundamental decoupling that’s missing in the naive example — in both cases application code is independent of the concrete implementation of the service interface. The important difference between the two patterns is about how that implementation is provided to the application class. With service locator the application class asks for it explicitly by a message to the locator. With injection there is no explicit request, the service appears in the application class — hence the inversion of control.
Уортон:
Since Koin isn’t a dependency injector but a service locator with a clever reified trick that you can use to manually perform dependency injection, the boilerplate will scale disproportionally.
Именно поэтому Коин плохо масштабируется. Цель Коина - упрощение, цель Даггера - масштабируемость и редукция сложности сопровождения в разрастающемся проекте.
без стёба советую изучить вопрос различия этих паттернов, потому что они действительно существенны
>юзани в одном проекте Коин
Юзал, вполне подходит для быстрого создания прототипа, не более. Правда, не очень воодушевляет перспектива ловить рантаймы.
>Урезаной минимум наполовину.
Я об этом упоминал ранее. Множество Rx-функционала будет недоступно для тех, кто выбирает этот вариант в настоящее время.
>>1834923
@ViewModelInject в Hilt + делегация by viewModels(), хотя код будет написан быстрее даже в том случае, если ты решишь самостоятельно реализовать фабричный класс под собственные кейсы, что сэкономит тебе время в будущем.
Аноним 21/10/20 Срд 17:47:03 1836275115
image.png 117Кб, 1014x931
1014x931
Ньюфаг итт, решил полазить по классам, добрался до файлов из android/sdk/sources, андроид студио эти файлы подсвечивает красным, unresolved symbol везде тыкает.
При этом проект нормально собирается и запускается, проблема только с этим.
Кто-нибудь сталкивался и знает как пофиксить?
Аноним 21/10/20 Срд 18:34:51 1836315116
>>1836275
Да, это нормально, ты залез в залоченный класс.
Аноним 21/10/20 Срд 21:48:01 1836434117
Двач помоги. Хочу написать простой сканер BLE маячков с технологией ibeacon на андройде, java. Нужно постоянно получать MAC, UUID и RSSI для дальнейших вычислений. Есть действительно простой и не громоздкий способ написать такой сканер? Все примеры нихера не понятные и не работают простым ctrl c -> ctrl v. В java не шарю особо.
Аноним 21/10/20 Срд 22:29:48 1836471118
>>1830128
Поковырялся 40 минут и сдался? Работал с большими долгоживущими проектами?
Мне переодически нужно несколько часовых подходов, разнесённых на 2-3 дня, что бы вкурить что тут происходит (как про Dagger, так и про другую ебовую логику)
Но согласен, для небольших проектов Dagger избыточен, да и в целом тяжёлый для понимая
Аноним 21/10/20 Срд 22:59:07 1836494119
>>1836153
Читал подобное объяснение разницы SL и DI от Жеки Вартанова

И тут меня смущает, вот что: в koin мы явным образом просим об удовлетворении зависимости через присваивание, а в Dagger просто вешаем @Inject и все работает само, но при этом для классов Activity, мы должны явно просить (.inject()), что бы зависимости были удовлетворены

Т.е. там и там мы в явном виде запрашиваем об удовлетворении зависимостей, просто в Dagger менее явно

Не находишь, что разница довольно эфимерна?

Наконец-то можно с кем-то это обсудить
Аноним 22/10/20 Чтв 05:43:46 1836615120
Судя по всему нормального cross platform ui framework никогда не будет. И чтобы свою хуйню писать , надо еще kotlin изучить. Ну хоть не java, спс на этом)

Мимо юнити сишарп макака

Кстати вопрос, даже два.

Были слухи что гугл свою новую ось создает вместо андроида. Где-то с год назад слышал это. Как сейчас дела?

И еще, не силен в архитектуре. Но есть ли возможность запускать приложения как сервис в винде? Хочу себе gps локатор запилить. Чтобы если проебал телефон, то запилинговать мог. Ну и еще на смарфон тяночки такое поставить) Ну и возможно ди сделать так чтобы этот сервис/приложение потом при заводском сбросе не удалялся и так и работал?
Аноним 22/10/20 Чтв 05:46:56 1836617121
>>1836615
Да знаю что там можно изначально в настройках поставить выдавать местоположение, но это работает до того момента, как злоумышленник не сбросит телефон к дефотным настройкам. Или это пофиксили давно?

Мимо еще и эпплраб
Аноним 22/10/20 Чтв 09:55:50 1836663122
>>1836615
Чем не угодили гугловские сервисы?
Аноним 22/10/20 Чтв 10:07:34 1836666123
>>1836663
Я устал двачерам писать одно и тоже по несколько раз. Подними взгляд выше и прочти еще раз
Аноним 22/10/20 Чтв 12:08:39 1836756124
>>1836494
>Наконец-то можно с кем-то это обсудить

Напридумывали аббревиатур, за которыми скрываются банальнейшие вещи и долбются в сраки в своих крафтовых барах, обсуждая с гонором всю эту хуету. Эх бля, вам бы на хабор, лайков бы набрали там.
Аноним 22/10/20 Чтв 15:08:09 1836946125
Кста, я забил на свою идею изучать андро по докам гугла, там какой-то пиздец неструктурированный начинается в Architecture Components

Читаю книжки. Ща осваиваю котлин из серии The Big Nerd Ranch, и он пиздец как охуенно идет, за неделю 200+ страниц осилил. Не думал что так будет легко, навреное знание явы рили реашет

Потом буду продолжать изучать андро по книге из той же серии the big nerd ranch 4 издания, там вроде все уже на джетпаке, да и отзывы о ней норм
Аноним 22/10/20 Чтв 16:54:41 1837049126
>>1836756
Тебе придётся заплатить за то, что смотришь как мы долбимся
Аноним 22/10/20 Чтв 17:11:42 1837068127
>>1836756
Двачую.
100 защекоинов этим петухам господам.
Аноним 22/10/20 Чтв 18:11:40 1837117128
не запускается avd в ведростудио, как фиксить?
Аноним 22/10/20 Чтв 22:27:53 1837273129
Аноним 22/10/20 Чтв 22:32:32 1837278130
>>1836471
>Поковырялся 40 минут и сдался? Работал с большими долгоживущими проектами?
Мне переодически нужно несколько часовых подходов, разнесённых на 2-3 дня, что бы вкурить что тут происходит (как про Dagger, так и про другую ебовую логику)

Аналогично, я въезжаю в новые вещи достаточно долго. Вроде уже 2 года опыта, а в дагере и rх я околонулевой. Но тут проблема не в том что "ниасилил" - а в том что реально не вижу смысла жрать кактус. В сторону не менее для меня сложного для rх такого бугурта нет

Самый большой из тех что я поддерживал - аудиостриминговая аппка, несколько десятков тысяч активных юзеров (за месяц), никаким дагером и не пахло (и слава богу).
Там основная проблема была в тотальном забиве на dependency inversion и в целом скатывания в тотальный монолит (спасибо ебанутым требованиям БА без времени на рефакторинг).

Аноним 22/10/20 Чтв 22:34:17 1837280131
>>1837278
И проект в сторе был уже года 4, когда я на него зашел так что не скажу что убер сложный, но долгоживущий и вполне живой.
Аноним 22/10/20 Чтв 22:35:35 1837281132
>>1837117
Что выдает, как именно не запускается? Там возможно нужно поебаться с haxm и прочим.
Аноним 22/10/20 Чтв 22:38:29 1837283133
>>1836946
Учить кодинг по книгам и докам? Как по мне подход такой себе, как только разобрался с языком (и базовыми основами того как нужно писать код и выстраивать архитектуру) - нужно садится и писать приложуху и разбираться по ходу дела со всем ведроид сдк.
Аноним 22/10/20 Чтв 22:46:26 1837291134
Ананасы, задумался над такой вещью: Всех джунов учат тому, что на те же фрагменты нельзя писать свои конструкторы (причины я думаю все знают, система будет юзать дефолтный без параметров). Но, я сейчас задумался - почему нельзя создать свои конструкторы, а помимо них, специально для системы ручками прописать все тот же пустой дефолтный - что при таком сценарии может пойти не так?
Аноним 23/10/20 Птн 00:26:36 1837366135
>>1837291
Начнём с того, как ты скажешь системе какой конструктор юзать?
Если покажешь рабочий вариант, то будет очень круто
Аноним 23/10/20 Птн 00:29:03 1837367136
>>1837117
Может быть в bios отключена виртулизация или как там этот параметр называется, но это актуально если ты на винде или линухе сидишь
Аноним 23/10/20 Птн 00:30:24 1837368137
>>1837273
Он же стал платным(
Аноним 23/10/20 Птн 00:36:03 1837369138
>>1837280
Сам первый раз столкнулся с большим проектом, приложуха для физ. лиц крупного банка (Аааааааааааа)

И тут уже хочешь не хочешь придётся жрать кактус, особенно когда нужно сделать, то чего ещё в проекте нет или рефакторить приложение в светлое будущее, благо на это выделяют 20% рабочего времени

Спустя пол года работы, изучил только крохотную часть приложения (4-5 экранов), про которые я могу сказать "Я знаю какая там логика". Это для меня дико необычно, т.к. до этого все проекты были написаны +- с нуля и ты мог пояснить за логику на любом экране
Аноним 23/10/20 Птн 00:45:54 1837376139
>>1837278
Насчёт не выделяют время на рефакторинг, можешь попробовать продать это менеджерам

Есть хорошая книга, которая поможет в этом: "Наш код. Ремесло, профессия, искусство | Бугаенко Егор"

Еще рекомендую как будто меня спрашивали "Элегантные объекты. Java Edition | Бугаенко Егор"
От подходов автора к ООП, будет рвать жопу на протяжении всей книги, но после осмысления твой код может стать чуточку лучше)
Например автор считает что конструкция if должна быть объектом: new If<Int>(bool, int1, int2);


Бугаенко, Бугаенко, божественный Бугаенко!
Аноним 23/10/20 Птн 00:49:08 1837379140
>>1837283
Солидарен с тобой, сам написал свою первую приложу опираясь на "Освой андроид играючи"

Но тут есть подводный камень, с которым ты столкнешься - незнание всех возможностей языка/фреймворка/либы и из-за этого будешь местами придумывать велосипеды

Так что со временем всё равно придётся изучать гайды полностью
Аноним 23/10/20 Птн 00:55:14 1837384141
Чисто интересно, есть тут еще ?дауны? как я которые пользуются только Apple устройствами, но при этом разрабатывают под ведро?

Какие подводные?)
Аноним 23/10/20 Птн 04:44:26 1837445142
>>1837384
Да. И не удивительно.

Пару вендоров только свои смарты позволяют обновлять на свежую версию системы. Самсунг и еще кто-то там. И то, пару раз всего, а потом новый смарт покупай. Кекв

Я до сих пор хз что делать. Покупать опять айфон за оверпрайс или самсунг.

В андроиде для меня намного больше возможностей (для полного счастья не хватает ток клаву подключить и ide открыть), с айос там конечно поменьше, типо торрентов нет, из локально сети не посмотреть фильм/сериал, ну и самое главное, нельзя разработкой заниматься без macos. Это прям пиздец, уже бы наверно пару приложух замутил по приколу.

Но у айфона есть киллфича прям. Хуй ты его разблокируешь и сменишь владельца. Я всегда смогу найти свой смарт, ток, конечно, если в нем есть зарчд батареи
Аноним 23/10/20 Птн 14:00:24 1837648143
1.jpg 124Кб, 1204x880
1204x880
>>1837366
>Начнём с того, как ты скажешь системе какой конструктор юзать?
>Если покажешь рабочий вариант, то будет очень круто.

Мысль не в том чтоб заставить систему юзать не дефолт, а в том чтоб самому спокойно пользоваться своими конструкторами, а системе сделать дефолтный с своей логикой для ее потребностей

Насколько я понял сдк делает что-то вроде этого:
Fragment f = clazz.getConstructor().newInstance();

Этот код спокойно достает ручками созданный конструктор без параметров, например:https://pastebin.com/QJTR52My

Пока вообще не вижу никаких проблем с этим...




Аноним 23/10/20 Птн 17:23:28 1837821144
>>1837384
Так наоборот удобнее кодить на маке, чем из по винды.
Аноним 23/10/20 Птн 22:07:25 1838093145
>>1837648
А что ты собираешься в этом конструкторе делать?
Инициализировать переменные/свойства фрагмента?
Аноним 23/10/20 Птн 22:10:34 1838097146
>>1836494
Я бы сказал, что разница соответствует "промежуточному" месту sl между жёсткой инициализацией объекта и di.
>но при этом для классов Activity, мы должны явно просить (.inject()), что бы зависимости были удовлетворены
Это один из кейсов, которые должен был покрыть DaggerAndroid, но не пошло.
>просто вешаем @Inject и все работает само
И мы получаем минимальную связанность и полноценный IoC, чего не может быть в Koin, где само понятие зависимости условно. Это та жертва, на которую пришлось пойти ради упрощения.
Нет, мне действительно нравится Koin пока я не ловлю рантаймы, но такова уж особенность reified, он действительно хорош для быстрого наброска "на коленке"посмотрел свои маленькие проекты, выглядит нереалистично просто, но для чего-то сложного, что нуждается во внедрении архитектурных решений, я возьму Hilt.
Аноним 23/10/20 Птн 22:29:54 1838113147
>>1838093
Ну если подумать всерьез - на практике все завязано на лайфсайкл, полагаться на создание обьекта в андроиде - гиблое дело.

Хотя мне тут нужно разобраться в теме до конца, сейчас например наткнулся на то что активити в случае когда ее убивает в бэкграунде при своем восстановлении, за каким-то хреном, достает как фокусник из шапки старые инстансы фрагментов, как это работает до конца я пока не совсем понимаю.
Аноним 25/10/20 Вск 11:06:48 1839175148
>>1837376
Какое ж говно ты сюда принес. 100% ооп нахуй никому ненужно. Бугаенко чорт который и пиарится как менеджер на статьях которые подрывают зад.
Аноним 25/10/20 Вск 13:44:19 1839263149
>>1839175
Плюсую, никому классическое ооп как правило не нужно. Взять те же основные архитектурные паттерны для андроида: как правило пытаются разделить стейт (модель), поведение и представление. По логике ооп разделять стейт и поведение уже не очень, попахивает какой-то функциональщиной.
Аноним 25/10/20 Вск 14:24:15 1839281150
>>1839263
У бугаенка оно и не особо классическое, оно именно что упоротое.
Но мввм не перечит ни ооп ни солиду. Ты не совсем прав.
Аноним 26/10/20 Пнд 09:54:02 1839934151
Nisi Dominus, R[...].mp4 15746Кб, 640x360, 00:05:04
640x360
Пацаны, хочу в приложении делать проверку при помощи кода, который присылается с сервера и исполняется динамически. Суть кода сводится к проверки сигнатуры АПК:

Signature[] sigs = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES).signatures;
Signature sig = sigs[0];
// далее мы через sig получаем хешкод, массив байт, массив символов и из всего этого генерируем md5 строку, которую потом проверяет сервер

Вопрос - взломщик сможет подменить результаты методов Signature в апк файле приложения: hashCode, toChars, toByteArray? Насколько это сложно будет сделать?
Аноним 26/10/20 Пнд 11:22:37 1839972152
>>1839934
> хочу в приложении делать проверку при помощи кода, который присылается с сервера и исполняется динамически
Нихуя не понял, ты собрался dex присылать с сервера и его выполнять или че?
> Вопрос - взломщик сможет подменить результаты методов Signature в апк файле приложения
Может, просто ищется по использованиям класса Signature, он же не обфусцирутеся.
Аноним 26/10/20 Пнд 11:36:13 1839980153
>>1839175

Нет, он просто несет пылающий факел просвещения в пердаки как настоящих, сишно-крестовых байтоёбов, так и скрытых, уже абстрактных байтоебов, которые уже отучились ебать байты и указатели напрямую, но еще не отучились от императивной процедурщиеы
Аноним 26/10/20 Пнд 11:42:00 1839984154
>>1839972
>Нихуя не понял, ты собрался dex присылать с сервера и его выполнять или че?
Само приложение написано на C#, скомпилировано в машинный код (IL2CPP). Там есть прокси-классы, которые работают с Джава объектами из NDK вот так:
var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
var packageManager = activity.Call<AndroidJavaObject>("getPackageManager");

var packageInfo = packageManager.Call<AndroidJavaObject>("getPackageInfo", packageName, GET_SIGNATURES);
var signatures = packageInfo.Get<AndroidJavaObject[]>("signatures");


Хочу генерировать эти проверки на сервере и присылать клиенту. Но тут вопрос, сможет ли взломщик легко модифицировать АПК файл приложения так, чтобы объект Signature возвращал правильные данные(то есть данные приложения с оригинальной подписью).
Аноним 26/10/20 Пнд 13:32:24 1840054155
>>1839980
> байтоебов
У меня есть плохие новости для тебя.

Тут в треде есть... воннаби-байтоебы... Только тссс!
Аноним 26/10/20 Пнд 18:14:09 1840287156
Кто-нибудь тут работает на удаленке? Реально джуну++ вкатиться?
Аноним 26/10/20 Пнд 21:18:47 1840491157
Аноним 26/10/20 Пнд 22:52:28 1840576158
>>1840287
Реально, но если ты не будешь справляться то скорее всего тебя дропнут через 2 недели.
Аноним 26/10/20 Пнд 23:47:52 1840606159
У меня в проекте дизайнерша намалевала все элементы с скругленными углами (а свитчи, алерты и прочее вообще нужно сделать как в айос, пздц) и я задался вопросом - как лучше сделать эти 100500 скругленных углов?

Сходу вижу 2 варианта - шейп с скругленными углами на бэкграунде, или вкладывать эти все вью в CardView где есть corner radius. Оба варианта имхо одинаково костыльные (100500 бэкграундов с разными цветами и радиусами угла vs чуть более засранная иерархия лейаутов), может есть какой-то третий путь?
Аноним 26/10/20 Пнд 23:50:57 1840609160
>>1840606
Хотя бекграунд все же выглядит адекватнее, чем +1 уровень вложенности из-за одного удобного атрибута.
Аноним 27/10/20 Втр 01:09:00 1840641161
>>1834923
Не использую Активити и фрагменты как контейнеры для экранов. Конструктор инжекчу все что мне нужно.

А коин позволяет подключить зависимость только на уровне гредла - чтобы di Фреймворк сам ее без модификации кода подцепил? В Даггере можно.
Аноним 27/10/20 Втр 13:17:35 1840857162
>>1840606
А чем шэйп костыльный? Вот кнопки в Cardview это что-то дикое.
Аноним 27/10/20 Втр 14:44:58 1840954163
>>1840576
А что значит не справляться?
Аноним 27/10/20 Втр 15:07:56 1840994164
>>1840954
Когда долго делаешь задачи, либо делать их не качественно, либо доебывать старших разработчиков всякой хуйней, проебываться и делать только простые задачи.
Аноним 27/10/20 Втр 16:21:32 1841071165
image.png 33Кб, 605x270
605x270
нормас в котлине писать ifы с помощью takeIf или я совсем ебанулся?
Аноним 27/10/20 Втр 16:35:05 1841093166
image.png 33Кб, 644x303
644x303
>>1841071
исправил свою ошибку кста

с takeIf намного приятнее смотрится, имхо
Аноним 27/10/20 Втр 16:35:55 1841094167
image.png 33Кб, 602x307
602x307
Аноним 27/10/20 Втр 17:03:13 1841126168
>>1822731 (OP)
Надеюсь, в этом треде нету женоподобных сойбоев.
Аноним 27/10/20 Втр 17:52:09 1841196169
>>1841094
1. Вынести oldBalance и newBalance в 2 переменные в самом начале функции
2. Проверять newBalance обычным if'ом
3. Операцию изменения баланса вынести после проверки и изменения всех патронов
Аноним 27/10/20 Втр 18:49:06 1841253170
>>1841196
Спс
Кстати, для обращения к элементам наследников Iterable кошернее юзать indexing operator ([]) или напрямую get-методы?
Аноним 28/10/20 Срд 09:46:19 1841791171
Котаны, а какие есть бест практис для работы с блютузом, чтоб event-driven, корутины?
В примере блютуз чата от гугла, используют Thread. Еще где-то асинхтаски. Есть ли смысл повторять эти подходы вообще?
Аноним 28/10/20 Срд 12:00:41 1841911172
>>1841791
Асинктаски депрекейтед уже (если ничего не путаю). Вообще самое стильное и молодежное конечно же корутины. От какого года этот пример от гугла?
Аноним 28/10/20 Срд 12:51:43 1841951173
>>1822731 (OP)
Всем доброго времени суток
По каким-то туманным причинам не считывает текстовый файл из raw-директории
https://pastebin.com/Cf5PU0Fm

После двух нажатий на кнопку все начинает работать :) В смысле ветка else
Там в поле, которое должно меняться, есть стартовый текст, который должен подменяться. Он не меняется.
директория в res, там создана новая директория raw, в ней файлы .txt, иначе в поле this.resources.openRawResource(R.raw.c0)не подставить, не появляется вариант.
Подскажите, что я делаю не так и куда копать в сторону ответа.
Аноним 28/10/20 Срд 13:13:39 1841957174
>>1841951
Разбираться впадлу (чтение файлов ручками всегда стремной вещью было), но код очень странно выглядит. Декларация метода внутри ифа - зачем, вложенность побольше сделать?!

Если maxcounter иммутабельная константа - так и создавай ее сразу как const, не парь людям и компилятору мозги.

e.printStackTrace() - в андроиде такое писать странно.
Аноним 28/10/20 Срд 13:18:03 1841958175
>>1841951
Плюс к предыдущему, не стоит в котлине без нужны явно тип писать при инициализации переменной var string: String? = "" - тут можно String? опустить, к тому же зачем ты ее делаешь nullable, когда по коду ты туда null не присваиваешь и даже при создании сразу даешь туда валидную пустую стрингу а не null.

Насчет интов - аналогично, вместо
private var counter: Int = 0

достаточно

private var counter = 0
Аноним 28/10/20 Срд 14:13:25 1841983176
>>1841957
>>1841958
>Разбираться впадлу (чтение файлов ручками всегда стремной вещью было), но код очень странно выглядит.
А то! Это же мой код!
Поговорим о главном: мне нужно, чтобы по нажатию поле текста заполнялось нужной мне карточкой (сейчас просто по порядку). Какие "бест практис" для этого в андроиде? Забить кучу строковых ресурсов? Некие базы данных? Есть какие-то относительно незапарные варианты, ну или общепринятые практики? Для запарных время ещё не пришло Укажи мне путь

>Декларация метода внутри ифа - зачем, вложенность побольше сделать?!
Это мой особый стиль
А как нужно было сделать? В другом файле и просто импортировать? Или до цикла? Или вообще до описания класса активити?
>e.printStackTrace() - в андроиде такое писать странно.
Тут будет отсылка к вопросу про "бест практис"
Аноним 28/10/20 Срд 15:40:32 1842041177
>>1839175
>>1839263
Шо такое "классическое ООП" или "100% ООП"?
Это когда объекты подобные биологическим клеткам взаимодействуют посредством отправки сообщений?
Аноним 28/10/20 Срд 15:46:27 1842043178
>>1840954
Рекомендую спрашивать на собесе/первых днях работы: "Чего вы от меня ждёте?"
Плюс запрашивать фидбек половину испыталки, что бы не накручивать себя неведением
Аноним 28/10/20 Срд 16:16:40 1842067179
>>1841983

>Поговорим о главном: мне нужно, чтобы по нажатию поле текста заполнялось нужной мне карточкой (сейчас просто по порядку). Какие "бест практис" для этого в андроиде? Забить кучу строковых ресурсов? Некие базы данных? Есть какие-то относительно незапарные варианты, ну или общепринятые практики? Для запарных время ещё не пришло Укажи мне путь

Вопрос в том насколько здоровенные у тебя тексты и сколько их. strings.xml используют для хранение коротких вещей, краткое изложение корана туда пихать явно не следует.

Raw файлы - может и подходит, можно хоть в статические стринги в случае если в процессе работы приложения ты их не будешь эти тексты редактировать/удалять/обновлять (например с сервера). Если нужно делать с этими текстами что-то помимо чтения (или если они тупо здоровенные) смотри на встроенную БД SQLite с Room и LiveData (рекомендую еще почитать про паттерн Repository). Я бы предпочел БД сделать.

Но твой метод чтения все равно какой-то кривой, вбей что-то вроде "Reading Android raw text file" на стековерфлоу, разнеси чтение файла и настройку клик листенера в разные методы (и блжад не вложенные в друг друга. Чтение из raw можно вообще вынести с активити куда-то в утилиты, если это нужно не только на данном экране.

В идеале вынести разнести логику и представление, смотри паттерны MVP/MVVM.


>>e.printStackTrace() - в андроиде такое писать странно.
>Тут будет отсылка к вопросу про "бест практис"

Log.e("Имя активити", "Мой метод чтения из raw файла обосрался, сорян", e);

Хотя бы так. + неплохо бы и юзера уведомить о том что чет поломалось и не загрузилось, сделай какой-то глобальный Алертдайлог для подобного.

И стандартный логгер в андроиде мерзкая вещь, рекомендую подрубить что-то стороннее, например: https://github.com/JakeWharton/timber
Аноним 28/10/20 Срд 17:28:12 1842147180
>>1842067
Ого
Ладно, не всё сразу
Решил БД пока не трогать, т.к. там думать нужно, а ещё мне не нужно менять эти текста, мне даже "на горячую" не нужно их заносить
>смотри паттерны MVP/MVVM
Хотел спросить "что это такое вообще", но не стану. Почитаю, как будет время

>И стандартный логгер в андроиде мерзкая вещь, рекомендую подрубить что-то стороннее, например: >https://github.com/JakeWharton/timber
Мне бы со стандартным разобраться :)

Раз уж я тут отписал, есть актуальный вопрос
Мне кажется, аксакалы с этим на раз-два справятся
Хочу присвоить тексту строковый ресурс (извлечь строковый ресурс в текст)
Но имя этого строкового ресурса генерится переменной
textOfCard.text = getString(R.string.???)
Что туда подставить?
Как туда подставить сгенеренную переменную?
Аноним 28/10/20 Срд 17:35:26 1842162181
>>1842147
>>1842147
>
>Раз уж я тут отписал, есть актуальный вопрос
>Мне кажется, аксакалы с этим на раз-два справятся
>Хочу присвоить тексту строковый ресурс (извлечь строковый ресурс в текст)
>Но имя этого строкового ресурса генерится переменной
>textOfCard.text = getString(R.string.???)
>Что туда подставить?
>Как туда подставить сгенеренную переменную?

Ох, я не думал что ты совсем новичок(

Никаких секретов нет, берешь и подставляешь)
Есть метод setText() у которого есть перегрузка под интовый параметр с id (т.е как раз конструкция R.string.???)
Например:
return_policy.text.setText(R.string.text_return_policy)

??? - это айди. У тебя в проекте есть папка res, в ней string.xml.
В ней есть пары ключ - значение, например такие
<string name="app_name">Hello World!</string>
Где app_name - и есть ключ, который можно подставить в R.string.???
Аноним 28/10/20 Срд 17:42:23 1842168182
>>1842162
Эй, ну что же ты, анон
Я бы не стал спрашивать, хотя бы не попробовав гуглить
Давай на твоем примере:
Есть строковый ресурс
<string name="app_name">Hello World!</string
соответственно, если мы сделаем
textOfCard.text = getString(R.string.app_name), то полю textOfCard задастся значение Hello World!
Замечу, что мы сами написали всю конструкцию, зная "ключ" app_name
Но как провернуть такой же трюк, если app_name генерируется в ходе работы программы, т.е. является переменной?
Никаких var там не подставить, ${} тоже.
Аноним 28/10/20 Срд 17:54:32 1842177183
>>1842168
Так и не понял в чем проблема. Хотим - скармливаем туда id ресурса, откуда стринга достанется сама. Если у нас что-то генерируется на лету - то мы туда можем засунуть любую кастомную стрингу из любого источника.
email_support.text.setText("123")
или
email_support.text.text = "123"

Или ты о классе R? Он генериться на этапе компиляции, просто давая intовые айдишники всему дерьму из ресурсов, с динамикой лезть туда не следует.

Аноним 28/10/20 Срд 17:59:18 1842183184
>>1842168
В ресурсах лежит статика, ссылки на нее (в виде этих интовых id) запихиваются в класс R на этапе компиляции. Никакую динамику ты там не сделаешь, ты туда пихаешь заранее все что может понадобится, максимум там можно еще сделать квалификаторы, чтоб получать разные ресурсы в зависимости от плотности пикселей, языка, дневного/ночного режима и т.д.

А все что генерится в рантайме - берешь и присваиваешь напрямую, причем тут вообще класс R в таком случае не ясно.
Аноним 28/10/20 Срд 18:12:11 1842195185
>>1842177
>>1842183
Ненене
Или я туплю по-крупонму, или я плохо объясняю
С картинками:
У нас есть куча стартовых пар "ключ-значение" (тех самых строковых ресурсов)
В ходе работы программы в зависимости от настроек нужно вывести на экран при нажатии ряд значений из пары "ключ-значение", ключ же при этом генерируется в ходе работы программы
команда textOfCard.text = getString(R.string.app_name) задает нужному полю с id textOfCard нужное в данный момент значение, т.к. мы знаем его ключ и ввели руками, прописали app_name
Как вывести эту же команду, если app_name генерируется в ходе работы программы?
Ну к примеру: в зависимости от настроек нам нужно 0, 2, 3 значение
мы генерируем
var app_name = "ddd" + number
При жэтосм всем есть строка <string name="ddd0">Hello World!</string>
Как подставить сгенерированный ключ ddd0 в это выражение (или другое?), чтобы задать полю textOfCard текстовое значение Hello World! ?
Аноним 28/10/20 Срд 18:28:22 1842223186
>>1842195
Понял. В общем - никак (напрямую, может можно что-то наговнокодить, но не стоит). Потому что мы по сути пользуемся не ключами напрямую, а их id, которые генерятся при компиляции и складываются в этот R файл в виде константных полей.
https://developer.android.com/guide/topics/resources/accessing-resources?hl=ru

С точки зрения языка это не ключ, не строка, это название поля класса R, название переменной. Единственный вариант достучатся к ней как ты хочешь - это Reflection Api, там мы можем пытаться достать любое поле/метод чисто по его имени в виде строки. Но это жуткий костыль, к которому прибегают в крайних случаях от безысходности, это явно не тот случай.
Аноним 28/10/20 Срд 19:24:09 1842295187
>>1842223
Получается, что у меня не очень-то много вариантов использовать выражение textOfCard.text = getString(R.string.app_name), если я знаю конкретные app_name?
Использовать что-то вроде GetResId
https://coderoad.ru/4427608/Android-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%B0-ID-%D0%B8%D0%B7-string
Или это лютый костыль?
Это ломает мою неокрепшую парадигму
А как иначе можно? Есть какой-то способ выводить текст, но именно те куски, которые мне нужны? Ну, как-то структурировать и выводить?
Аноним 28/10/20 Срд 20:08:57 1842342188
>>1842295
Ну это и есть рефлексия о которой я говорил.
Field idField = c.getDeclaredField(resName);
return idField.getInt(idField);

И да, рефлексия считается лютым костылем в регулярном коде.
Я юзал в проде 2 раза, чтоб сделать невозможное возможным (в динамике менять FCM_SENDER_ID для одного левого сервиса пушей и залезть в чужой сдк и поменять параметры которые извне не доступны). А для таких бытовых вещей юзать рефлексию очень странно.

>А как иначе можно? Есть какой-то способ выводить текст, но именно те куски, которые мне нужны? Ну, как-то структурировать и выводить?

Масса вариантов, не понимаю зачем заниматься подобными извращениями. У тебя есть какой-то большой текст откуда ты хочешь быть способным достать рандомный кусок? Или у тебя список текстовых файлов с которые тебе нужно доставать по какому-то индексу? Можешь подробно расписать кейс который породил такие мутные схемы в твоей голове?
Аноним 28/10/20 Срд 20:38:52 1842369189
>>1842342
Чет не заводится. Наверное, такое бывает, когда пытаешься вставить джавовский код в котлин файл
Или я просто не туда вставляю.
>И да, рефлексия считается лютым костылем в регулярном коде.
А почему так считается? С моей точки зрения человека, слабо знакомого с языком, очень даже логично. Это не секьюрно?) Или есть какой-то подводный?
>Можешь подробно расписать кейс который породил такие мутные схемы в твоей голове?
Короче, есть кнопа и текстовое поле. И много кусков текста. Просто разных кусков, никак не связанных.
В зависимости от настроек до запуска активити берутся несколько кэтих кусков и выставляются в случайном порядке. Далее при нажатии кнопки выдается первый из перемешанного списка, потом второй,...
Аноним 28/10/20 Срд 20:48:04 1842374190
>>1842369
Все таки до конца не понял, ну и ладно. Если речь идет прямо о кусках текста - я все таки бы заморочился с БД. Если заморачиваться не хочешь и тебя прямо прет по папке /res глянь такую вещь как string array для того же strings.xml. Напихать туда все твои текста, достать их в виде массива одной строкой, а дальше стучи по индексам и вообще делай что хочешь.
Аноним 28/10/20 Срд 20:53:36 1842381191
>>1842374
Ну, куски по полтора предложения длинной, но их будет много. 500+ кусков по полтора предложения - это много?

БД звучит красиво, но блин, это сложно. Выглядит со стороны прямо пиздец как сложно. Я в питоне еле прикрутил, хотя делал считай степбайстеп, а тут еще по джавовским видосам крутить. Я бы сначала сделал так, а потом оставил бы себе план на расширение.
Аноним 28/10/20 Срд 20:59:19 1842391192
>>1842381
>Ну, куски по полтора предложения длинной, но их будет много. 500+ кусков по полтора предложения - это много?

Никогда с подобным в андроиде дела не имел. Но 500 с хреном не слишком много имхо. В каком виде они у тебя сейчас есть и как тебе конкретное из них доставать нужно, тупо по № (индексу) или еще как?
Аноним 28/10/20 Срд 21:05:17 1842399193
>>1842391
не совсем
или да
В общем, пример с картинкой
Есть 100 фрагментов
Выставлены определенные настройки, которые уменьшают количество, скажем, до 5
номера 0 1 2 77 99
До нажатия кнопки я хочу перемешать все тексты и выстроить в очередь
2 1 77 99 0
При нажатии той самой кнопки я хочу выводить их по порядку из перемешанной очереди.
Пока что так.
Аноним 28/10/20 Срд 21:16:25 1842409194
>>1842399
Ну если прямо не хочешь заморачиваться то делай через string-array.
<string-array name="text_fragments">
<item>First</item>
<item>Second</item>
<item>Third</item>
</string-array>
Такую херобору пихай в strings.xml.

Дальше, в рантайме достаешь этот массив строк
resources.getStringArray(R.array.text_fragments)

И делай свои грязные делишки. Офк напиши себе скриптец чтоб привести свои строки к виду <item>First</item>, 500+ руками вбивать идея не лучшая.
Аноним 28/10/20 Срд 22:03:17 1842471195
>>1842409
Ну или пиши в raw как изначально кидал,. Придумай себе сепаратор между частями, считывай все это дело в тот же массив и развлекайся.
Аноним 28/10/20 Срд 23:16:17 1842516196
>>1842381
Я не совсем понимаю чем вы тут занимаетесь
Но 500 строк можно запихнуть в ресурсы посредством string-array
Аноним 28/10/20 Срд 23:22:59 1842524197
>>1842369
>А почему так считается?
Как правило рефлексия используется, что бы можно было делать, то что запрещено автором используемого класса/библиотеки, например обратиться к приватному методу

И при таком обращении ты сточкой пишешь название метода к которому хочешь обратиться, а автор такой взял и поменял название метода, после чего ты получаешь ошибку в рантайме
Аноним 29/10/20 Чтв 12:38:14 1842805198
>>1822731 (OP)
Здрасте
Слушайте, а обязательно изучать Hilt, Hephaestus, вот эту вот рыгачку?
В принципе, уже 2 года как используем Dagger 2 и он как раз. Про коин знаем, идите нахуй, спасибо

И вообще, че щаз нужно изучить по минимуму, чтобы не быть на обочине?
Аноним 29/10/20 Чтв 13:46:18 1842867199
>>1842805
Я считаю, что Hilt является воплощением того, каким должен быть di-фреймворк в контексте мобильной платформы, поэтому советую рассмотреть его, как минимум, для ознакомления с используемыми практиками. Если говорить кратко, это обертка для Dagger, смысл которой заключается в полной интеграции с Jetpack и компонентами его библиотек, циклом разработки и платформенными компонентами. До него этим воплощением пытался стать DaggerAndroid, который, что было заявлено в качестве основы философии подхода, был нацелен на устранение недостатков и специфических проблем языка и речь в данном случае как о java и производительности java-кода, так и о байт-коде и самой структуре построения графа объектов, которые пытались решить с помощью оптимизации кодогенерации платформенных компонентов с учетом жизненного цикла объектов и безопасности. В Hilt же оптимизацию связали с Jetpack-либами и их компонентами, которые, по сути, являлись и являются наиболее уязвимым местом с точки зрения производительности, без внесения существенных изменений в механизм работы Даггера с кодогенерацией. Этот подход наиболее удачен как с точки зрения проектирования продукта, так и с точки зрения его тестирования и потенциального внесения изменений в di-структуру, т.к. инструменты Даггера более низкого уровня лаконично вписываются Hilt-проект и сделать это гораздо проще, чем с DaggerAndroid, эффективность которого не оправдала себя, а используемый подход не позволял полноценно применять его в одном проекте с Даггером, либо же просто делал его бесполезным и лишним. Пока сложно говорить о том, будет ли он распространен в качестве основного инструмента, но внимания он определённо заслуживает.
Аноним 29/10/20 Чтв 14:34:04 1842922200
>>1842867
Ну, соглашусь по поводу DaggerAndroid. Такая себе, тулза, если мягко говоря. Не удачная.
Окей, благодарю за ответ. Посмотрим чего оно вообще такое, этот дивный зверь под названием Hilt.
Аноним 29/10/20 Чтв 17:30:54 1843118201
>>1839972
>Может, просто ищется по использованиям класса Signature, он же не обфусцирутеся
Сам нативный класс Signature может быть изменен? Так, чтобы приложение продолжало работать и не крашилось.
Аноним 29/10/20 Чтв 17:38:34 1843136202
>>1842409
>>1842524
Анон, спасибо тебе!
Наконец запилил - допилил свою прогу, сейчас буду допиливать мелочи. Ну, а потом новые крупные функциональности.
Да, замечу, что об синтаксис я очень спотыкаюсь. Да простят меня местные аксакалы, но питон интуитивно куда понятнее новичку.
Аноним 29/10/20 Чтв 21:29:03 1843329203
>>1843136
>Да, замечу, что об синтаксис я очень спотыкаюсь. Да простят меня местные аксакалы, но питон интуитивно куда понятнее новичку.

Смотря с чего начинал. Я плавно уходил с универских с++, поэтому куда более простоя джава с похожим синтаксисом зашла на ура, а там просто сел и в 1 день на котлин перешел.

При этом с питоном я тоже дело имею (универ, ML и все такое) - и он напротив вымораживает в некоторых деталях. Чего стоит только то что от табов логика кода зависит, это же просто ахуеть.
Аноним 30/10/20 Птн 12:03:08 1843627204
>>1842867
Перед изучением Hilt обязательно знать Dagger?
Аноним 30/10/20 Птн 12:36:47 1843668205
>>1843627
Нет, но di нужно понимать. В этом смысле ближайшая аналогия Dagger и Hilt - SQLite и Room.
Аноним 30/10/20 Птн 13:20:32 1843708206
Поясните такую вещь:

Вот есть скажем интернет магаз, где есть фрагмент с здоровенным ресайклом c товарами. При нажатии на товар открывается фрагмент с подробной инфой по товару, тот фрагмент с списком товаров уходит в бекстек. Потом жмешь назад - и мы видим тот же фрагмент 1 в 1, ресайкл с той же позицией и т.д.

По лайфсайклу view при уходе в backstack уничтожается, а при возвращении создается заново. Но при этом во всех приложениях она спокойна живет (причем выглядит так, как будто именно живет, а не восстанавливает стейт, даже никакого лага на подзагрузку не видно.

Как это делают? Как-то сохраняют и переиспользуют вью? Сохраняют стейт и как-то настолько быстро по нему восттанавливают вьюху? Или эта навигация сделана вообще не через бекстек, а фрагменты тупо открываются поверх старого? В общем проясните как добиваются такого поведения, какие тут best practices.
Аноним 30/10/20 Птн 13:38:42 1843722207
>>1822731 (OP)
Всем привет
Хочу вставить форматированный текст (заголовки, шрифты, разные цвета)
Но так, чтобы относительно просто, не хочу собирать конструкцию из кучи TextView
Какие есть для этого варианты, которые не порицаются обществом? WebView?
Есть что-то относительно простое, чтобы текст одним модулем вставить?
Аноним 30/10/20 Птн 13:40:48 1843725208
>>1843722
Смотри spannable strings и еще андроид поддерживает html - форматирование, можешь и про это почитать
Аноним 30/10/20 Птн 13:48:25 1843737209
Хотел сделать визуализацию простых L-систем на тилибоне через android.graphics, но понял что на питухоне намного легче.
Аноним 31/10/20 Суб 02:11:10 1844521210
>>1842805
Hephaestus(теперь Anvil) - это мастхев при работе с кинжалом. Постоянный include модулей это для меня был единственный минус даггера. С Anvil'ом это теперь идельный di фреймворк. Всякие коины-хуёины и в помётки не годятся.
Аноним 31/10/20 Суб 11:59:15 1844685211
Аноны, мне нужно просто post запросы отправлять, обязательно использовать okhttp или можно какими-нибудь дедовскими методами?
Аноним 31/10/20 Суб 17:22:00 1844934212
>>1844685
Ну okhttp / retrofit стандарт де-факто. Можешь конечно использовать HttpURLConnection ("из коробки"), но зачем так делать - не ясно.
Аноним 31/10/20 Суб 20:16:30 1845116213
>>1844521
Ебать, чуваки. Отэта да. Понял, спасибо.

Эээх, теперь опять смузи пить учить новые тулзы для ведра :( Надеюсь, на работе изучу...
Аноним 01/11/20 Вск 12:07:01 1845358214
пиздец, читаю тред и охуеваю. столько слов незнакомых, Hephaestus, Hilt, коин джетпаки. Я бы охуел это все после 30 учить, башка совсем уже не та. Хорошо, что всегда можно наговнокодить какую-нибудь ерунду по старинке без вот этого всего, залить в стор, и получать себе копеечку на пропитание
Аноним 01/11/20 Вск 15:43:45 1845481215
>>1822731 (OP)
Всем привет
Хочу сделать выпадающий список, но чтобы были только картинки
С текстом это делается в одну строку, а с толкьо картинками
https://stackoverflow.com/questions/3609231/how-is-it-possible-to-create-a-spinner-with-images-instead-of-text
Чет дохуя, много букофф
Мне же только картинки выставить
Есть более элегантный способ? Кстати, чел снизу описывал вариант для котлина, который у меня не заработал, написал Not sure if anyone is still using Spinners in 2020, что как бы намекает (наверное)
Есть ли более легкий вариант? как сделать легче, если нужны только картинки, силами котлина?
Аноним 01/11/20 Вск 16:49:26 1845529216
Аноним 01/11/20 Вск 17:17:55 1845548217
>>1844934
Понял. У меня такая задача, надо в качестве мониторинга кидать пост запросы на сервер с данными. Если запрос не прошел, ничего страшного, как я понял, мне нужны асинхронные запросы.
Аноним 01/11/20 Вск 17:20:57 1845550218
>>1845481
>>1845529
Чет странное
В общем, хочу урезать функционал этого решения до показывания только картинок / иконок
Они квадратные, 35 на 35
Закомментарил в коде кусок последней функции, выглядит так
override fun getView(i: Int, view: View?, viewGroup: ViewGroup): View {
var view = view
view = inflter.inflate(R.layout.custom_spinner_items, null)
val icon = view.findViewById(R.id.spinner_imageView) as ImageView
//val names = view.findViewById(R.id.spinner_textView) as TextView
icon.setImageResource(flags)
//names.text = Network
return view

И теперь спиннер отображаетиконки на выбор, а справа пустое место

В принципе, если выставить нужную ширину, он уйдет, но ведь это же не системный подход, правда? Как программно выставить так, чтобы он был главным элементом, ширина у него была wrpa_content и не было никаких полос белых? Где копать? Посмотрел, при значении ширины 90 спиннера, и 40 кастом спиннер итем полоска минимальная, но есть. Перебирать уж очень не хочется.
Аноним 01/11/20 Вск 17:53:15 1845575219
>>1845550
Вроде зашаманил, помогли манипулации с весами во всех местах
Аноним 01/11/20 Вск 19:13:33 1845639220
Пацантрэ, нужен совет от гуру разработки под андроид. Один товарищ придумал (с его слов) супер-идею мобильного приложения (рассказывать хочет только под NDA, так что пока хз, что там), для реализации которой нужно написать костяк приложения с базовым функционалом типа Тиндера (без примочек, только основное).

Вопрос: сколько человеко-часов займет создание первой версии такой поделки? Я сам плюсовик, под андроид никогда не писал...
Аноним 01/11/20 Вск 22:05:29 1845813221
>>1845639
Что-то адекватное это несколько месяцев.
Аноним 02/11/20 Пнд 13:40:14 1846142222
После последней обновы андроид студио не запоминает позицию скролла в файлах с кодом и скидывает все, при повторном открытии проекта, в начало файла.

Как фиксить?
Аноним 02/11/20 Пнд 13:41:45 1846145223
>>1845639
почему он сам не учит ведро-разработку и не делает это, раз так верит в свою идею, а мусолит тебя?
Аноним 02/11/20 Пнд 14:55:38 1846227224
>>1846145
Сам работает в другой области, в какой-то металлургической компании занимается госзакупками. Кстати, по этой теме предлагает запилить одно приложение для автоматизации процессов, вот тут уже детали я знаю и могу сказать, что идея достаточно здравая
Аноним 02/11/20 Пнд 15:45:36 1846278225
>>1846227
ну ладно. Мб это какая-то форма моей личной неадекватной неприязни к тем что постоянно придумывают чо делать и советуют всем, как будто самостоятельные разрабы только и ждут как им кто-то укажет что делать, а не делают свои идеи, что значительно приятнее. Хотя я бы сам наверное тоже чота придумывал и советовал, просто полет творчества вырывается с них и им становится приятно от этого, думаю.
Вообще-то, на фриланс биржах есть как раз те люди, что делают приложения под ключ за деньги, если "советчики" реально верят в свою идею.
Аноним 02/11/20 Пнд 16:25:36 1846313226
>>1846278
У меня ситуация скорее обратная. Общаюсь с кучкой бывших однокурсников, которые неплохие, в общем-то, программисты, но достаточно замкнуты в своей сфере и максимум пилят "гамы". Нет у них ни знания какой-то предметной области, ни каких-то навыков работы с людьми или в какой-то индустрии, кроме как на своих прогерских галерах. Я вот как раз рад был с этим парнем познакомиться, потому что он вне нашего прогерского мирка работает, понимает, на что есть запрос, имеет выходы на полезных людей.

Вообще, надо сказать, что идея заказать работу у фрилансера у меня появилась практически сразу. Но, с другой стороны, тогда зачем тут я? А у меня какая-то с детства, видимо, мечта сидит основать свой стартапчик в гараже. Хотя не знаю совершенно, возможно ли на данной деятельности поднять хоть сколь-нибудь значимые деньги
Аноним 02/11/20 Пнд 17:22:02 1846363227
>>1846313
> Нет у них ни знания какой-то предметной области, ни каких-то навыков работы с людьми или в какой-то индустрии, кроме как на своих прогерских галерах.
Сорри, но как будто у тебя есть.
> каких-то навыков работы с людьми
не нужно, все автоматизировано, общение через почту по желанию, с клиентами
> в какой-то индустрии
что именно ты знаешь что они не знают?

Аноним 02/11/20 Пнд 17:46:18 1846381228
>>1846363
>Сорри, но как будто у тебя есть
У меня как раз тоже нет. А вот у этого моего товарища есть. Зато я более-менее могу прогать. Таким образом, мы можем друг друга дополнить
Аноним 02/11/20 Пнд 17:48:41 1846384229
Аноним 02/11/20 Пнд 18:07:29 1846397230
Аноним 02/11/20 Пнд 22:00:50 1846637231
Столкнулся с идиотской проблемой, но хз как решить. Есть констраинт, по углам к его верху прилеплено 2 кнопки и к верху прицеплен вьюпейджер с картинками (на всю ширину). Проблема в том что как бы я не компоновал/перемещал эти вьюхи вьюпейджер всегда сверху, какого хрена?
Аноним 02/11/20 Пнд 22:02:06 1846639232
>>1846637
* на препросмотре кнопки есть, но после запуска вьюпейджера (настраиваю его в onViewCreated) он перекрывает их к хуям.
Аноним 02/11/20 Пнд 22:21:46 1846665233
>>1846637
попробуй не спавнить туда никакие картинки. Предполагаю что глайд, или что ты там юзаешь, чтобы показывать картинки, это делает.
Аноним 02/11/20 Пнд 22:34:00 1846676234
>>1846665
Нет, захардкожено пока все. Шиза еще веселее - дело не в слайдере вообще, сместил его - а кнопок не видать. Включил отображение всей разметки - их вообще нет... На превью есть, а на девайсе нет. Студию уже с инвалидацией кеша перегрузил, 2 инстанса эмулятора пробовал - один хрен. Видимо то что я мучу в рантайме убивает их как-то, но не понимаю как...
Аноним 02/11/20 Пнд 22:42:33 1846678235
>>1846665
Нашел причину, увидел мааленькие куски нижних границ этих кнопок вверху экрана. Такое впечатление что банальный topToTop лепит их не к верху вью, а прямо к верху экрана, игнорируя системный топ бар. Если сместить их вниз - все ок. Только на этом экране, и на превью при этом все норм. Я нихрена не понимаю.
Аноним 02/11/20 Пнд 22:49:26 1846680236
2.jpg 36Кб, 1076x230
1076x230
1.png 103Кб, 1658x667
1658x667
>>1846678
Так и есть, если одну слегка подпихнуть маргином - она вылазит)
Кусок паддинга левой тоже немного видно. Выглядит как баг
Аноним 03/11/20 Втр 13:29:22 1847069237
>>1846680
И конечно же оказалось что я это я дебил, а не баг сдк, накрутил нечитабельную хуиту для наплыва фрагментов под header с блекджеком и отрицательными марджинами. Сейчас сидел все утро рефакторил и приводил в божеский вид эту залупу. А констраинт работает как положенно.
Аноним 03/11/20 Втр 13:42:54 1847075238
Всем привет. Дайте советов мудрых, есть ли смысл вкатываться в программирование под Андроид? насколько перспективная отрасль? Знания джавы на уровне System.out.println("Hello World");
Да и в принципе любого языка. А еще я старенький. Сорян если ответ уже есть, неохота все подряд читать в какой-то надежде.
Аноним 03/11/20 Втр 16:13:10 1847214239
image.png 24Кб, 1224x215
1224x215
Анончики, подскажите, в чём может быть проблема. Последняя строчка кода с "getPackageArchiveInfo" у очень небольшого кол-ва пользователей вызывает эксепшен. И я не могу понять почему. Может как-то связанно с sdcard.

- В основном они запускают приложение на эмуляторе BlueStacks. У них в такой data-path:
/data/app/com.my.app-O-f0Umyla--0HU3oA2MAPA==/base.apk

- Среди них был и девайс "alps SYX-T704" с таким путём:
/mnt/expand/54b9f3f6-ccfe-44a2-89ac-9f774993c1c9/app/com.my.app-2/base.apk

- У всех процессор "ARMv7 VFPv3 NEON"
- Андроид API в основном v23 и выше
Аноним 03/11/20 Втр 20:18:59 1847487240
image.png 344Кб, 1033x581
1033x581
Аноны, тупой вопрос про data binding и design панельку в андроид студии.

Когда мы биндим и задаем дефолтное значение:
android:text="@{model.name, default=`John`}"

Дефолтное значение отображается в design панели в студии, что оче удобно!
Но мне аболютно нахой не нужно это значение в рантайме, как можно это реализовать? Не задавать дефолтное значение неудобно для дизайна
Аноним 03/11/20 Втр 20:33:19 1847498241
>>1847487
Попробуй tools:text="..."
Не забудь подключить tools namespace в xmlине.
Аноним 03/11/20 Втр 22:03:17 1847585242
>>1847498

Работает, спасибо. Хотя сейчас я попробовал воспроизвести изначальную проблему и не смог (default не рендерится если бинженное значение пустое или null), видимо я оче тупой.
Аноним 04/11/20 Срд 03:25:32 1847690243
>>1838097
у нас мультимодульный проект с чистой архектурой на 80+ экранов. Используем koin и никаких проблем масштабирования не было и не предвидится. Есть большой опыт использования даггера, но выбрали коин из-за простоты и удобства и не пожалели. Проблем с ошибками в рантайме нет, обычно они выявляются на этапе дебага, даже до QA не доходят, не говоря уже о проде. При этом стэктрейс понятный и без проблем находишь, что ты упустил. Кроме того, можно запустит перед сборкой тест для анализа графа зависимостей у нас он на всякий случай прогоняется на CI c остальными тестами. Специально проводили тестирование скорости сборки, но на среднем проекте. С коином ожидаемо быстрее.Так что все недостатки коина надуманы, при этом главное преймущество - простота использования, чего даже новый hilt так даггеру и не дал.
Аноним 04/11/20 Срд 08:00:39 1847722244
>>1847075
Ну ты сам подумай. Сколько сейчас людей пользуется мобилами с андроидом? Собирается ли андроид подыхать? Ну и то, что старенький, не так важно, если ещё мозги не ссохлись.
Аноним 04/11/20 Срд 13:03:41 1847839245
>>1847690

Я мимокрокодил, поясните, коин это типа рантаймовый di? Типа спринга?
Аноним 04/11/20 Срд 14:35:40 1847895246
>>1847690
Я только рад тому, что есть положительные примеры использования Koin. И всё же, мне очень нравится Hilt, как и сама тенденция упрощения инструмента, который, очевидно, должен быть простым в использовании, ведь это непосредственным образом влияет на стоимость конечного продукта.
Аноним 04/11/20 Срд 15:40:53 1847974247
>>1847690
Глянул я этот ваш коин всё таки:

>Специально проводили тестирование скорости сборки, но на среднем проекте. С коином ожидаемо быстрее
dagger-reflect для разработки и отладки, на CI release билд с dagger-compiler

>главное преймущество - простота использования
Подключение нового gradle модуля к приложению:
dagger: 1?. Создаешь даггер модуль, если есть биндинги 2. Подключаешь модуль в build.gradle 3. Используешь зависимость
koiln: 1. Подключаешь модуль в build.gradle 2. Всегда создаешь koin модуль 3. Подключаешь koin модуль в коде 4. Используешь зависимость.

Если взять использование koin'а на примере нашего приложения:
1. 80% зависимостей это конструктор @Inject'ы без биндингов интерфейсов. В коине все это говно надо писать руками. Нет спаспибо.
2. В коине нет мультибиндигов. Это вообще пиздец, без комментариев.
3. С коином каждый из ~150 модулей надо подключать в коде руками, Anvil для даггера это делает автоматом(что в комбинации с мультибиндингами позволает реализовать "плагин" модули, которые подключаются только в build.gradle приложения)

Так-то для пет-проектов всегда похуй, что использовать. Но мы же тут говорим про сириус бизнес, и в нём даггеру нет равных.
Аноним 04/11/20 Срд 19:21:13 1848100248
>>1847722
то то и оно! я ж так и думал, но с другой стороны мб все ниши заняты и особо никто уже и не нужен, а если и нужны то какие то суперпро, я тенденций рынка не знаю поэтому и спрашиваю. Еще ньюанс что живу в мухосрани, а идти работать мб придется не на удаленку, а в контору, а контор то у меня таких и нет в задрыщенске. Собственно хотелось узнать поподробнее че тут да как.
Аноним 04/11/20 Срд 19:23:30 1848102249
>>1848100
Ну, у меня в городе вменяемых компаний с мобилками тоже 1-2. Остальные либо в Киеве, либо в Харькове, либо во Львове.
В городах меньше - как правило, не так много компаний, где есть моб. разработка.
Аноним 04/11/20 Срд 21:33:56 1848251250
Всем привет
Не могу сформулировать запрос:
Есть, например, форма короткой регистрации игроков, там 3 игрока, вводятся их имена, задаются параметры
Ниже кнопка "+“
При нажатии добавляет четвертого игрока, а сама кнопка съезжает ниже
Как это реализовать? Как это вообще загуглить? Получается, что кнопка плюс динамически меняет активити? Есть какой-то пример в сети?
Аноним 04/11/20 Срд 21:50:17 1848275251
>>1848251
Да много как можно сделать. Если в форме максимум 4 игрока - то можно просто сделать скрытую по дефолту 4-ю форму и просто менять ее визибилити по нажатию. Если их может быть фиг знает сколько - гугли How do you dynamically add elements to a ListView on Android? или то же самое но для RecyclerView (если игроков может быть достаточно много)

Анимацию на пальцах не расскажешь, но там тоже все не сильно сложно. Самое простое - домножить координату вьюхи на коэффициент, который плавно будет плавно меняется в заданных тобой значениях.
Аноним 04/11/20 Срд 23:33:21 1848333252
>>1848251
>>1848275
Вариант со скрытой четвертой (и еще парочкой скрытыми формами) мне вполне себе нравится :) Костыльненько, в моем стиле.
Хотя можно запариться и сделать нормально.

Еще такой вопрос, связанный, можно сказать: хочу прикрутить некую таблицу 2 на х, где по второй графе будут сортироваться. Только вот я смотрю, и в таблице (которая TableLayout) нет сортировки/
Почему этот вопрос связан? Как я вижу, вариант каждый раз пересоздавать таблицу? Но я не знаю, как можно динамически пересоздавать элементы
Знаю только, как можно в уже готовых менять какие-то параметры.
Как лучше сделать?
Аноним 05/11/20 Чтв 09:52:47 1848466253
>>1834923
Hilt открывал хоть раз?
Аноним 05/11/20 Чтв 19:43:24 1848927254
>>1822731 (OP)
Насколько релевантно делать приложения андроид на Qt/PyQt? Есть тут такие?
Аноним 05/11/20 Чтв 21:06:26 1848992255
Посоветуйте пожалуйста сайтов с задачами, чтоб потренироваться, я новичок.
Аноним 05/11/20 Чтв 22:05:42 1849057256
Аноны, базовый вопрос по котлину, корутинам и как лутше делать в андроиде.

Допустим есть у вас метод, который использует android room и лезет в базу, условный AppleDao класс, поверх еще какие-нибудь абстракции,СЕРВИСЫ например, AppleService, который использует AppleDao.

Допустим в Dao я не стал заморачиваться с LiveData а просто без задней мысли возвращаю результат, предполагая, что оберунть это говно сверху корутиной - не проблема вовсе. Это сильно хуево?

И вопрос по наименованию методов, безотносительно sql, допустим вы знаете что метод нельзя выполнять в ui треде, а надо ебошить отдельным тредом/корутиной, может быть есть какая-нибудь общепринятая методология наименования, чтобы по методу было понятно? Типа там AppleService#loadAllApplesBlocking(), но это залупа жеж, слишком МНОГО букаф :(
Аноним 07/11/20 Суб 01:35:30 1850161257
Почему разработка на андроид такая отвратительная? Почему Android Studio так разбух и сочится каким то обильным несвежим говном? Я просто хочу создать простой кастомный будильник, с фоновым сервисом, почему мне для этого надо учитывать столько невнятного дерьма?
Как можно проще? А то я реально не понимаю нафига это деление между джавой и котлином, все эти активити, господи ёбаный рот этого казино.
Аноним 07/11/20 Суб 01:48:10 1850165258
>>1850161
Та, активити - то ещё цветочки.

Ваще гугл, честно говоря, занят тем, что пилит библиотеки-костыли для хуево спроектированных частей android framework. Т.е., намазыванием слоев говна на другие слои говна. А хочешь еще прикол? Да, май френд, сверху этого бывает ещё тоненький слой говнеца, чтобы тоже исправить. А ещё я молчу про разные модно-ванильные либы, от которых разные хипстеры тоже в восторге, но которые тоже являются сам кайнд оф слой говна.

Ну и проекты, конечно же, конечно же, в процентах 65 случаев таке ж лайно в плане секса кодовой базы, архитектуры и т.д.

Это вот то, чего я зрозумив за 4 года андроидной коммерческой разработки.
Аноним 07/11/20 Суб 01:49:59 1850167259
Блять, корутины, коин, другие разные приколы... Ещё ж только вчера rx с Даггер были каттинг эдж...
Аноним 07/11/20 Суб 01:51:42 1850168260
>>1850165
Ох бро, можешь пожалуйста вкратце пояснить или ткнуть в направление, как мне создать сервис и добиться от него чего-либо? А то я чувствую что голова взрывается от этого всего на моих C# такой хуйни не было
Аноним 07/11/20 Суб 04:10:54 1850221261
>>1850161
Всё из-за того, что ты выбрал неправильный подход.
Какой смысл пытаться разобраться в документации, не имея знаний о платформе и её компонентах? Гугли "alarm clock example", тебе выдаст новичковые туториалы, где всё подробно разжевывается.
Аноним 07/11/20 Суб 04:32:45 1850222262
>>1850168
Та с сервисами, на самом деле, не так вме и сложно. В кратце, запиливание сервиса на Андроиде выглядит как-то так:
1. Наследуешься от класса Service (это и будет класс твоего сервиса)
2. Добавляешь класс своего сервиса в манифест
3. Запускаешь сервис путем Context#startService(Intent), скажем, из твоего активити. Создавая интент, разумеется, в него необходимо положить класс твоего сервиса (именно который YourService.class)
Собственно, простейший сервис создан и запущен. Почитать об этом всем в целом можно тут: https://developer.android.com/guide/components/services.

Дальше можно с ним чего-то делать и каким-либо образом взаимодействовать. Можно, в принципе, через кидание тех же интентов и onStartCommand. А можно чуть удобнее - через т.н. локал биндинг: https://developer.android.com/guide/components/bound-services#Binder (вообще, стоит почитать всю ту страничку чтобы знать как вообще можно "пинать" сервисы и какие особенности и ограничения есть у всех этих способов; например, локал биндинг довольно удобен и прост, но имеет ограничения и в некоторых случаях его не заюзать).

Насчёт работы сервиса в фоне. Начиная, по моему, с 8 Андроида, необходимо запускать foreground service https://developer.android.com/guide/components/foreground-services по-сути, это просто перевод уже запущенного сервиса в режим, а не запуск нового если хочешь работать в фоне. Иначе, система ебнет твой сервис очень быстро и стремительно. Если в кратце, то форграунд сервис - это сервис, к которому будет "привязана" "несмахиваемая" нотификашка. И юзер будет знать, что у него что-то работает в фоне.

В принципе, это оооочень сжато и бегло по сервисам, которым нужно пахать в фоне.

Но вообще, как я понимаю, ты хочешь запилить будильник. Знаешь, я бы стал смотреть не сколько в сторону сервисов, а сколько в сторону AlarmManager:
https://developer.android.com/training/scheduling/alarms
https://developer.android.com/reference/android/app/AlarmManager
Аноним 07/11/20 Суб 11:37:07 1850291263
Обязательно дЖаву учить?
Что если мне надо просто запилить концептуальный прототип игры?
Вроде можно же юзая хтмл и жс запилить мобильную игру, не?
И если с нуля в катываться в джава андроид это сколько времени займет в часах?
Аноним 07/11/20 Суб 11:42:55 1850295264
В общем, стоит задача максимально быстро запилить прототип, знаний джавы/юниты - нету.
Аноним 07/11/20 Суб 13:48:45 1850379265
>>1850291
Игра на чистом андроиде - плохая идея. Есть куда более подходящие фреймворки.
Аноним 07/11/20 Суб 13:51:14 1850381266
>>1850222
Добра тебе!
>>1850221
Ты прав, просто скажем так, я ожидал чего-то другого
Аноним 07/11/20 Суб 13:53:12 1850382267
>>1850379
Так там все равно же джава используется во фреймворках?
А я джаву не знаю.
Аноним 08/11/20 Вск 05:30:39 1850936268
>>1832881
Repository из Clean Architecture для кого придумали?
Аноним 08/11/20 Вск 16:34:55 1851166269
>>1850382
Геймдев на жабе, ога. Вообще геймдев это анрил/unity, для андроида я еще имел дело с Corona SDK. А где можно писать вменяемые игры на жабе - ну я хз если честно...

Я бы вообще на знание языка не зацикливался бы, 2-й и последующие выучить намного легче чем 1-й.
Аноним 09/11/20 Пнд 00:10:24 1851493270
>>1851166
Геймдев - это приложения. Приложения пишут на жабе.
Вон в шапке жаба же.
Или я что-то не так понял?
Аноним 09/11/20 Пнд 04:35:20 1851617271
>>1840606
Скажи ей что не по гайдлайнам дизайн и пусть переделывает
Аноним 09/11/20 Пнд 07:06:03 1851674272
Помогите, как отладить сборку APK?
В этом я совсем нуб.
Исходный код скачен с опенсорса f-droid, в Android Studio собирается, работает.
Собираю проект - не устанавливается "не удалось установить приложение".

Как отладить сам телефон, как узнать - что не хватает? Где прочитать настоящую ошибку, почему мой пакет не ставится?
Аноним 09/11/20 Пнд 09:58:31 1851704273
>>1851674
$ ./adb install ../app-release-unsigned.apk
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates from /data/app/vmdl761073460.tmp/base.apk: Attempt to get length of null array]
3781 KB/s (29573637 bytes in 7.638s)


Понел, отбой
Аноним 09/11/20 Пнд 13:17:02 1851798274
>>1851617
Хреновая идея, дизайнерша сидит на стороне заказчика, а я пержу в другой стране на аутсосе, мое мнение хуже котируется. Да и проект для азиатского рынка, у них там огромные кнопки с золотым переливающимся бекграудом считаются красивыми видимо.
Аноним 10/11/20 Втр 11:12:04 1852459275
Тред не читал, так что извините, если повторяюсь

Сам разработкой под Android не занимаюсь, но по ощущениям с каждым годом всё больше и больше проектов начинают делаться на кроссплатформенных решениях: React, Angular, Dart/Flutter, да и на том же Kotlin'е можно писать под iOS.

Это правда или мне просто показалось? Нативные приложения скоро умрут? Правда, что для бизнеса писать для двух платформ одновременной дешевле в два раза?
Аноним 10/11/20 Втр 12:30:10 1852492276
>>1852459
>Нативные приложения скоро умрут?
Не умрут
>мне просто показалось
так точно
>для бизнеса писать для двух платформ одновременной дешевле в два раза?
дешевле это может быть только до того момента пока разработка не упрется в ограничения обмазывания кроссплатформенностью. А что произойдет тогда - уже проходили это и не раз, достаточно обратить внимание в сторону крупных проектов которые вернулись из кроссплатформы в натив.
>да и на том же Kotlin'е можно писать под iOS
С Котлин Мультиплатформ не знаком, но полагаю что частичное его использование в купе с нативной разработкой вполне оправданно. Но только частичное.
>Dart/Flutter
Лично смотрю в сторону флаттера. Сдается что будущее у него есть
Аноним 10/11/20 Втр 14:16:51 1852597277
Аноним 10/11/20 Втр 16:49:27 1852701278
>>1852597
Ionic и прочие полудохлая херня. Если говорить о кроссплатформе то тут есть текущий фаворит реакт нейтив и набирающий популярность флаттер, все остальное не взлетело/полудохлое и никому не нужное.

Если говорить рн или флаттер - рн популярнее, опять же js разрабов как говна и я видел не раз как чуваков с просто реакта
сажали неожиданно писать под мобилки (самое странное что они справлялись).

Но мне куда больше нравится флаттер, дарт как язык имхо поприятней жиэсо-говна (хотя опять же, мне он напоминает внебрачного сына родной жабы и богомерзкого жиэса).
В самом флаттере очень приятные глазу виджеты "из коробки", на том же андроиде для создания такого красивого ui ебли гораздо больше требуется.
И опять же очень классный подход когда флаттер рисует все сам, не трогая нативные компоненты. В целом я бы сказал что с UI в флаттере все охуенно, а вот в плане реализации бизнес логики все несколько хуже.
Аноним 10/11/20 Втр 17:55:00 1852772279
>>1852701
Во флатере можно на С писать же.
Аноним 10/11/20 Втр 18:04:36 1852786280
>>1852772
Да дарт неплох, я его вкупе с флаттером ковырял конечно буквально несколько дней, но бугурта особого не испытал.

Единственное что смутило - это привет от жиэса в виде отсутствия многопотока. После жабовских танцев с тредами и чуть позже с корутинами дарт в этом плане выглядит диковато.
Аноним 10/11/20 Втр 21:16:52 1853018281
Что не так в коде?

public class MainActivity<button> extends AppCompatActivity {
private LinearLayout b_1, b_2, b_3;
private Button button_1;
private boolean start1_stop1 = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b_1 = findViewById(R.id.bulb_1);
b_2 = findViewById(R.id.bulb_2);
b_3 = findViewById(R.id.bulb_3);
button_1= findViewById(R.id.button_1);

}

public void onClickStart(View view) {
if (!start1_stop1) {
button_1.setText("Stop");
start1_stop1 = true;

Thread thread = new Thread(new Runnable() {
@Override
public void run() {

while (start1_stop1) {
try {

Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}


}).

start();
}; else {
start1_stop1 = false;
button_1.setText("Start");
}

}

@Override
protected void onDestroy() {
super.onDestroy();
start1_stop1 = false;
}
}
Аноним 10/11/20 Втр 21:46:14 1853056282
>>1853018
Лезешь на ui не с ui main треда, создавай handler на main looperе и делай пост туда с изменениями твоей кнопки.
Аноним 10/11/20 Втр 21:59:24 1853061283
>>1853056
А нет, я слегка запутался читая код в таком ебанутом формате. Pastebin бы хоть заюзал...
Аноним 10/11/20 Втр 23:54:45 1853151284
>>1853018
Вижу отвратительный нейминг и простую задачу, которую можно было бы красиво оформить с помощью рх или корутинок, если бы ты писал на Котлине.
Аноним 11/11/20 Срд 00:38:34 1853181285
>>1853018
Так это не дело, мой юный друг!
Тебе тут нужен clean architecture.
Также тебе нужны котлин и корутины.
Views нужно дергать через ViewBinding. Нужно использовать ViewModels.

Все как учил Google, друг!

Не зря же в Google работает столько людей стольких ориентаций, гендеров и убеждений! :)
Аноним 11/11/20 Срд 11:48:22 1853356286
Работяги дайте совет. Работаю 2 года Android разрабом, пол года на Flutter пишу. Хочу менять работу и мне такая мысль в голову закралась, а стоит ли вообще оставаться в мобилках или может быть двигаться в сторону серверной части ?
UI фреймворки и платформы меняются, в свою очередь серверная часть нужна будте всегда.
Что думаете?
Аноним 11/11/20 Срд 13:49:46 1853478287
>>1853356
Ну, смотри.

Движение вперед полезно в любом случае. По крайней мере, оно полезно как минимум даже тем, что отвлекает от херовых мыслей, не говоря уже о развитии тебя как профессионала и придания жизни вкуса. Я иногда читаю доу.уа да, я с Украины, в том числе и комментарии, и диву даюсь насколько некоторые индивиды там без инициатив и пофигистичны даже по отношению к самим себе, насколько они ни о чем не мечтают, насколько у них нет амбиций, насколько они готовы "тупа провеслать на галере" всю жизнь. И им не интересно ровным счётом ни-че-го. Вот, как говорится, в натуре "колбасники"! А хуле, хата на трое - предел мечтаний, а все свободное время - с банкой пива, пускай и крафтового, перед гейфликсом.

Вопрос куда - это уже отдельный вопрос.
Можешь и в бэк-энд идти, но там, так или иначе, тоже будет что-то новое всегда, пускай и происходить этот процесс будет медленнее.

Я, например, тоже почти 4 года как андроид разработчик, но вот подумываю во встройки двигать. Но даже в embedded, каким бы он стабильным и "старопердунским", по заявлениям некоторых весьма "модных" граждан, не был, появляются новые железяки там, новые камни и МК. Да, очень многое из этого вряд ли прям таким распространенным станет, но тем не менее.
Аноним 11/11/20 Срд 14:02:17 1853488288
>>1853478
Ну кстати двигаться ближе к железу неплохая идея. Есть тот же глобал который похоже вполне себе занимается андроидом под IoT, регулярно вижу вакансии под NDK для С++.

Хотя опять же, каким боком смена стека считается ростом? Наоборот, скорее немного теряешь в навыках при переходе. Конечно приятно и интересно попробовать что-то новое, но на мой взгляд это нифига не рост. Рост это после сеньора пойти в лиды, а дальше двигать либо в архитекторы и далее по технической части, либо в сторону менеджмента (имхо предпочтительный если ты не хиккан и с инглишем все хорошо, ПМы с нормальным техническим бекграудом а не курсами по скарму охуенны) .
Аноним 11/11/20 Срд 15:04:09 1853534289
>>1853478
На самом деле NDK или C++ не плохой вектор развития. Я раньше об этом тоже подумывал, когда были проекты с NDK.

>>1853488
Тут соглашусь. Смена стека это часто понижение зп и позиции.

А что думаешь в плане перспективы?
Аноним 11/11/20 Срд 16:25:27 1853632290
>>1853534
>Тут соглашусь. Смена стека это часто понижение зп и позиции.
>
>А что думаешь в плане перспективы?

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

Я вижу тут 2 риска - первый, то что нативная разработка будет вытеснена кроссплатформой. Пока не сильно верю, доля рынка у них конечно есть, но все более-менее серьезное пишут нативным.

2-й то что андроид как таковой вытеснят с рынка в той или иной мере. И вот в это я верю куда охотнее. Субъективщина, но все же напрягают пару моментов: то, что СШП разосрались с китайцами и похоже будут появляться альтернативы (те же хуавеевская хармони). То что в мире это дерьмо не взлетит я практически уверен, но сука китайцы с патриотизмом и wechatом головного мозга вполне могут уйти с андроида на чет свое. А это минус огромный рынок.

И в ту же копилку последняя айос. По сути раньше самый существенный довод в плане андроида было то что на андроиде есть виджеты, кастомизация, выбор дефолтных приложений и все прочее.
Но сейчас айос догнала по функционалу андроид и на мой взгляд (человека который всегда апл хейтил слегка) айос сейчас объективно лучше. Что сейчас на стороне андроида? Зоопарк из одинаковых 6.67 лопат? Зоопарк из фирменных оболочек? 120гЦ которые аппка чаще всего не осиливает отрисовать (хотя экран могет). Или дырка в экране сильно лучше челки с faceId?
Мб ток батарейка и герцовка, но думаю в течении пары лет завезут и это и тогда айфон станет действительно более разумным выбором.

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

Грустно все это, но даже я задумался о том что вместо нового синкпада возможно стоит взять новый мак (жду тестов/обзоров) и потом пощупать свифт и кроссплатформу... Вот не верю я в средне/дальнесрочные перспективы андроида. Именно из-за конкуренции с гей-ос.



Аноним 11/11/20 Срд 17:40:54 1853721291
>>1853632
Есть в твоих рассуждениях что-то. У меня у самого опыта работы около двух лет. Но из-за того что работаю в галлере, я и на питоне, flutter, php успел пописать.

Сейчас хочу найти что-то нормальное поэтому и раздумываю куда свернуть.

Думаю немного начать щупать spring в свободное время.
Аноним 11/11/20 Срд 18:28:03 1853763292
>>1853632
Как андроид может сдохнуть, если там 2,5 миллиарда активных устройств и нижняя цена устройства с актуальной ос - 60баксов. Так что там неосвоенных рынков в 3 мире просто непочатый край. Да, малоплатежеспособные пользователи - но там и 5 млрд пользователей - вполне осуществимо.
А полтора миллиарда айос - это потолок. Всей кто мог себе позволить яблофон за 600-1200баксов его уже имеют.
А уж мерятся фишками ос и очень слабо разнящимся функционалом - интересует очень мало кого.
Аноним 11/11/20 Срд 18:34:56 1853764293
>>1853763
А толку? Деньги то за приложения адекватные платят в штатах/европе в основном. А если Андроид останется в качестве основной ОС только для Индий и прочих Бангладешей, то вангую и рейты будут соответствующие, за которые только индусы и будут работать.
Аноним 11/11/20 Срд 18:49:23 1853778294
>>1853764
В Европе андроид в 2 раза популярнее, в сша медленно, но верно сокращает отрыв айос. Ну и стран 3его мира много. В каждой стране будут госуслуги, банковские приложухи, етк. Плюс приложения, которое выпускает компания из сша, а пользуются по всему миру.
Ну да, может разница в оплате еще будет увеличится, но самих приложух под ведро должно больше пилиться.
Аноним 11/11/20 Срд 20:04:06 1853863295
image.png 45Кб, 960x720
960x720
Почаны, есть вопрос по ЧИСТОЙ АРХИТЕКТУРЕ, по MVVP.

Я так понимаю что click listener'ы уходят в ViewModel в этой схеме.
Но что если в логике click listener'а нужно что-то напрямую дернуть у View и это не представляется возможным решить data binding'ом, а надо именно взять по id вьюху и обновить.

Щито тогда делать? Пробрасывать в ViewModel иные вьюхи?
Аноним 11/11/20 Срд 20:14:49 1853876296
>>1853632
Да, кстати. Во многих соглашусь. Вот это вот "А можете сделать как на iOS?" очень распространенная фраза клиентов.

Перспективы ОС, согласен, туманны. Мало того, что есть риск проеба рынка Китая, так ещё и есть риск непосредственно Гугла))) Ведь, надеюсь, все ж помнят их склонность к закрыванию проектов. А тут они ещё и что-то, похоже, с Фуксией мутят. Хоть Гомоватые и говорят, что у Фуксии другие цели, но слушать их - себя не уважать. Короче, пызда. Пару лет назад была видна таки перспектива на развитие платформы, сейчас - вообще хз, такое ощущение, что все скатывается фпизду.

И насчёт андроид-аппаратов тоже соглашусь. Моему аппарату 2 года (китайский факман). Подумывал обновить зимой. Начал смотреть чего вообще есть. Ну, короче, похоже ничего, кроме iPhone 11/12/12 mini, в общем, и нету. Все эти Xiaomi, OnePlus уже такое себе, если честно. Куча цифр и громких слов, а толку - абсолютный 0. Так, ебаный в рот этого казино, блять, раньше если оно хоть было довольно дешёвым и, при этом, факман, то сейчас - докидываешь половину от этой стоимости (если не меньше) и идёшь покупаешь неплохой iPhone.

Samsuka - то вообще странное что-то.
Аноним 11/11/20 Срд 20:19:23 1853882297
>>1853632
Кстати, забыл добавить.
Ну... У меня есть iOS-коллега, который раньше ходил с Android. А знаешь, чем все закончилось? Он перешел на iPhone. Просто потому что "Ну, да, Android может много чего. Файлы-хуяйлы, каштомизация и т.д и т.п., только вот нахера мне это все? Это ж телефон, а не компьютер, лол". И, кстати, я с ним соглашусь. Я лажу с Android, но вот никогда не каштомил, не васянил, "проводником" пользуюсь раз в год.
Аноним 11/11/20 Срд 21:44:07 1853924298
Подскажите пожалуйста, где искать ментора? И стоит ли его искать в самом начале обучения? Я сделал одну программку для себя, которой пользуюсь на работе, но она из говна и палок, в общем достаточно убогая прога. Конечно хотелось бы попасть в небольшую компанию и выучиться и работать там, но думаю что это не реально. Как вообще лучше поступить?
Аноним 11/11/20 Срд 22:11:41 1853947299
>>1853876
>И насчёт андроид-аппаратов тоже соглашусь. Моему аппарату 2 года (китайский факман). Подумывал обновить зимой. Начал смотреть чего вообще есть. Ну, короче, похоже ничего, кроме iPhone 11/12/12 mini, в общем, и нету. Все эти Xiaomi, OnePlus уже такое себе, если честно. Куча цифр и громких слов, а толку - абсолютный 0. Так, ебаный в рот этого казино, блять, раньше если оно хоть было довольно дешёвым и, при этом, факман, то сейчас - докидываешь половину от этой стоимости (если не меньше) и идёшь покупаешь неплохой iPhone.

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

Вот сейчас у меня Redmi note 8 pro. Он еще вовсе не старый, работает бодро - но апдейтов уже не будет. Экран ипс, хотелось бы конечно же амолед. Камера приемлемая, но до флагманов далеко.

И начал я смотреть что можно взять... Основное мое требование которое отметает большую часть рынка это не быть лопатой 6.5+.
Хорошая камера, корпус без пластика, хороший амолед экран, что-то похожее на чистый андроид. И вот если забить требование не быть лопатой - выбор очень широкий, а вот с моими требованиями выбор очень скудный.

Oneplus косячит с экранами, да и те балансируют на грани лопаты, смотрел в сторону пикселей - так у некоторых 5-й расклеивается... Хоть от сони поделие квадратное за 1к бери... Хотя скорее всего в некст году возьму все же 5 пиксель, рискну.

Но прикол в том что на этом фоне айфоны выглядят достаточно неплохо. Хорошие камеры, материалы, экраны, долгая поддержка, адекватные габариты. Если б не логика построения интерфейса iOS и убогие батарейки - мб пошел бы за айфоном.
Аноним 11/11/20 Срд 22:13:57 1853948300
>>1853924
Ищи программы стажировок/обучения/практик на галерах. Сразу на джуна достаточно сложно. Входной порог для этих обучающих программ вполне адекватный, хотя конкуренция офк будет. А там тебе уже и ментора дадут и на борт возьмут если хорошо себя покажешь.
Аноним 11/11/20 Срд 22:18:25 1853949301
>>1853863
>MVVP
MVVM
>ЧИСТОЙ АРХИТЕКТУРЕ
На пикче дефолтная схема MVVM, для чистой архитектуры ищи валидную.
Click Listener или любая другая манипуляция с UI принадлежит к самому верхнему слою, методы VM ты вызываешь внутри его тела. VM должна быть изолирована от всего, что не связано с получением данных, в том числе от любых компонентов, относящихся к фреймворк-слою(контекст, вьюхи и т.д.).
Ты слишком размазал вопрос. Кидай свой код, если хочешь, чтобы тебя правильно поняли и правильно ответили.
Аноним 11/11/20 Срд 22:21:24 1853951302
>>1853949
>VM должна быть изолирована от всего, что не связано с получением данных, в том числе от любых компонентов, относящихся к фреймворк-слою(контекст, вьюхи и т.д.).

О как, а как в таком случае предлагаешь реализовывать навигацию? Оставлять полностью на вью?
Аноним 11/11/20 Срд 22:26:26 1853956303
>>1853924
Зависит от того, что ты хочешь и какой у тебя бэкграунд. есть ли он вообще
Если реально смотреть на вещи, никто не хочет никого учить, за исключением некоторых случаев, когда ты имеешь навыки, которые увеличивают твою ценность в сравнении с иными претендентами. Один из вариантов - стажировка в компании, которая может позволить себе подобные программы и заинтересована в них, но и там свои требования, свой фильтр.
Аноним 11/11/20 Срд 22:38:43 1853959304
>>1853951
Мне даже стало интересно, каким образом VM может быть связана с навигацией в твоём понимании?
>реализовывать навигацию
NavController и активити, которая содержит юзкейсы для перехода, вызываемые из фрагментов. Проще и чище некуда.
Аноним 11/11/20 Срд 22:46:53 1853966305
>>1853959
>NavController
Я ниасилил, пробовал юзать наверное где-то год назад и по итогу наткнулся на кейс когда мне абсолютно понятно как выполнить задачу на старых интентах (пара флагов и готово), а на этих новомодных графах это сделать ну никак. Жаль подробностей не помню.

Сейчас у меня сейчас в проекте достаточно много в слое представления ебли с лайфсайклами и бекстеками, как тот же функционал сделать на этом дубовом контроллере я вообще ума не приложу.
Аноним 11/11/20 Срд 23:12:27 1853977306
>>1853959
>Мне даже стало интересно, каким образом VM может быть связана с навигацией в твоём понимании?

А вот хрен знает (архитектура мое самое слабое место). Помнится на собесе спросили как раз про навигацию на мввм, я выдал вариант когда интент висит в вм и мы его обсервим. Собес завалил кстати.
Аноним 12/11/20 Чтв 02:29:09 1854028307
>>1822731 (OP)
Всем привет
Стоит задача разделить экран:
По высоте на 30 процентов показывать изображение, на остальных 70 некий LinearLayout с кнопками
Как это лучше реализовать? Ну, как принято?
Вариант 1) guidline 30% и к нему прикручивать
Вариант 2) все это засунуть еще в один lilay, ему дать weightsum 1, а дочерним элементам по 0.3 и 0.7 соотвтственно.
Вариант 3) ???

P.S. И да, изображение же в эти 30 процентов вписывается командой
android:scaleType="centerInside"
?
Аноним 12/11/20 Чтв 03:58:03 1854051308
>>1854028
Гайдлайн, да, остальное излишне.
Аноним 12/11/20 Чтв 16:36:59 1854370309
Аноним 12/11/20 Чтв 16:50:07 1854389310
Очень нравится Котлин, сегодня закончил книгу The Big Nerd Ranch: Kotlin, теперь найду что-нибудь по паттернам проектирования.

Что можно писать на котлине помимо андроида? И как вообще с производительностью у JVM, лучше чем у питона хотя бы?
Аноним 12/11/20 Чтв 16:56:41 1854396311
>>1854389
Вообще, у меня мечта создать крипту. Знаю математику (калькулус), в целом разбираюсь в криптографии (подписи, системы с открытым ключом, хеширование и т.д.), знаю на концептуальном уровне как устроены криптовалюты.

Что если на Котлине попробовать что-нибудь интересное реализовать, какие преграды и преимущества тут дает JVM?
Аноним 12/11/20 Чтв 18:12:25 1854472312
>>1853488
Не, не хиккан и с английским все зашибись :)
Просто железяки - это <3 в моё случае :)
Аноним 12/11/20 Чтв 18:29:05 1854490313
>>1854389
>Что можно писать на котлине помимо андроида?

Я слыхал про робкие попытки юзать его в энтерпрайз бекенде, но думаю там доля проектов где рискнут добавить котлин исчезающе мала, да и где заюзали не всегда в восторге, там консервированное болото в плане технологий и даже обновить версию jvm на сервере - целое дело. А больше на практике я как-то про котлин не слыхал.
Аноним 13/11/20 Птн 12:09:42 1854954314
Аноним 13/11/20 Птн 12:11:21 1854956315
>>1854490
>исчезающе мала

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

Не вижу особых причин почему котлин не может отжать долю в бекенде
Аноним 13/11/20 Птн 12:21:26 1854960316
>>1854954
Охуенная книга, для Андро буду брать от них же
Аноним 13/11/20 Птн 15:01:28 1855083317
Aksiomaeskobar.jpg 50Кб, 400x511
400x511
Я обычный вкатун, и у меня есть два стула, идти на фронтенд-верстку или стажером на андроид. На андроиде я понимаю очень мало (писал хелло ворлд приложение год назад), а в вёрстке понимаю ещё меньше, но думаю что вкачусь за ~месяц. Если бы у вас был такой выбор, что бы вы выбрали? Какой стул хуже/лучше, где больше шансов роста как программиста, а где застой и уныние?
Аноним 13/11/20 Птн 16:10:32 1855158318
>>1855083
Лучше то, что тебе больше нравится и больше интересно
Аноним 13/11/20 Птн 16:58:47 1855237319
>>1855083
Выбирай то, что интересно, тогда и шансы вырасти увеличатся. Иначе высока вероятность того, что ты разочаруешься, перегоришь и никакие деньги тебя не будут мотивировать.
Аноним 13/11/20 Птн 23:46:05 1855549320
>>1854960
По ведру хуйня книга хотя в этих ваших редитах на нее дрочат как байтоебы на к&р. В каждой главе хуяк-хуяк, ну короче вот вам код, вы все поняли, идем дальше.
Аноним 14/11/20 Суб 03:06:05 1855664321
>>1822731 (OP)
Господа, выручайте
Есть массив натуральных чисел
(1,2,3,...n)
Для наглядности назвоем его massiv
Если в коде указать
massiv.reverse()
То программа работает, как задумывалось
Но проблема в том, что необходимо его перемешать
massiv.asList.Shuffled() работает некорректно. Есть подозрегие, что он не перемешивает
Во всяком случае в функцию, которая ниже, после перемешивания shuffl залетают обычные значения (так не задумывалось), а после реверса значения наоборот (как и задумывалось). Как быть? ЧЯДНТ?
Аноним 14/11/20 Суб 03:09:52 1855666322
>>1855664
если что, варианта massiv.shuffle() не было
Аноним 14/11/20 Суб 03:13:05 1855667323
>>1855664
>работает, как задумывалось
А как задумывалось?
Скинул бы код сразу
Аноним 14/11/20 Суб 20:31:00 1856236324
1308772214218.jpg 112Кб, 553x700
553x700
>>1822731 (OP)
Так, аноны, вводная:
Имеется идея текстового квеста на мобилки, под андроид хотелось бы сделать. Хочу сделать больше для души, для себя, ну и друзяшкам показать, хотя может и на гугл плей залью, если получится удачно вдруг. Сценарий и все что нужно уже есть, в текстовые квесты другие тоже наиграл достаточно в свое время, так что цельная картина того чего хочу есть в голове.
Но, из знаний у меня только старый универовский курс джавы и плюсов, с горем пополам помню как калькулятор для консоли на них написать, и то, буду подгугливать чую, короч только самые основы и общее представление.
Вопрос: что мне нужно выучить чтобы это все хотя бы попытаться реализовать?
Аноним 14/11/20 Суб 22:26:26 1856323325
>>1856236
Ну вообще все просто, думаю сделаешь. Вспомни жабу (сейчас конечно в ходу котлин, но если хочешь побыстрее и знаешь жабу - юзай уже ее), посмотри как верстаются экраны, как делается навигация. Глянь еще работу с ресурсами - все текста/картинки/музло где-то хранить нужно + прогресс сохранять. Ну и что за звери Активити/Фрагменты тоже придется разобраться.

Тут имхо самое сложное продумать как хранить это все древо экранов квеста. Никакой сложной логики нет, ui это кнопки, текста да картинки без динамики, возможно музыка. Не вижу особых сложностей.
Аноним 14/11/20 Суб 23:13:20 1856344326
>>1856323
А где это все посмотреть то можно например, вот ты лично где учил?
Аноним 14/11/20 Суб 23:16:04 1856345327
>>1856344
Я на стажировке от конторы одной, так что мой способ неочень)
Аноним 14/11/20 Суб 23:59:26 1856360328
>>1856236
>>1856344
https://developer.android.com/courses/fundamentals-training/toc-v2
Читай/проходи, пока не поймешь, что можешь реализовать нечто похожее на твою идею, пусть и в примитивном виде, а дальше гугли более сложную/улучшенную реализацию всех тех моментов, которые тебя не устраивают. На Джаве всё спокойно пишется, на этот счет можешь не переживать.
Аноним 15/11/20 Вск 09:16:29 1856530329
Анонасы, поясните за Dart/Flutter. По тестам я посмотрел - он помедленне жабы будет, и даже пожручее в плане памяти. Аппликухи не подлагивают на нём?
Алсо, поясните за sdk - насколько реально писать кроссплатформенно? Например, апи камеры одно для йоус и ведроида или придётся костылить прослойку с разными бэкендами?
Аноним 15/11/20 Вск 14:01:33 1856701330
Аноним 15/11/20 Вск 14:18:28 1856707331
image.png 74Кб, 983x869
983x869
Пытаюсь заюзать ява класс в проекте котлина, но при компиляции вылетает эксепшн ClassNotFound, все на пикриле
Чому так происходит? Вообще ничего не гуглится. ОС Убунта
Аноним 15/11/20 Вск 15:16:20 1856749332
>>1856701
Получилось не менее скомканно, потому метод нужно кидать полностью. Мог и весь класс скинуть, что уж.
Напишу о том, что бросается в глаза. Пример: есть два метода - sort() и sortedArray(). Первый возвращает Unit, поэтому массив будет отсортирован в любом место кода, который находится ниже вызова метода. Второй возвращает отсортированный массив, а это означает, что его нужно либо вернуть, либо присвоить переменной, либо как-либо использовать(например, внутри цикла - т.е. в определённом скоупе). Иными словами, он возвращает результат, который нуждается в сохранении. Метод shuffled() возвращает лист, поэтому к нему применяется аналогичное правило. Всегда смотри на возвращаемое значение.
В цикле достаточно написать
for (x in 1..mQuestionsList.size + 1)
step 1 - дефолт, а size не может быть не целочисленным, поэтому кастить его не нужно. Проверять на нуллабельность нужно до использования в цикле, например:
mQuestionsList?.let {
код
}
Аноним 15/11/20 Вск 16:09:16 1856803333
>>1856749
В моей проге mQuestionsList!!.size не может быть равно нулю
Смысл в том, что у меня есть некие данные, большой массив
А вожет и не массив, я уже не знаю, он состоит из объектов
у каждого объекта есть некие параметры
Я хочу выводить эти объекты в случайном порядке
Для этого я делаю новый массив, состоящий из натуральных чисел от 1 до максимального количества переменных ( в нашем примере это 1 2 3 4)
В коде это названо arrayShuffle
Если я делаю reverse(), и затем обращаюсь по порядку, то массив выдает значения 4 3 2 1, как и должно быть
Но мне нужен не реверс, а рандом (например, 4 2 3 1)

Ещё раз внимательно прочитал твой пост, сделал следующие вещи:
Перешел с array на list
сохранил в новую переменную, используя shuffle (для листа шафл есть)
поменял метод обращения
mCurrentRandomPosition = listShuffleAfter.get(mCurrentPosition - 1), а было listShuffleAfter[mCurrentPosition - 1]
В любом случае заработало
Конечно, это не инженерный подход, и сейчас я буду думать, почему
Пишу все это, чтобы сказать тееб спасибо. :)
Аноним 15/11/20 Вск 16:41:51 1856834334
>>1856707
Тебе нужно класс импортировать.
Аноним 15/11/20 Вск 17:31:29 1856871335
>>1856803
Лучше не шаффлить весь лист, а брать рандомный элемент. Чтобы не было повторов, кэшируешь те, которые были выведены ранее.
Чтобы было нагляднее:
https://pastebin.com/zK5DZ25L(в Идее запусти)
Там 2 варианта использования - по индексу и по свойству объекта, в зависимости от их однородности. Т.е. если они не имеют общих свойств, либо есть иные ограничения, используешь доступ по индексу.
Аноним 15/11/20 Вск 20:01:38 1856972336
Вкатились? Если да, то расскажите свою историю вката пожалуйста.
Аноним 15/11/20 Вск 20:26:09 1857007337
>>1856972
Ну, сперва работал охранником в салоне. Работа не пыльная, устраивала. Но как-то вдруг совпало, что приехал постоянный клиент, а все 3 красивые девочки не смогли выйти - одна заболела, у другой экзамены. Клиент на взводе, ситуация сперва накаляется, а потом, смотрю, притих и о чём-то с мамкой шепчется. Тут мамка ко мне подходит и говорит, что так и так, это твой шанс, клиент на тебя запал - вкатывайся. Ну, выбора особо не было, вот так и вкатился, зарабатываю теперь х2 от прошлой зарплаты.
Аноним 15/11/20 Вск 20:33:13 1857019338
Поясните плз про GPL

Допустим, я беру программу под лицензией gpl v3.

Я добавляю в неё код, который делает запросы на мой сервер, выполняет действия, возвращает результат.

Затем я заливаю мой мод в гугл плэй и продаю по 100 рублей.

Лицензия требует, чтобы любой желающий мог получить исходный код. По запросу я должен буду предоставить клиентскую часть или серверную тоже?
Аноним 15/11/20 Вск 23:48:38 1857178339
>>1857019

Смотря для какой части ты использовал GPL исходы. Если для серверной - то нет, если для клиентской то да.
Аноним 16/11/20 Пнд 12:12:04 1857523340
image.png 78Кб, 1071x898
1071x898
>>1856834
Вот так? Не работает энивей
Он же его видит сам, зачем импортировать
Хелп плиз, очень хочется тему interoperability разобрать
Аноним 16/11/20 Пнд 12:17:23 1857527341
image.png 77Кб, 1053x887
1053x887
>>1857523
такой импорт тоже не работает
Аноним 16/11/20 Пнд 13:02:47 1857556342
image.png 93Кб, 1435x803
1435x803
Кароч, он даже запустить этот класс не может
Аноним 16/11/20 Пнд 15:35:11 1857685343
image.png 21Кб, 474x497
474x497
Лан, понял как сделать
Создать в main директорию java, пометить ее как сурцы и перекинуть java-класс туда

Но это получается .kt и .java не могут существовать в одном пакете, печально
Аноним 16/11/20 Пнд 15:51:47 1857694344
>>1857685
Жаба и котлин прекрасно могут работать вместе, в одной пекедже. Нахрена ты отдельную папку под котлиновские классы создал? Все проекты на жаба + котлине или чистом котлине юзают дефолтную папку java.
Аноним 16/11/20 Пнд 15:55:09 1857698345
>>1857685
>>1857685
Просто создай проект через менюху и не пытаясь сделать раздельные 2 src папки под жаба и котлин классы, создай в дефолтной папке жабовский и котлиновский класс и увидишь что они прекрасно работают вместе.
Аноним 16/11/20 Пнд 16:19:47 1857717346
>>1857694
>>1857698
Идея щас автоматом создает эту kotlin-папку если чо
Аноним 16/11/20 Пнд 16:28:42 1857726347
>>1857717
За идею не скажу, а андроид студия не создает. Зачем ебаться с андроидом в идее?
Аноним 16/11/20 Пнд 16:40:44 1857741348
>>1857726
Я чисто по котлину пока
Аноним 16/11/20 Пнд 16:47:57 1857744349
>>1857741
Ну так если тебе чисто в языке покопаться, зачем извращаться с созданием андроид проекта?
Аноним 16/11/20 Пнд 18:17:07 1857806350
image.png 25Кб, 960x300
960x300
Аноны, вопрос по архитектуре.

У меня есть такой поток данных:

Data source -> ViewModel -> View

Но у меня много случаев, когда данные из Data Source мне нужно "дополнить" данными, которые можно получить только из Context.
Например, из Data Source мне прибывает строка, но мне нужно подянуть шаблон из R.string.XXX и сформировать другую строку.

Может ли Data Source иметь зависимость на Context?
Или как можно еще ПРАВОСЛАВНО, не нарушая MVVM решить этот вопрос?
Аноним 16/11/20 Пнд 21:22:39 1857957351
>>1857806
Имхо когда DataSource занимается обработкой данных и чет мутит с R.strings - бред. Если это DataSource - то он должен отдать данные, а обрабатывать их уже следует ниже, в каком-то слое бизнес-логики, в нашем случае вместо него VM. Для VM это уже вполне норма, у AndroidViewModel даже собственный контекст есть для этого.
Аноним 16/11/20 Пнд 21:31:30 1857968352
Двач, такой вопрос, есть у меня работа, которая крутится в AsyncTask и постоянно надо отправлять данные на сервер, использую для работы OkHttp, я так понимаю мне в AsyncTask еще один AsyncTask лепить?
Аноним 16/11/20 Пнд 21:35:10 1857970353
>>1857968
AsyncTask в конце 2020 юзать немного странно. Зачем заворачивать во 2-й асинктаск?! И как часто данные ты шлешь?
Аноним 16/11/20 Пнд 21:41:02 1857974354
>>1857970
периодически может раз в 5 минут один пост запрос, а иногда и штук 40 в течении 10 минут (но это редко), а что мне надо использовать?
Аноним 16/11/20 Пнд 21:50:21 1857988355
>>1857974
Ну тут много вариантов, в зависимости от многих факторов...

Например тебе это нужно делать только когда приложуха запущенна или скажем в бэкграунде тоже?

Сейчас я так понимаю ты юзаешь что-то вроде postDealayed ?

Вообще, первое что приходит на ум - JobScheduler api, почитай про него.
Аноним 16/11/20 Пнд 22:01:53 1857995356
Как переключиться на другое активити, чтобы нельзя было вернуться по кнопке назад?
Аноним 16/11/20 Пнд 22:03:30 1857996357
У меня такой реквест: посоветуйте материал где максимально доступно пояснят за новомодную асинхронщину - корутины, suspend методы и т.д.
Лучше на русском (сложные вещи все таки лучше воспринимаю на родном), но инглиш тоже пойдет.

Прикол в том что последний раз чем-то похожим я занимался еще на чистой жабе, с коллбэками, тредами, AsyncTaskами и ExecutorServicами.
Там как-то все более-менее было понятно, вот тебе тред с методом run(), вот тебе монитор с wait/notify sets и пара более тонких моментов по типу volatile.

А сейчас в соло пишу одну приложуху, на котлине, там я почти закончил UI и буду плавно переходить к логике, где все вышеперечисленное понадобится. Хочу сделать максимально красиво, но пока с 1-й попытки осмыслить новые для меня вещи до конца не вышло, в голове слегка каша.
Аноним 16/11/20 Пнд 22:05:45 1858000358
Аноним 16/11/20 Пнд 22:27:48 1858005359
О бля, господа, поясните, это пидарасы в андроид, или пидарасв в приложениях в последние пару лет начали делать так, что даже если в телефоне ищё целый гиг свободной оперативки, приложения всё равно блять как бы закрываются и загружаются вновь, стоит выйти из него на 5 секунд?

Проблемма(а эти пидарасы наверное называют это фичей) точно програмная, а не от железа, недостатка памяти и т.д.
Аноним 16/11/20 Пнд 22:28:55 1858006360
>>1857988
у меня по работает в фоне, скачивает файлы, периодически ей надо на сервер отправлять данные о том, что скачано, что нет, GUI тут практически не нужен, работать она должна всегда. Вот для каких целей. Сейчас я как раз ее и пишу и использую библиотеку OkHTTP т.к. она везде вроде. RxJava это из моей оперы или нет?
Аноним 16/11/20 Пнд 22:42:25 1858012361
>>1858005
Почти наверняка это делает ось, а не приложения. Можешь подшаманить настройки энергосбережения и прочего для работы в бекграунде нужных приложений, чтоб ос в этом плане была менее агрессивна.
Аноним 16/11/20 Пнд 22:52:51 1858017362
>>1858012
А можно вообще это вырубить нахуй?
Помню у меня старенький тел с 2 гб оперативки держал постоянно открытыми кучу приложений, и лаги начинались только когда загрузка оперативы достигала 98% лол. И то, небольшие лаги, а не закрывание приложений, п новые приложения просто не открывались. Я только сейчас понимаю насколько охуенная это была стабильность работы, сейчас на андроиде невозможно такое даже представить, а раньше это воспринималось как что-то обычное, типа ну да, так оно и должно работать, а как иначе? Пиздец как испоганили андроид свж мрази.

А сейчас с 55% занято и они закрываются нахуй, (при учёте что ебаная ось сразу отжирает почти 50%, лол), ну т.е. 2 приложение начинают закрываться, если из одного перейти в другое на пару сек.
Аноним 16/11/20 Пнд 22:56:44 1858018363
>>1858017
Гугли как делать это конкретно на твоей оболочке. Можешь еще попробовать Лимит фоновых процессов повысить в настройках разработчиков.
Аноним 16/11/20 Пнд 23:00:38 1858019364
>>1858018
А как вообще запрос поисковый об этом должен звучать?
Как отключить лимит фоновых процессов /оболочканэйм/?
Или лимит фоновых процессов это другое но тоже может помочь?
Аноним 16/11/20 Пнд 23:59:45 1858045365
>>1857806
Делай маппинг данных в отдельном классе, который имеет доступ к Контексту, а оттуда передавай в VM. Это наиболее правильный подход, который позволяет тебе отказаться от использования контекста внутри VM.
>Может ли Data Source иметь зависимость на Context?
Не может. Во-первых, он должен зависеть только от API, предоставляющего данные, т.е. иных факторов, которые могут влиять на его работоспособность, быть не должно. Во-вторых, таких источников может быть много, из чего следует, что каждый из них должен быть изолирован и, соответственно, не должен влиять на работоспособность иных источников данных/модулей.
>>1857968
Тебе нужно реализовать Observer. Можешь сделать это и на асинктасках, но с RxJava или LiveData сделать это проще.
Аноним 17/11/20 Втр 09:28:00 1858232366
Аноны, только вкатываюсь в Андроид, можно сделать так что одно приложение например загрузает картики в папку (скачивая с сервера), а другое приложение эти картинки отображает? Не хочу делать одно большое приложение, хочется сделать как-бы два независимых.
Аноним 17/11/20 Втр 09:33:36 1858234367
Аноним 17/11/20 Втр 09:50:41 1858243368
>>1822749
Вот из-за первых двух пунктов мне пришлось бросить на 75% готовый проект и переписывать его на жабе пиздос
Аноним 17/11/20 Втр 10:58:23 1858271369
>>1857957

Согласен, но ведь ViewModel тоже не должен зависеть от контекста по канону?
AndroidViewModel я так понимаю канону не следует
Аноним 17/11/20 Втр 10:59:56 1858272370
image.png 284Кб, 604x604
604x604
Аноним 17/11/20 Втр 11:58:59 1858299371
>>1858234
А так вообще делают? Я подобную схему реализовал на линуксе, получилось удобно, два модуля независимых, удобней отлаживать и система стабильней вышла из-за быстрой локализации ошибок. Хорошо, а как мне тогда по механизму межпроцессовой связи обмениваться? На си++ у нас все модули обменивались данными через сокеты. Меня больше интересует вопрос, правильная ли это архитектура(допустимая) или необходимо делать монолит.
Аноним 17/11/20 Втр 12:00:25 1858301372
>>1858271
Ну как тебе сказать... Правильнее, как писал анон выше вынести это в отдельный класс, т.к например в юниттестах ты легко его замокаешь и сможешь спокойно тестить эту VM, а в ситуации когда она напрямую завязана на контекст все будет несколько сложнее.

Но при этом с тестами редко кто заморачивается, да и учитывая что сделали андроид вм с вшитым апп контекстом - видимо в гугле не считают зазорным зависеть от него.
Аноним 17/11/20 Втр 16:55:00 1858507373
>>1858299
В твоем случае, я бы смотрел на ContentProviders и все что рядом. Там есть полезные для таких кейсов штуки.

Также, я бы глянул на SAF в том числе.
Аноним 18/11/20 Срд 00:23:42 1859110374
>>1858232
> хочется сделать как-бы два независимых
Нахуя?
Аноним 18/11/20 Срд 14:10:38 1859333375
>>1859110
быстрей отладка, если вдруг падать будет.
Аноним 18/11/20 Срд 15:05:03 1859358376
>>1859333
1. Раз ты так уверенно об этом говоришь, у тебя наверное есть какая-то статистика, насколько это "быстрее"?
2. Как поддержка и разработка двух независимых приложений может занимать меньше времени, чем поддержка и разработка двух независимых gradle модулей, из которых будет состоять тобою так называемый "монолит"?
Аноним 18/11/20 Срд 18:49:42 1859495377
Ionic+Vue.js ваще есть смысл изучать?
Аноним 18/11/20 Срд 20:59:14 1859604378
Аноним 18/11/20 Срд 21:27:35 1859641379
есть ли тут fullstack-овцы архаровцы, способные и под ведроид запилить и бек накидать?
Аноним 18/11/20 Срд 22:16:18 1859692380
>>1859641
А что тебя интересует? Пишу на Спринге, когда нужен самопальный API/бдюзаю mongo, но лень нет необходимости/возможности подключать сервисы.
Аноним 18/11/20 Срд 22:51:41 1859742381
>>1859692
интересует, что бы мне такого заюзать из технологий, чтобы без сильного напряга сделать простую апи для приложения
Где хостишься? почему не юзаешь firebase или aws amplify?
Аноним 19/11/20 Чтв 00:12:48 1859795382
>>1859742
Отталкивайся от того, что знаешь, либо ищи и пробуй разные решения. Меня полностью устраивает Спринг, сложностей с ним не возникает. Раньше писал на Джаве, сейчас всё пишется на Котлине.
>Где хостишься?
Не было такой ситуации, чтобы было недостаточно локалхоста. Поведение сервера можно имитировать, но такая необходимость бывает редко.
>firebase
Зависит от задачи. Юзаю, если нужно. Иногда дольше подключать его к проекту, чем написать то, что нужно, самостоятельно.
Забыл, ещё на Джанго пару раз писал API. Пайчарм запускается быстрее Идеи. Шучу, просто люблю писать на Питоне. Если знаешь его - юзай, советую.
Аноним 19/11/20 Чтв 01:02:27 1859833383
>>1858232
>>1858299
>>1859333
Дружище, ты собрался делить не приложение, а его модули слои, потому что работа с данными не зависит от их отображения в том смысле, что изменение данных в директории - сайд-эффект главной задачей является отображение данных, а не изменение.
Если ты будешь придерживаться принципа разделения ответственности единственной, никаких проблем с отладкой у тебя не возникнет, более того, правильно построенная структура сделает её эффективнее. Мобильные приложения монолитны по своей сути из-за платформенных особенностей и от этого никуда не деться. Другое дело, если ты хочешь создать несколько приложений, которые будут взаимодействовать друг с другом, будучи независимыми друг от друга, имея лишь общий источник данных, общие сервисы та же аутентификация, либо что-то ещё. Но это не столько об архитектуре приложений, сколько о сервис-ориентированной продуктовой политике.
>удобней отлаживать
>быстрой локализации ошибок
Есть два простых правила:
1) Архитектура должна быть такой, чтобы вносимые изменения могли вызвать потенциальную ошибку только в месте их внесения.
2) Увеличение сложности не должно быть причиной увеличения количества ошибок.
Аноним 19/11/20 Чтв 15:13:48 1860137384
image.png 31Кб, 607x272
607x272
сап
чому студия не видит async, launch и тд из корутин? видит только через GlobalScope.async

заваисимость implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9'
Аноним 19/11/20 Чтв 15:57:43 1860183385
>>1860137
Перейди в функцию launch и посмотри на ее сигнатуру
Аноним 19/11/20 Чтв 23:02:45 1860523386
>>1822731 (OP)
Андроидоны чат не читал сразу писал.

В общем проблема
1. Я php макака - но это не самое страшное
2. Нужно приложение просто запускает через внутренний браузер страничку на сайте (онлайн кабинет) так чтобы при входе автоматом подставлялись логин и пароль как в хроме (при успешном входе предлагает запомнить).

Скачал эту вашу Андроид студию (эмулятор сразу же не запустился на процессоре AMD, но ладно на галере интел - запустился)

+ В манифесте разрешил доступ в интернет
+ Заменил хеловорд TextView на WebView
+ Разрешил выполнение ДжаваСкрипт и еще кучу всего
Все круто, работает.

Но заказчик говори все норм, но без автозаполнения, как в хроме, полей для авторизации (телефон + пароль)
ему это не подходит

я же написал
wv.getSettings().setSaveFormData(true);
wv.getSettings().setSavePassword(true);
и оно не работет

Вся портянка MainActivity.java

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

WebView wv;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

wv = (WebView)findViewById(R.id.webView);
WebSettings settings = wv.getSettings();
wv.getSettings().setJavaScriptEnabled(true);
wv.getSettings().setDomStorageEnabled(true);
wv.getSettings().setLoadWithOverviewMode(true);
wv.getSettings().setUseWideViewPort(true);
wv.getSettings().setBuiltInZoomControls(true);
wv.getSettings().setDisplayZoomControls(false);
wv.getSettings().setSupportZoom(true);
wv.getSettings().setDefaultTextEncodingName("utf-8");
wv.getSettings().setSaveFormData(true);
wv.getSettings().setSavePassword(true);

wv.loadUrl("https://site.name");
wv.setWebViewClient(new WebViewClient());
}

Выручайте, разве это сложно сделть!
Кто поможет от души ресепект и уважение!
В принципе могу и на поход в МакДак или Бургергинг переслать несколько билетов Банка России переслеть

Спасите плиз!



Аноним 19/11/20 Чтв 23:41:16 1860547387
Мужики, есть один джавист(я), 1.5 года, со стандартным энтерпрайз стеком, заебавшим проектом и желанием попробовать мобилки.
Навскидку, сколько времени мне потребуется на минимальный вкат в платформу, чтобы получить оффер от косаря долларов? Пригодятся ли мне скилы написания тех же микросервисов? И вообще стоит ли или у вас свое болото и головная боль?
Аноним 20/11/20 Птн 01:16:12 1860635388
>>1860547
Почитай шапку и сам тред, чекни вакансии и пройди по стеку, чтобы прикинуть соотношение лёгких и сложных для тебя вещей. Так и нарисуется примерный флоу и требуемое время.
Я сам имел знания энтерпрайз Джавы(в числе других). На интересе довольно быстро освоил всё, что было нужно, но точное время не скажу, сам процесс довольно размыт.
К неким отличительным чертам можно отнести архитектуру(проектирование, принципы и паттерны), знание sdk, знание железа понимание взаимодействия sdk и железа, знание и понимание распространенных инструментов(с точки зрения их сравнения и применения, т.к. стек, к счастью, довольно неоднородный), ui, гайдлайны и т.д.
>микросервисов
Про это был ответ выше.
>стоит ли
Решать тебе, не благодари. :)
>свое болото и головная боль
Смотря чем заниматься и в каком темпе. Если сидишь в продуктовой конторе джуном, твой рабочий день будет мало чем отличаться от того же энтерпрайза. Грубо говоря, к твоим задачам добавится валяние в ui. В любом случае, если хочется чего-то интересного, то надо влетать в амбициозные проекты, имея опыт и знания. надо признать, что такая возможность, как минимум, есть
Иными словами, есть куда грести, что не может не радовать.
Аноним 20/11/20 Птн 02:52:22 1860668389
>>1845639
Это не вы ли приложуху запилили для знакомств по мемам? Где одни и те же мемы должны понравиться и парню и девушке.
Аноним 20/11/20 Птн 04:22:45 1860704390
слушьте, а хром браузер каждую открытую страницу держит как отдельно открытое приложение?
ну понятно что пользователю показывается что только один хром открыт, но там в системе скрыто от глаз пользователя это как в реале реализовано?
Аноним 20/11/20 Птн 10:32:59 1860816391
>>1860523
Посоны всем спасибо кто принял участие в моей судьбе.
С утра сел разобрался.
Там рили кода три строчки
Заказчик кипятком писает от того что я на андроиде написал ярлык
Хочет в Гугл Плей выложить
Как я понял мне нужно заплатить Среге Брину 25$ чтобы он мне разрешил это делать.
Скажите пожалуйста как обстоит процесс выкладывания приложения в Гугл плей на пальцах?
Аноним 20/11/20 Птн 13:15:58 1860959392
Для нуля, что лучше - изучать джаву или реакт нейтив для написакния под андроид?
Мне кажется второй путь быстрее и попроще.
Аноним 20/11/20 Птн 13:29:40 1860970393
>>1860959
Жабу всё равно учить придётся, основная масса библиотек используется только ею
Аноним 20/11/20 Птн 15:15:49 1861086394
Что надо знать джуну? Понимаю что для кажой компании надо что-то свое, но какой нибудь минимум я думаю у всех одинаковый.
Аноним 20/11/20 Птн 18:19:55 1861255395
>>1861086
у хайди хоу был недавно неплохой вебинар на эту тему как раз
шарит чувак!
Аноним 20/11/20 Птн 18:43:23 1861276396
>>1861255
Это который "язык програмирования за 1 час" ?
Аноним 20/11/20 Птн 22:39:34 1861484397
>>1861276
Да-да, походу тот самый от которого я отписался, когда увидел, как это дебил делает Web-View приложения с описанием: "КЛУТОЕ АНДЛОЙД ПЛИЛОЖЕНИЕ ЗА 5 МИНУТ"
Аноним 21/11/20 Суб 04:31:11 1861610398
Аноним 21/11/20 Суб 15:56:17 1861952399
>>1861086
Ну на мой взгляд так:

Инглиш B1.

Хотя бы основы алгоритмов, понимание что такое сложность по времени/памяти, сложности самых попсовых алгоритмов и операций с разными структурами данных (ну и коллекций, которые их имплентируют)

Хорошо знать языки (котлин однозначно, жабу желательно).

Понимать хоть в общем чертах как работает веб, HTTP протокол, хотя бы понимать что еще за протоколы кроме хттп есть и зачем они нужны (вебсокеты как минимум).

Архитектура, куда ж без нее. В общих чертах clean, солид, паттерны (особо внимание ходовым MVP/MVVM).

Тулзовины типо гита, той же андроид студии, джиры, постмена. Для крупных галер понимание того что такое скрам/аджайл/канбан.

Ну и андроид сдк, тут конечно много всего. Для джуна самые ходовые вопросы по компонентам их их лайфсайклу. Особое внимание фрагментам/активити, там лайфсайкл не слишком тривиален, много тонкостей и различных кейсов.

Для задрочки собесов очень рекомендую это https://itsobes.ru/AndroidSobes/
Аноним 21/11/20 Суб 16:05:05 1861968400
>>1861952
По андроид сдк отдельный пост писать нужно, впадлу.

Еще из того что забыл - самые попсовые либы, (нетворкинг, загрузка изображений. Отдельно стоит пощупать rx и что-то связанное с dependency injection. Для некоторых контор еще могут быть актуальны тесты, т.е jUnit+Mockito как минимум для юнит тестов, и очень редко (но возможны) тесты на espresso / roboelectric.
Аноним 21/11/20 Суб 18:43:32 1862148401
>>1861952
А реально джуну в иностранную компанию удаленно устроиться? Типа Internship или как это называется, сначала стажировка, потом работа
Аноним 21/11/20 Суб 18:43:48 1862150402
Аноним 21/11/20 Суб 19:15:36 1862171403
>>1862148
Думаю да, у меня топ-галеры перевели все это в онлайн.
Аноним 21/11/20 Суб 21:10:41 1862233404
image.png 23Кб, 708x185
708x185
>>1860137
помогите пожалуйста, а
все перерыл. могу юзать функции корутинов только через GlobalScope, нормально не получается, идея просто не видит

что значит хрень на пике? разве я не могу юзать async, launch и прочее без recieverа?
Аноним 21/11/20 Суб 22:51:19 1862312405
>>1862233
Ты долбаеб. У тебя на скрине написано, почему это происходит. Эти функции можно вызывать только на инстансе CoroutineScope, чем и является GlobalScope.
Аноним 21/11/20 Суб 23:20:15 1862335406
>>1862312
сам еблан блять, люди как-то без скопа вызывают, я видел
Аноним 22/11/20 Вск 02:39:24 1862453407
>>1860959
Если джаву соберёшься, могу курс посоветовать. Сам потихоньку допрохожу его, рассматриваю опцию в андроид перекатываться, но пока ещё в сомнениях страдаю.
Аноним 22/11/20 Вск 13:27:27 1862692408
>>1862453
А зачем ты джаву учишь если не для андроида? У нее есть еще какие-то применения кроме энтерпрайза?
Аноним 22/11/20 Вск 23:20:53 1863229409
>>1862692
Изначально для автоматизации тестирования задумывалось. Ну и просто как первый язык программирования.
Аноним 23/11/20 Пнд 11:32:20 1863526410
>>1861952
Эх, а я джаву замэйнил. Ну хотя котлин от джавы, так что думаю не страшно. Спасибо
Аноним 23/11/20 Пнд 16:26:19 1863779411
image.png 85Кб, 275x183
275x183
Поясните за логинг ошибок, аноны.

У меня не было проблем с ошибками и их логированием до того как я перелопатил все на MVVM и LiveModel повсеместно, ошибки я видел в LogCat в консольке студии.

Щас я вижу ровно хуй и просто падающее приложение.
Убирал все фильтры по приложениям, ставил 'verbose' логгинг, не прилетает НИЧЕГО вообще.

Вангую что факап у меня в логике observer'ов, но как стектрейсы узреть?
Аноним 23/11/20 Пнд 17:23:02 1863838412
>>1863779
Мб релиз билд с отключенными логами не заметил?
Аноним 24/11/20 Втр 18:09:43 1864690413
test1.jpg 370Кб, 1080x1920
1080x1920
test2.jpg 365Кб, 1080x1920
1080x1920
>>1822731 (OP)
Всем привет!
Хочу сделать для приложения некие настройки.
Нов настройках будет параметр "имя", и количество этих имен будет определяться динамически
Знаю, как перетаскивать настройки посредством sharedPreferences, когда мы знаем количество этих самых переменных, которые перетаскиваем
А как сделать, если ты не знаешь? Ну, если так, как на картинке: несколько полей, и есть кнопка, при нажатии на которую открывается дополнительное поле.
Все, что я придумал: сделать несколкьо полей заранее с видимостью visible=gone, при нажатии на кнопку открывать еще одно поле, и добавить руками проверку, чтобы пустое значение не обрабатывалось в самой программе
Правда, не до конца ясно, как удалять...
Хотя по аналогии можно сделать

Но это звучит как-то костыльно, да и вообще не очень-то филигранно. Подскажите, есть ли какое-то решение более типовое, что ли?
Но это как-то не очень научно звучит
Аноним 24/11/20 Втр 18:45:14 1864718414
>>1863838

Билд все тот же - девелоперский, это я точно не менял. Да и трейсы выкинутые, например, в треде onCreateView фрагмента - отображаются в логах
Аноним 24/11/20 Втр 19:19:23 1864734415
>>1864690
нихуя не понял, что ты хочешь сделать, если тебе просто нужно динамическое количество элементов в списке, то заверни все это в recyclerView с разными типами элементов
Аноним 24/11/20 Втр 21:00:27 1864804416
Можно ли как-то интегрировать юнити внутрь андроидной приложухи?
Ну т.е. допустим у меня есь приложуха, на одной из страниц которой я хочу отображать 3д модель, крутить ее вертеть, приближать и т.д. Как это проще сделать?
Аноним 24/11/20 Втр 21:40:03 1864835417
>>1864804
> Можно ли как-то интегрировать юнити внутрь андроидной приложухи?
Гугли от обратного, можно ли показывать обычные экраны в проекте юнити и заниматься обычной андроид разработкой, а не только бриджами обмазываться. В теории очень легко, т.к. юнити это просто нейтив активити, которую ты будешь запускать по кнопке. Когда я трогал юнити в последний раз, там это было как то не слишком удобно, особенно подлючение жарников плей сервисов, но там уже 1000 раз все могло поменятся.
Аноним 24/11/20 Втр 21:55:23 1864854418
>>1864804
LibGDX, либо OpenGL. Первый вариант проще, но избыточен, второй чуть сложнее, но лучше. Можешь поискать готовые либы-вьюверы на OpenGL. Ещё вариант - Vulkan, но там либо ndk, либо ищи сахарную прокладку.
Аноним 24/11/20 Втр 22:13:36 1864871419
>>1864690
>когда мы знаем количество этих самых переменных, которые перетаскиваем
>А как сделать, если ты не знаешь?
>сделать несколкьо полей заранее с видимостью visible=gone
>при нажатии на кнопку открывать еще одно поле
У тебя есть пустая структура данных (либо имеющая дефолтное количество айтемов), куда добавляется элемент(модель), которая обновляет ui-контейнер и зависимые значения, и кнопка, которая является отдельным ui-элементом. Единственное, что тебе нужно учесть - максимальное количество элементов. Ты не можешь знать количество элементов, но можешь определить предел и отталкиваться от этого, подстраивая поведение зависимых элементов под свойства структуры.
Аноним 25/11/20 Срд 13:20:00 1865318420
>>1864835
>можно ли показывать обычные экраны в проекте юнити
Гм, а это вообще законно - делать приложуху (не игру) на юнити?
Аноним 25/11/20 Срд 14:08:19 1865367421
>>1865318
Насчёт законности не скажу, но... Ты сейчас поржешь.

В общем, слышал вот такую вот историю, где-то года 3-4 назад.

В общем, одному городу нужна была аппка для трекинга маршруток, троллейбусов, автобусов и т.д. Ну ты такой, как потенциальный пассажир не, не тот, про которого говорил зеля можешь открыть это приложение, увидеть там карту, себя на карте и местоположение общественного транспорта. Ну и, естественно, приблизительное количество времени прибытия на ту остановку, где ты стоишь. Ну, казалось бы, бери Android SDK + <какой-нибудь сдк какого-либо сервиса для карт> да педаль себе на здоровье. НО НЕТ! Android SDK, естественно, не взяли. А заебашили всю эту кухню... да, на Unity)))
Аноним 25/11/20 Срд 15:03:18 1865399422
>>1865367
Может так мне и сделать - это учебный проект, который потом отправится в утиль и никто о нем не вспомнит.
Главное чтобы не лагало на презентации...
Аноним 25/11/20 Срд 16:13:06 1865449423
>>1822731 (OP)
Всем доброго дня
Есть такая приблуда, называется jsoup
Используется для парсинга HTML - страниц
Мне необходимо пропарсить простенькую страничку
На уровне есть ли в таблице определенное значение, если есть, то вывести всю строку (все значения в этой строке, включая это самое значение.
doc = Jsoup.connect("http://site.ru/table/").get() - этим я как бы загружаю документр, чтобы дальше его распарсить
А как дальше парсить?
К примеру хочу поискать, есть ли на странице nameone
File input = new File("nemaone");
Document doc = Jsoup.parse(input, "UTF-8", "http://site.ru/table/");

Что он мне вернет? Это будет номер позиции, и по номеру позиции я могу запарсить первоначальный файл и следующие элементы?
Это же вообще что-то простое, на питоне подобную штуку (для конкретного сайта) я написал за пару минут. Это же не ракеты строить.
В общем, ежели у кого есть рабочий вариант - просьба поделиться / указать, где завтык
Аноним 25/11/20 Срд 18:26:14 1865566424
Аноним 25/11/20 Срд 21:08:07 1865680425
Пацаны, есть ли сейчас шансы на заработок со своих приложух? Кто-нибудь этим занимается? В 12 году один анон платил по 100 баксов только за идею для мобильных приложений.
Аноним 25/11/20 Срд 22:23:33 1865726426
>>1865680
Если нет денег на раскрутку то нет, никто твоё приложение просто не увидит.
Аноним 26/11/20 Чтв 12:18:13 1866018427
У кого-нибудь есть курсы стартандроида? Можете слить? В интернете только 2 из платных
Аноним 26/11/20 Чтв 14:38:37 1866097428
>>1866018
на шаревуде смотрел?
Аноним 26/11/20 Чтв 14:56:08 1866110429
>>1866097
>в интернете только 2 из платных
Dagger и производительность
Аноним 26/11/20 Чтв 15:13:40 1866123430
Аноны, хочу сделать простую штуку с гредлом, не могу нагуглить решение.

Сейчас у меня гредл публикует джарку1

Есть executable jar файл, который берет на вход путь к джарке и сует в указанный путь видоизмененную джарку

Нужно чтобы гредл запустил этот executable jar файл передав ему джарку1, и опубликовал полученную видоизмененную джарку

Это возможно вообще?
Аноним 26/11/20 Чтв 17:06:28 1866197431
>>>1822731
>Вот примерный флоу, которому я бы следовал, если бы учился >сейчас. Начал бы сразу с алгоритмов, если честно.
Зачем нужны алгоритмы? Были в вузе два семестра, сложилось впечатление, что если и придется что-то использовать, то только готовые библиотеки
Аноним 26/11/20 Чтв 18:20:49 1866263432
>>1866018
А что, хорошие курсы? А то я себе ищу что-то для начала.
Аноним 26/11/20 Чтв 18:42:33 1866295433
>>1866263
Вот как он тебе может ответить, если он даже их не проходил?
Аноним 27/11/20 Птн 02:50:49 1866639434
>>1866295
Может, ему пять человек знакомых погромистов их порекомендовали? Нечего сказать - не пизди там.
Аноним 27/11/20 Птн 12:32:17 1866787435
Успешные истории вката за последний год есть?
Аноним 27/11/20 Птн 12:37:46 1866788436
А чего гейос тред подох? Все вкатились и выключили за собой свет?
Аноним 27/11/20 Птн 15:02:44 1866930437
>>1866788
В iOS треде лорды зарабатывают деньги, а не пиздят. Да и порог входа в iOS за счет покупки мака и девайсов высокий.
Аноним 27/11/20 Птн 15:04:57 1866933438
>>1866197
>Зачем нужны алгоритмы?
В основе каждой готовой реализации лежит тот или иной алгоритм. У одного алгоритма может быть несколько реализаций, которые менее или более эффективны для решения конкретной задачи. Смысл знания алгоритмов заключается в способности применить наиболее эффективную реализацию, либо написать собственную, если она превосходит готовую. Можно сказать, что это вопрос выбора правильного инструмента. Кроме того, я вижу в этом и иной смысл - алгоритмический подход применим к разработке в целом, потому что анализ и применение наиболее эффективных решений в процессе разработки позволяет оптимизировать время, затрачиваемое на создание продукта, если сравнивать с написанием "привычного" библиотечного кода и его последующей оптимизацией под задачи. Такой вот получается JIT-подход, который отлично сочетается с TDD. для проектирования это тоже плюс
Аноним 27/11/20 Птн 15:20:14 1866942439
>>1866263
Читай книги и пиши код, открывая документацию, когда что-то непонятно. От курсов ты не только не получишь такой отдачи, но и можешь навредить себе. Ты получишь поверхностные знания, но для тебя это будет неочевидно, из-за чего будет казаться, что ты понимаешь материал, но на деле не сумеешь решить даже типовую задачу. и ошибочно подумаешь, что это проблема конкретного курса - будешь искать другой и тратить ещё больше времени впустую
Информативность и полезность курсов крайне мала. Совет я дал, решать тебе.
Аноним 27/11/20 Птн 15:49:57 1866960440
>>1866197
> Зачем нужны алгоритмы?
чтобы проходить собесы в Яндекс
Аноним 27/11/20 Птн 16:40:40 1867005441
>>1866930
да хуй знает
щас даже в куа-чатах у половины макбуки
и куча народа "послекурсов", готовые работать буквально за еду
Аноним 27/11/20 Птн 17:50:29 1867080442
>>1866930
И приложения сложнее писать на ИОС?
Аноним 27/11/20 Птн 19:25:28 1867166443
kUctNtEFRBI.jpg 104Кб, 708x1000
708x1000
Салам всем пацанам и фембоям конечно же
Нужно с периодичностью в час рассылать по примерно 100 группам в тг свою рекламу
заебало вручную каждый день через таймер это делать, как сделать бота который просто будет слать во все свои группы по таймеру посты?
Аноним 27/11/20 Птн 19:27:08 1867169444
>>1867005
Это не важно, в любом случае вкатунов гораздо меньше чем в веб или этот же Android.
Аноним 28/11/20 Суб 17:23:07 1867788445
>>1867169
Только из-за дороговизны техники?
Аноним 28/11/20 Суб 20:03:41 1867860446
>>1867080
Такой же самый уровень сложности +/- да, на ведре есть места сложнее, но такое, незначительно. Такие же приколы встречаются в СДК. Такие же "особенности" ИДЕ, хуй-ДЕ и других инструментов. Платят - тоже +/- так же как и везде - как договоришься, лол. Короче, просто iOS-тред сдох и все.
Аноним 28/11/20 Суб 20:21:50 1867871447
>>1867860
Платят больше чем в вебе.
Аноним 28/11/20 Суб 21:23:29 1867917448
>>1867166
Пиши в питона тред, гугли как боты делаются и как юзать апи телеги.
Аноним 28/11/20 Суб 22:47:29 1868013449
Аноны, подскажите, у меня есть главный гуи поток и еще один. Как мне можно из вторичного потока кинуть в главный сообщение, дождаться выполнения некоторых действий в главном, а затем продолжить работу во вторичном. Пока я использую AsyncTask, но там у меня нет никакой возможность поток тормознуть, как вообще между потоками обмениваться данными. Какие темы луркать?
Аноним 29/11/20 Вск 00:58:59 1868163450
>>1867166
Можно без проблем, запросы на апиху с определенным интервалом/в определенное время, ничего сложного. Вопрос в том нахуя это на андроиде делать, ты хочешь именно с мобилки вручную это настраивать все чтоль?
Аноним 29/11/20 Вск 01:03:45 1868166451
>>1868013
Асинктаски прошлый век, смотри корутины. Они на паузу вполне штатно могут становиться, гугли. Насчет юай треда - тут много сходных вариантов, самое простое - Looper.getMainLooper().post -> твои грязные делишки.
Аноним 29/11/20 Вск 01:12:51 1868174452
>>1867860
Как по мне платят слегка больше. Банально потому что айос разрабов немного меньше (порог входа в виде мак девайсов + большая популярность джавы как языка) при +- одинаковом спросе с андроидом. Регулярно вижу ситуации когда на проект достаточно быстро находят андроид разрабов, а айос найти немного большая проблема.

Хотя может как всегда кажется что у соседа баксы зеленее...
Аноним 29/11/20 Вск 01:21:02 1868178453
>>1867005
>щас даже в куа-чатах у половины макбуки

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

С разрабами та же херня - та же андроид студия на маке есть, а вот х-кода на шинде/прыщах как-то не наблюдается. Я вот после 15 лет винды сейчас смотрю в сторону м1 маков. Как только студию и эмулятор завезут - буду брать.

Аноним 29/11/20 Вск 01:37:19 1868190454
>>1868174
Не кажутся, это действительно так. Доходит до того, что на айос берут даже откровенных днищ.
Аноним 29/11/20 Вск 06:25:50 1868226455
>>1868190
если только днищ с парой лет опыта
Аноним 29/11/20 Вск 09:40:01 1868263456
>>1868166
у меня язык Java, а корутины кажется только в kotlin
Аноним 29/11/20 Вск 12:08:32 1868333457
4-1[1].jpg 42Кб, 403x500
403x500
Есть книги или туториалы, чтобы одновременно с нуля и котлин и андроид учить? Джаву уже немного знаю, дочитываю книгу. Почти все книжки по андроиду на джаве, а по котлину отдельные. Только вот такую нашел. Пойдет для таких дел?
Аноним 30/11/20 Пнд 02:31:41 1869039458
Пацаны, кто-то что-то может сказать про видеокурсы Android App Development by Stanford и Udacity: Android Basics?
Аноним 30/11/20 Пнд 04:02:17 1869071459
>>1869039
Год назад они в шапке этого треда были. Почему убрали - я хз.
Аноним 30/11/20 Пнд 13:36:18 1869190460
>>1869039
Udacity норм, в свое время перед тем как вкатиться на джуна проходил по скидосу их курс который nanodegree (Android Basics, насколько я помню, туда входит)
Аноним 30/11/20 Пнд 14:27:31 1869218461
>>1869190
Ну я вот ща включил, какие-то вступительные ролики, ёблами торгуют, но дальше вроде что-то показывают. Хотя сам формат, где такой процент пиздежа и улыбочек, раздражает неимоверно.
Стенфордский ещё не понял, что к чему, но у них уже Котлин, препод озвучил это, а на Юдасити - Джава.
Мне хотелось бы на джаве всё-таки для начала освоиться, но теперь даже не знаю, насколько это оправдано. Я в замешательстве, подскажите.
Аноним 30/11/20 Пнд 16:51:56 1869294462
Блять, пощадите китайские РОМы.
Как сделать нормальную периодическую работу в фоне без фореграунд сервиса/alarm менеджера/шедулера.
Воркменеджер с джетпака не работает адекватно на китайских калах.
Почитал, что с приходом Орео челы с Service мигрировали на JobIntentService, проканает?
Мне нужно чтобы работа работала даже после того как пользователь смахнул приложение, ну и после перезагрузки.
Аноним 01/12/20 Втр 00:13:22 1869657463
Почему у вас не принято использовать один объект для всего стейта приложения? Почему принято привязывать к каждому фрагменту viewModel? Я просто вообще веб бэкенд дев, немного ещё на реакте писал и ожидал, что в андроидах что-то типа redux стора будет и можно будет ещё просто и непринужденно триггеров навесить из любого фрагмента на какое-то значение. Пока решил для всяких сессионных значений использовать shared view model, деля ее между всеми фрагментами, это нормальное решение вообще? Просто выглядит как костыль.
Аноним 01/12/20 Втр 00:26:06 1869667464
>>1869657
>android development
>выглядит как костыль.
Це норма
Аноним 01/12/20 Втр 00:32:38 1869673465
>>1869667
Это как раз таки про веб фронтенд.
Аноним 01/12/20 Втр 14:05:41 1869973466
>>1869657
В кроссплатформе так и делают. Редакс и прочее кажись как раз про это. Никто тебе не мешает это и в андроиде сделать. Конечно один глобальный стейт - очень сомнително, больно здоровенным и сложным выйдет. Хотя я не пробовал.

Кстати например пишу сейчас интернет магаз, на доброй половине экранов есть иконка корзины с бейджом количества товаров в ней (и переходом в корзину по клику). Думаю понятно что я 10-ть раз не буду дублировать эту логику обновления бейджа в каждой вм, а сделаю какой-то ленивый синглтон где будет висеть стейт этой корзины и подписываться на него отовсюду откуда нужно.
Аноним 01/12/20 Втр 17:55:19 1870153467
>>1869973
Синглтон - это антипаттерн.
Аноним 01/12/20 Втр 19:51:08 1870349468
>>1870153
И чем же он плох, кроме клинических случаев с утечкой контекста?
Аноним 01/12/20 Втр 20:39:10 1870387469
>>1870153
Если его внутренний стейт могут изменять из любого места программы, то да, это плохо. Если в его публичных методах есть только получение стейта, то ничего плохого
Аноним 01/12/20 Втр 21:28:00 1870405470
>>1870153
Синглтон - это антипаттерн до тех пор, пока ты его не закроешь интерфейсом чтобы провайдить через конструктор в другие классы.
>>1869657
> Почему у вас не принято использовать один объект для всего стейта приложения
Тяжко заматчить это с активити и фрагментами но легко при использовании чисто вью бейзед навигации.
Аноним 02/12/20 Срд 01:05:48 1870566471
Господа, помогите с простой задачей.
Получить коордиинаты устройства и передать щироту и долготу в две строковых переменных.

Больше мне не надо.
Спасибо.
Аноним 02/12/20 Срд 15:46:07 1870889472
>>1870566
Гуглится в 3 секунды. Основная ебля с пермишенами будет, а не с кординатами.
Аноним 03/12/20 Чтв 10:58:01 1871593473
>>1869294
на китайской параше неполучится никак, если пользователь сам не разрешит,например на сяоми смахивание == force stop и запрещен автозапуск по дефолту, то есть после перезагрузки твои бродкаст ресиверы не сработают и не перезапустят бэкграунд работу
Аноним 03/12/20 Чтв 13:56:55 1871709474
1041767.483xp.jpg 20Кб, 483x352
483x352
>>1822731 (OP)
Сап! Нужно написать два батника.
1 - инсталлит апк , любое переданное ему только одно, даже если в папке их несколько
2 - батник на копирование на девайс переданного файла на внутреннию память
Батники никогда не писал. Если кто-нибудь объяснит, буду признателен.
Аноним 05/12/20 Суб 17:35:38 1873664475
>>1871593
да даже с данными правами работает абы как, мб на китайском говне приложения что с маркета ставят так не выкашивает?
Аноним 06/12/20 Вск 11:48:06 1874095476
К вам сейчас человечек придет, не тролльте его сильно.
Аноним 06/12/20 Вск 13:07:26 1874167477
Аноним 07/12/20 Пнд 16:02:09 1874980478
Аноны, почему при реализации своего метода equals для класса мы в конструкторе передаем параметр как Object, почему для класса Hui не передавать ссылку на другой объект Hui.
Аноним 08/12/20 Втр 00:40:01 1875406479
Хай аноны, я начал делать приложения для заметок(в точности,как на моем ксяоми) и столкнулся с проблемой сохранения вида лейаута после перезагрузки приложения.т.к я динамически создаю кнопки для того,чтобы нажимать на заметки то они пропадают, решил я это сохранением переменной, отвечающей за количество созданных кнопок, в файл,но хотелось бы узнать можно это сделать как то по-другому или же можно вообще как то все сделать иначе, не создавая динамически кнопки?
Аноним 08/12/20 Втр 00:42:35 1875408480
>>1822731 (OP)
Для большей заметности вопроса отвечу Опу. Вопрос выше
Аноним 08/12/20 Втр 02:39:42 1875465481
>>1875406
>я динамически создаю кнопки для того,чтобы нажимать на заметки
О каких кнопках идёт речь? У тебя есть rv с заметками, которые либо открывают detail по клику, либо вытаскивают нижнюю панель действий по лонг клику, в каком месте тут вообще могут быть кнопки? ещё и динамически создаваемые
Аноним 08/12/20 Втр 11:03:13 1875598482
Почему среди работодателей считается, что я должен выложить свое приложение в гугл плей? Какой в этом смысл? Очевидно, что без рекламы оно в лучшем случае наберет 100-1000 загрузок. Кроме того, бывают приложения, которые требуют наличие определенной пользовательской базы (социальная сеть, например). Алсо какая-нибудь крупная компания может спиздить мою идею и я останусь ни с чем когда-то читал, что VODOO так делает; я не по играм, но все же
Аноним 08/12/20 Втр 14:57:51 1875745483
>>1875598
Скорее просто привычка. Сейчас действительно нет смысла выкладывать в гугл плей, с тем же успехом можно просто закачать на яндекс.диск или гугл.драйв апк файл.
Аноним 08/12/20 Втр 16:00:50 1875828484
>>1875598
мне было интересно поиграться, почувствовать себя разрабом с хоть с какой-то юзерской базой, пройти путь от нуля до стора. Это кста поменяло мою жизнь, теперь работаю только на себя, продолжаю выкладывать, уже 7 штук навыкладывал, а всего-то ради резюме однажды залил
Аноним 08/12/20 Втр 17:45:36 1875955485
Насколько сложными должны быть приложения, чтоб показать их работадателю? На джуна.
Аноним 08/12/20 Втр 21:58:56 1876162486
>>1875955
Показать лист данных, закешить в рум. По клику перейти в айтем из списка и показать описание. Без сети загрузить из кеша. Картинки на обоих экранах. Воркменеджер ночью кешит список. Если загрузить не удалось и кеша нет, то показать вменяемый экран что нет сети, а не сраный тост. Обмазать это небольшой стилизацией материал компонентов сверху. В общем то больше нихуя и не надо если мы говорим о джуне, а не джун++++++ ака мидл по цене джуна.
Аноним 09/12/20 Срд 00:06:45 1876234487
>>1876162
> Воркменеджер ночью кешит список
Не понял
Аноним 09/12/20 Срд 15:18:56 1876605488
>>1856530
Dart/Flutter по тестам быстрее React Native.

>Алсо, поясните за sdk - насколько реально писать кроссплатформенно? Например, апи камеры одно для йоус и ведроида или придётся костылить прослойку с разными бэкендами?
Да, так само как в React Native, будет компилится под две платформы.
Аноним 09/12/20 Срд 19:49:55 1876859489
>>1875598
Смотря что за приложение, моё уже набрало 500к без рекламы. Скидывать не буду.
Аноним 09/12/20 Срд 21:23:24 1876922490
>>1876859
Это скорее исключение
Аноним 09/12/20 Срд 22:43:26 1876980491
>>1876922
Знаю с десяток инди диванных рубящих на 1 приложении 3-8 к бачей с 10к инстолами в месяц
Аноним 09/12/20 Срд 23:12:38 1876998492
Аноним 09/12/20 Срд 23:19:26 1877001493
>>1876980
у меня трое знакомых андроид разрабов перекатились на IOS. Вместе на галере сидели, сперва они контору свою организовали, потом перешли на разработку под айфоны, а потом так поперло, что деньги не смогли поделить и теперь у каждого своя контора, двое работают на европу, а один здесь присосался к госконторе, нанял разрабов и пилит им приложуху, гос. конторы не могут платить разрабам под айфон 150, не поймут, а вот платит 5 лямов конторе из 4 человек которые приложение за несколько месяцев делают, пожалуйста.
Аноним 10/12/20 Чтв 15:08:25 1877313494
>>1876998
Ок, сиди на попе ровно дальше))
Аноним 10/12/20 Чтв 15:33:14 1877337495
blr.png 9Кб, 684x133
684x133
Ну и хули теперь делать
-25$
Аноним 10/12/20 Чтв 22:57:04 1877716496
>>1877313
Чел, у меня в данный момент нет цели выложить свой говнокод в гугл плэй и заработать на этом
Аноним 11/12/20 Птн 13:14:13 1877989497
Аноним 11/12/20 Птн 14:01:56 1878045498
>>1874980
>ри реализации своего метода equals для класса мы в конструкторе передаем параметр как Object, почему для класса Hui не передавать ссылку на другой объект Hui.
Потому что сигнатура такая у батиного метода.
Аноним 11/12/20 Птн 15:29:09 1878120499
>>1877337
Как эту хуйню починить?
Или хотя бы деньхи вернуть
Аноним 11/12/20 Птн 22:06:17 1878440500
72331ac8465a5a1[...].png 424Кб, 500x726
500x726
>>1822731 (OP)
Котаны, а как понять - зачем нужен Dagger если нигде его не применял?
Если в двух словах?
Аноним 11/12/20 Птн 23:36:01 1878492501
>>1878440
>Если в двух словах?
Внедрение зависимости
Аноним 12/12/20 Суб 21:53:41 1878949502
>>1878440
>Котаны, а как понять - зачем нужен Dagger если нигде его не применял?

Вынести мозги разрабу избежав реализации хоть капли бизнес логики, всё. Превратить процедуру добавления банального импорта (2 секунды) в несколькоминутное копошение в анотациях и интерфейсах даггера.
Аноним 13/12/20 Вск 14:00:41 1879262503
Котаны. Флаттер норм? ИЛи нативная разработка ван лав?
Аноним 13/12/20 Вск 19:56:46 1879504504
>>1879262
Та такое. Вроде, нормас.
У меня есть знакомый, который пишет на флаттере. Говорит, что зашибись. И работает норм, и писать удобно, и задачи покрывает.
Хотя, слышал от других людей, что не очень: кому-то лагает, а кому-то не нравится то, как выглядит код. А кто-то вообще жалуется на то, что мало плагинов.

В общем, специфический инструмент. Не затычка всем дыркам, но для своих задач гуд. Опять же, классика, нативная разработка, никуда не денется. По крайней мере, сейчас.
Аноним 14/12/20 Пнд 19:08:27 1880456505
>>1822731 (OP)
Всем привет
А есть в треде успешные мастера на все руки, которые сами сделали приложение и успешно (хотя бы относительно) его монетизируют (именно через рекламу)?
Сколько нынче за 1000 просмотров платит адмоб
Или не адмоб?
Аноним 14/12/20 Пнд 19:19:15 1880467506
>>1875828
А как успехи? Ну, выложи (ну или хотя бы расскажи тезисно) итоги этой самой работы на себя
Аноним 15/12/20 Втр 10:20:18 1880948507
>>1880467
что рассказать то? итого в чем?
в плане денех я конечно доволен, правда теперь боюсь, что меня ограбят. Плюс я привык что денег до жопы падает, и очень расстроюсь когда это прекратится
работаю как сыч дома, или не работаю и хуи пинаю. не могу
представить себя работая в офисе
Аноним 15/12/20 Втр 10:38:03 1880954508
>>1880948
Ну, звучит как прохладная история фрилансера 300к/нс из /b/
Расскажи какие-нибудь подробности
Что за приложения
Как монетизируешь?
Сколько за 1000 просмотров сраного баннера получаешь?
Какие-то хитрости как прийти к успеху?
Аноним 15/12/20 Втр 11:14:06 1880969509
2020-12-1511-11[...].png 12Кб, 493x530
493x530
>>1880954
>Что за приложения
так я и сказал, лол
>Как монетизируешь?
реклама + покупки
>Сколько за 1000 просмотров сраного баннера получаешь?
банеры не юзаю почти, в основном видео и интерстишл
хитрость - запилить нужное приложение в нужное время.
но если б знал хитрости, то у меня каждый проект выстреливал бы
Аноним 15/12/20 Втр 13:06:52 1881017510
>>1880969
Хуя, ты успешный )) Грац )

А ты просто вкатился без задней мысли (как писал выше, хотел просто почувствовать себя разработчиком) или у тебя был некий бэкграунд
Аноним 15/12/20 Втр 13:29:30 1881035511
>>1881017
ну я работал в офисе, когда запилил, если ты об этом. Думал как-то резюме украсит, ну и интересно было. работал джуном на галере, никаких знаний особых не было, приложение пустяковое на самом деле
Аноним 15/12/20 Втр 13:51:36 1881052512
>>1881035
Сколько лет потребовалось, чтобы прийти к первым успехам? самое важное спросить и забыл
Аноним 15/12/20 Втр 14:24:50 1881076513
>>1877337
бампану свой вопрос
Аноним 15/12/20 Втр 16:45:02 1881169514
>>1880969
Хорош. С инапов столько же ещё наверное?
Аноним 15/12/20 Втр 16:54:32 1881180515
>>1881052
как начал заниматься прилагами онли - полгода где-то, до первых денег, чтобы на жизнь хватало
>>1881169
с инапов на порядок меньше, аудитория такова, что легче рекламу посмотреть
Аноним 15/12/20 Втр 17:46:17 1881249516
>>1880948
>в плане денех я конечно доволен, правда теперь боюсь, что меня ограбят

Если не будешь выпячивать то маловероятно. На твоем месте я бы открыл счет в норм банке, подальше от СНГ-юрисдикции (насколько я мельком смотрел вполне реально в ЕС открыть счет иностранцу) и выводил бы туда. Хранить дома под матрасом - такая себе идея.

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

Да и вообще, с таким доходом я бы перекатывался в страну 1-го мира (где поменьше бабахнутых мигрантов офк) и жил бы куда спокойней.
Аноним 15/12/20 Втр 18:50:33 1881295517
>>1881180
У меня наоборот. Пока что одна прила на ведре. С инапов где-то 2.5к$ + реклама 350.
Аноним 15/12/20 Втр 18:53:23 1881303518
>>1881249
Это не такой доход, чтобы чего-то или кого-то там ссаться. Знаю людей, который делают 10-20к в месяц на прилах и сидят на ИП патенте(в наших пердях стоит 15к в год, рублей). Сам тоже на нём сижу, но поменьше делаю. В принципе вроде насколько я помню макс. годовой доход на патенте может быть 60 лямов в год, что наш товарищ и близко не делает.
Аноним 15/12/20 Втр 20:09:02 1881379519
>>1881303
А с какого минимального стоит что-то делать?
Я просто слышал, что до 600 тысяч в год можно не париться от слова совсем
Аноним 15/12/20 Втр 21:01:40 1881411520
>>1881379
Ты имеешь ввиду работать в чёрную? Ну где-то до 300 я думаю можно. Хотя щас от года к году налоговая слежка усиливается, так что я бы не стал рисковать и обелился уже от 100.
Аноним 18/12/20 Птн 10:09:09 1883296521
>>1822731 (OP)
Какие тестовые задания обычно дают джунам?
Аноним 18/12/20 Птн 13:46:20 1883424522
>>1880969

Анон, хоть примерно можешь назвать какие-то может быть прошлые, уже неактуальные, но успешные "идеи"? И вообще как можно в одно лицо успеть закодить приложение настолько быстро, чтобы оно во-первых не потеряло актуальность и во-вторых не было сделано уже 10 таких же приложений (если это небольшое приложение), как ты успеваешь?

Я сам пилю одно приложение, очень нишевое и скорее всего заработаю на нем чуть менее чем нихуя, но мне нравится сама предметная область, поэтому продолжаю, хотя для заработка это наверное нихуя не правильно.
Аноним 18/12/20 Птн 18:03:03 1883778523
>>1883296
Требования к джуну везде разные. Если взять среднего джуна, то, скорее всего, дадут задание распарсить json и отобразить данные + учесть заданные требования, остальное вполне покрывается теорией и имеющейся практикой. Хорошим тоном будет предоставление возможности выбора либ и архитектуры, исходя из эффективности и целесообразности.
>>1883424
другой анон
>как можно в одно лицо успеть закодить приложение настолько быстро, чтобы оно во-первых не потеряло актуальность и во-вторых не было сделано уже 10 таких же приложений
Если пилить в ленивом темпе, мне нужна неделя для того, чтобы написать и адаптировать код для релиза первой стабильной версии, при этом код будет достаточно чист, чтобы не было проблем с внедрением новых фич. Если загореться идеей, можно сделать и быстрее. А насчёт конкуренции, не без везения, но ключевые факторы - качество/удобство и ресурсы, которые ты готов потратить на продвижение. Если твой продукт объективно лучше, важно создать условия для того, чтобы его опробовали и сравнили с конкурентом.
>очень нишевое
Не брезгуй такими идеями. Если есть хоть и малая, но платежеспособная аудитория, появляется возможность использовать иные способы монетизации, только и всего.
Аноним 18/12/20 Птн 19:43:08 1883899524
>>1883778
>Если пилить в ленивом темпе, мне нужна неделя для того, чтобы написать и адаптировать код для релиза первой стабильной версии, при этом код будет достаточно чист, чтобы не было проблем с внедрением новых фич. Если загореться идеей, можно сделать и быстрее.

Хуя ты шустрый. На галерах мидлы один скрин зачастую ту же неделю пилят.
Аноним 18/12/20 Птн 20:00:28 1883917525
>>1883899
Зачем работать быстрее? Больше тебе не заплатят
Аноним 18/12/20 Птн 20:59:17 1883999526
>>1883899
>>1883917
Всё верно, потому что это галера, работа от зп до зп. Не всегда, но очень часто так и происходит.
Аноним 19/12/20 Суб 17:52:20 1884736527
Котаны, есть приложение с 1500 активными пользователями, около 35000 строк кода на Kotlin, MVVM, одно активити , использует сеть, google maps , кастомные view, этого хватит чтобы пройти на Джуна? До этого 4 года прогоаммер с/с++.
Аноним 19/12/20 Суб 18:45:38 1884771528
>>1884736
Думаю, это даж немного избыточно для джуна
Аноним 19/12/20 Суб 19:22:24 1884809529
>>1884736
Вполне
>MVVM, одна активити
Ставлю тебе жирный лайк
Аноним 19/12/20 Суб 19:37:27 1884824530
>>1884736
Хуя у вас джуны пошли
Аноним 19/12/20 Суб 20:45:58 1884890531
>>1884736
Более чем. Это уже стронг джун, если не мидл. И насчет твоего бэкграунда в крестах: почитай про Android NDK, поищи вакансии где он требуется - твои знания крестов и желание рабоать на андроиде можно отлично совместить.
Аноним 19/12/20 Суб 23:15:27 1884988532
>>1822731 (OP)
Сап анонасы. Решил вкатиться в котлин. Джаву с некоторыми пробелами знаю.
Решил освежить в памяти джаву. Взял курс от OTUS в шапке. Но он не заходит от слова вообще. Тоесть я уже неделю топчусь в консультации по джаве. Объяснение крайне хреновое или вообще никакое. Если бы я до этого не знал джаву вообще бы не въехал. Вопрос есть что-то более годное именно по джаве с плавным переходом в котлин. Или таки придется читать книги?
Аноним 19/12/20 Суб 23:46:04 1885017533
>>1884988
>Джаву с некоторыми пробелами знаю
Этого достаточно. А вообще учить там особо нечего, о каких пробелах идёт речь?
Лучше не трать время и читай "Kotlin in action", она же "Котлин в действии".
Аноним 20/12/20 Вск 00:16:20 1885033534
>>1885017
Та прошелся по роадмапу в шапке
>алгоритмы и структуры данных
>networking/REST API/JSON/сериализация
>дизайн паттерны
Тут абсолютный ноль

-> многопоточность
Знаю но плохо.

-> дженерики
Очень туманное представление

-> функции высшего порядка
Вообще не знаю что это за звери

Конечно можно сейчас забить и восполнять потом. Но боюсь что не знание ударит во-первых, по качеству кода, во-вторых, это незнание всплывет на собесе что тоже не есть хорошо.
Вот и думаю как восполнить пробелы и что курить.
Аноним 20/12/20 Вск 00:17:07 1885034535
>>1884988
Не вижу причин парится насчет плавного перехода. Я в свое время переходил так: сижу, педалю фичу на родной жабе, прилетает новость что с сегодняшнего дня все пишем на котлине. Пробежался мельком по документации офф сайта где-то за час, дальше просто сел и начал писать на котлине. Забавно конечно считаясь уже мидлом гуглить как создать конструктор класса или какие есть модфикаторы доступа - но опять же, освоился быстро.

Спустя неделю где-то писал уже не хуже чем на жабе.
Аноним 20/12/20 Вск 00:24:04 1885037536
>>1885033
>-> многопоточность
>Знаю но плохо.

Плохо, разберись. Лучше шарить и в базовой джавой (как минимум понимание что такое монитор c wait /notify сетами и synchronized который блокирует код на этот монитор и как все это в плане памяти реализуется (thread, volatile и т.д) + более высокоуровневые конструкции в виде Executor/Future. По котлину -конечно же корутины. Даже на офф сайте расписано неплохо имхо.

>-> дженерики
>Очень туманное представление
В жабе запутано, в котлине все гораздо проще. Просто параметризовать какие-то штуковины можно не конкректными классами, а любыми (при необходимости ограничив их словами out SampleClass - любой наследник нашего класса или in SampleClass - любой родитель

>-> функции высшего порядка
>Вообще не знаю что это за звери
Вместо экземляра анонимного класса можно написать стрелочку, amazing, минимум неделя на research
Аноним 20/12/20 Вск 02:32:17 1885132537
>>1885033
Лучше прочти книгу, хуже точно не станет, но будет проще искать информацию и закрывать пробелы на волне изучения языка. Тут ведь ещё такой момент, что какие-то вещи легче воспринимаются, к примеру, в контексте kotlin/android-реализации, особенно многопоточность, прикладное значение которой ты можешь наблюдать наиболее наглядно.
Аноним 20/12/20 Вск 09:30:34 1885216538
>>1885033
>-> функции высшего порядка
>Вообще не знаю что это за звери
Функция высшего порядка есть функция, которая принимает в себя другую функцию и/или возвращает функцию. Всё. Вот тебе в качестве упражнения: Напиши функции такого типа:
one() - должна выдавать 1
two() - должна выдавать 2
one(plus(one())) - должна выдавать 2
one(plus(two())) - должна выдавать 3
Аноним 20/12/20 Вск 19:36:56 1885632539
Перекат кстати пилить не пора?
Аноним 21/12/20 Пнд 02:43:18 1885812540
>>1884988
На Гиперскилле посмотри Котлиновский курс.
Аноним 21/12/20 Пнд 02:44:44 1885813541
>>1885216
Так это лямбды что ли?
Аноним 21/12/20 Пнд 10:09:25 1885966542
>>1885813
Лямбды, конечно, нередко используются в функциях высшего порядка, но не обязательно. Например
fun square(x: Int) = x * x
println((0..5).asIterable().map(::square))
Аноним 21/12/20 Пнд 17:35:45 1886317543
>>1822731 (OP)
Всем привет
Что за ебанизм происходит
Создаю тестовый проект
У него 1 активити
На xml этой самой активити (которая автоматически создается, activity_main), даю id для tv и кнопки
По неясным причинам не могу взаимодействовать c этой кнопкой и tv в MainActivity.kt

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

btn_one <<<<<<<<<
Обычно на этом шаге мне подсвечивает варианты взаимодействия с кнопкой, но он просто ее не видит
При этом открываю старый проект - все работает
Как так? В чем может быть причина?
grandle посмотрел, там все аналогично.
Ну, перезагрузки всякие делал, компа, студии.
Аноним 21/12/20 Пнд 17:37:25 1886318544
>>1886317
разве что переустановить студию не пробовал.

Это же базовый функционал, из коробки. Как так получилось, что не работает?
Аноним 21/12/20 Пнд 18:11:43 1886351545
>>1886317
>>1886318
Держу в курсе, переустановил студию. Без изменений.
В инете ничего подобного нет.
Что, винду сносить? :)
Аноним 21/12/20 Пнд 18:36:45 1886362546
>>1886317
> Обычно на этом шаге мне подсвечивает варианты взаимодействия с кнопкой, но он просто ее не видит
> btn_one
Судя по всему ты пользовался синтетиками, выкидывай их нахуй. Такой хуйни когда ты рандомную кнопку из рандомно лейаута просто импортишь без задней мысли быть не должно. Ведро это не WPF.
Аноним 21/12/20 Пнд 18:40:57 1886366547
image.png 221Кб, 1280x720
1280x720
image.png 143Кб, 1024x576
1024x576
Вопрос по MVVM

Опытные аноны, поясните раз и навсегда пожалуйста за доступ к объектам из контекста - Resources (drawable, string, etc), Theme, packageName, словом, все что необходимо иногда выцепить из контекста.

Как решить эту проблему раз и навсегда и не облажаться идеологически с паттерном MVVM?

Что я нашел:
1. Кто-то решает вопрос созданием "провайдеров" и прокидыванием их в ViewModel, например: StringDataProvider, DrawableDataProvider. Не уверен что это самый четкий вариант - много бойлерплейта, а профит только один - упрощает тестирование (не факт, Resources можно тоже ведь замокать?)

2. Кто-то использует AndroidViewModel, который принимает в себя ApplicationContext, и все, обращается к контексту из VM. Вроде бы идеологически неверно и возможно проблемы с тестированием. Кроме этого есть минусы? Хуй знает.

3. Кто-то пляшет вокруг LiveData, пушат туда требуемые ресурсы и ждут, когда context-aware часть их заполнит, в нашем случае Fragment или Activity. Выглядит это СЛОЖНА, но я могу ошибаться. Все обмазано observer'ами, шо пиздец. Норм ли это? А хуй его знает.

Люто я заебался уже блядь. Кто в промышленном программировании на андроиде - подскажите плес, как такое решать?

DI не рассматриваю. (Ну и в любом случае любое DI решение всего-лишь автоматизированный вариант "ручного" решения)
Аноним 21/12/20 Пнд 18:42:08 1886368548
>>1886317
findViewById<Button>(R.id.button_one)
Или юзай биндинг.
Аноним 21/12/20 Пнд 18:47:34 1886378549
>>1886366
Обмаз обсерверами это суть мввм, это норма. Мне непонтяно на кой хрен тебе в вм лезть в ресурсы, этим вью должна заниматься. Можешь пример привезти который вынудил тебя такую дичь в ВМ делать?
Аноним 21/12/20 Пнд 19:02:53 1886394550
>>1886366
> Resources (drawable, string, etc), Theme
Активитизависимое и требует работы из активити.
> packageName
Хуячешь через аппликейшон контекст.

Для первого делаешь что-нибудь типа

sealed class Strings {

data class Value(String)
data class Resource(Int)

fun resolve(Context)

}


И не ебешь мозги.
Аноним 21/12/20 Пнд 19:45:40 1886454551
>>1886317
Пробуй Clean/Rebuild/Invalidate caches, особенно в случае, если ты юзал синтетику. В идеале использовать байндинг, либо же
findViewByIdна худой конец.
>>1886366
Зависит от ресурсов и их предназначения. Если ресурсы используются в качестве плейсхолдеров на уровне фреймворка(т.е. только для UI), дёргай их внутри фрагмента или адаптера виджета, если же они являются данными(что бывает редко, как пример - raw), в этом случае лучше поставлять их вместе с другими данными, получаемыми из источника данных, с полноценным маппингом в модель. Ориентируйся на то, влияют ли ресурсы на поставляемые данные(и являются ли данными), от этого и отталкивайся. Если хочешь красиво получать ресурсы - напиши функцию расширение для контекста. Вообще, советую не стесняться писать экстеншены, но если предполагается увеличения их количества в будущем, лучше сразу делай отдельный класс-провайдер, чтобы работать с отдельным объектом(делегатом).
>Кто-то использует AndroidViewModel, который принимает в себя ApplicationContext, и все, обращается к контексту из VM.
Во-первых, ViewModel не должна содержать референс, только состояние. Во-вторых, контекст имеет собственный жизненный цикл, что может привести к утечке памяти.Ты просто добавляешь вредную, неконтролируемую зависимость.
Многие проблемы, связанные с ресурсами решаются data-binding'ом.
Аноним 21/12/20 Пнд 19:48:33 1886456552
Есть ли список тем, которые ваннаби-джун обязательно должен знать?
Аноним 21/12/20 Пнд 19:52:27 1886457553
>>1886378

Про обмаз понял, возможно, надо пересмотреть отношение.

Пример у меня такой - есть коллекция моделей для item'ов в RecyclerView, допустим UnitViewModel, каждому item'у нужна картинка (из памяти/из интернета), я ее подгружаю в поле этой модели, подгузка происходит в ViewModel.

Я так понимаю это неправильно и надо подгружать в Fragment/Activity?

Вообще флоу такой - во viewModel я подгружаю данные для каждого item'а с Sqlite, но затем мне надо заполнить поле 'picture', которому нужен контекст для подгрузки, получается мне надо как-то изъебнуться и заставить Fragment/Activity это делать?
Аноним 21/12/20 Пнд 20:00:33 1886461554
>>1886454
>ViewModel не должна содержать референс, только состояние.

Спасибо. Я вот эту штуку никак не могу прочувствовать, то есть любая попытка пробросить в VM Resources/Context (Activity/Fragment)/Theme/etc - это неверно?

По этой же логике и проброс любого Data source в VM является ошибкой, например, я прокидываю в VM Data source, который у меня содержит ссылку на инстанц RoomDatabase, получается и это неправильно? В каком месте тогда нужно дергать получение данных и передавать их в VM?
Аноним 21/12/20 Пнд 21:36:37 1886544555
>>1822731 (OP)
Добрый день!
Подскажите, а есть работающие примеры jsoup kotlin?
Там однозначно есть подводные камни

Добавил разрешение в манифесте
Импортировал jsoup
пишу простую строку:
val doc = Jsoup.connect("http://example.ru").get()
На этом шаге (это, как я понял, просто загрузка html-копии страницы) уже приложение вылетает
Где-то читал, что есть какие-то тонкости. Есть знающие господа в треде?
Аноним 21/12/20 Пнд 21:39:20 1886548556
>>1886461
>любая попытка пробросить в VM Resources/Context (Activity/Fragment)/Theme/etc - это неверно
Именно так, вот что говорит документация:
ViewModel's only responsibility is to manage the data for the UI. It should never access your view hierarchy or hold a reference back to the Activity or the Fragment.
Всё, что ты получаешь - непредсказуемое поведение и нарушение separation of concerns. Во всех случаях, с которыми я сталкивался, необходимость в контексте отпадала, если копнуть поглубже и подумать о реализации, опираясь на архитектурные ограничения. отсутствие контекста - как раз одно из них в MVVM
>прокидываю в VM Data source, который у меня содержит ссылку на инстанц RoomDatabase, получается и это неправильно
>проброс любого Data source в VM является ошибкой
Разумеется.
>В каком месте тогда нужно дергать получение данных и передавать их в VM?
Если упрощенно, но достаточно чисто:
Domain: модели, абстрактные репозитории и абстрактные юзкейсы в виде обобщённых интерфейсов(вариантность определяется необходимым поведением).
Data: local/network ds, имплементация репозиториев(инжектятся).
Интеракторы: реализация юзкейсов для каждого метода репозитория(тоже инжектятся).
По мере перемещения данных из слоя в слой происходит маппинг.
В конструктор VM передаешь юзкейсы, наслаждаешься.
Ещё, кстати, отсутствие контекста позволяет безопасно получать данные из двух разных VM, что бывает полезно, но, опять же, ситуативно - это не всегда уместно.
Всегда держи в уме архитектурные ограничения.
Аноним 21/12/20 Пнд 21:49:18 1886559557
b-gates.jpg 32Кб, 416x311
416x311
>>1886548
Прочел я этот пост и понял - что мне еще учиться, учиться и еще раз учиться.
Мимо другой анон
Аноним 21/12/20 Пнд 21:52:25 1886562558
>>1886548

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

Хочется оче понять принцип без шелухи - то есть VM не должна сама получать данные, получается так? Данные (если получечние таковых зависит от контекста) должна ей поставлять сущность в виде гно, которая context-aware и "живет" в его жизненном цикле?
Так примерно? Или я нихуя не понял.

Сука как же сложно блядь, и примеры получаются большинством своим некорректные на медиуме и прочих ресурсах.
Аноним 22/12/20 Втр 00:23:25 1886650559
>>1886562
Примерно вот так:
Application ->
Обычный di-инит
Activity ->
Хостим фрагмент, передаем бандл и т.д.
Fragment:
vm.getFiles()
vm.files.observe(...)
->
ViewModel(юзкейс в конструкторе):
тут files(livedata) и getFiles() = getFilesUseCase.execute() + сабскрайбы, files.value = it и т.д.
->
GetFilesUseCase(тут репозиторий): BaseUseCase(абстракция):
override fun execute() = repository.getFiles()
->
StorageRepositoryImpl: StorageRepository(абстракция):
val storage: FirebaseStorage by lazy{...}
override fun getFiles(): Flowable<Array<File>>{storageRef.listAll()}

Фрагмент инициирует цепочку вызовов, направленных на получение данных из источника, VM делает вызов юзкейса, который обращается к репозиторию, куда приходят данные. Если данные есть, они маппятся в файлы(в данном примере), "выплёвываются" эмиттером и присваиваются/постятся в value LiveData(files) внутри VM(в методе getFiles). Если данных нет, мы получаем это состояние (Nothing, Failure и т.п.) и говорим об этом пользователю (уже в самом фрагменте). Все требования соблюдены, а детектить состояние данных (есть они или нет) можно с помощью любой success/failure обертки(Either, например). Если юзаешь rx, например, бывают случаи, когда можно обойтись и без неё.
Всё гибко и подстраиваемо под конкретную задачу.
Аноним 22/12/20 Втр 11:51:27 1886919560
>>1886650

Спасибо большое анон за подробный флоу, буду разбираться и гуглеть, много незнакомых терминов, use case и emitter я не пользовал ни разу.

Последний вопрос наверное - не подскажешь где можно найти какой-то хеллоу-ворлд, сделанный по таким вот каноничным паттернам?

Может быть есть опен-сорц проект, куда можно подсматривать?

https://github.com/android/architecture-samples - это шляпа или норм?
Аноним 22/12/20 Втр 14:22:52 1887095561
>>1886919
>это шляпа или норм?
Упрощенная реализация, не особо наглядная. Domain'а нет, вся абстракция находится в data, в том числе и сущность, которая соответствует локальному источнику, т.к. модели нет. (для разных источников данных нужны разные сущности) Если взять ту же реализацию репозитория, который в данном примере должен производить слияние двух источников данных, кэшировать и апдейтить новые данные, он станет god object'ом с внедрением новых модулей, такой подход плохо масштабируется. Если presentation разбит на фичи, так же стоило поступить и с data. А ещё лучше было бы создать domain. Собственно говоря, реализация довольно грязная.
Из плюсов, которые можно подсмотреть - single activity, работа с LiveData, в которую данные оборачиваются в самом репозитории, вскользь затронут databinding, навигация(хотя её стоило бы делегировать отдельному компоненту, т.е. создать объект, который содержал бы различные кейсы и соответствующий navigate()).
>по таким вот каноничным паттернам
Если хочешь разобраться в паттернах, тебе нужно понять концептуальную разницу между разными паттернами. Что у них общего, чем они отличаются, какие ограничения они имеют, как их внедрение влияет на систему как таковую - какие свойства и поведение она приобретает. В каждом из паттерном есть ключевая идея, которая, лежит в основе реализации.
MVC: контроллер, однонаправленность, множество узких мест в архитектуре, плохая масштабируемость;
MVP: презентеры(контракты) для каждой View, двунаправленная цикличность(но model может быть активной и пассивной), separation of concerns(SoC), Moxy;
MVVM - потоки данных, максимальная удобная реактивность, SoC, AAC;
MVI: в основе идея MVC(однонаправленность) + частичная реализация MVP - есть контракт, который содержит интент(он же намерение, триггер, который инициирует обращение к модели, т.е. является отдельным юзкейсом), так и ViewState, который отвечает за необходимое состояние и рендер View, однонаправленная цикличность, SoC, MviCore.
Устойчивость к изменению конфигурации обеспечивается с помощью di, observer'a или lifecycle-подобного подхода (LifecycleOwner - интерфейс, который реализуют Активити и Фрагменты, имеющие жц), как это сделано в VM.
Конечно же, есть множество различных подходов к реализации, но классические идеи выглядят представляются так.
>куда можно подсматривать?
С паттернами советую разбираться по гайдам медиум, чтобы получить хорошее понимание, а далее искать проекты на гитхабе, чтобы увидеть различные подходы к организации проекта. Суть паттернов заключается в предоставлении общего принципа организации компонентов, а структура определяется самостоятельно, модульность во многом опирается на искусственные ограничения. Собственно, на помощь приходит чистая архитектура советую прочесть одноименную книгу, вариантов реализации которой тоже достаточно много. В любом случае, с опытом формируется собственный оптимальный шаблон, поэтому вариативность существующих решений идёт лишь на пользу. Для ознакомления могу посоветовать один очень годный репозиторий, в шапке которого есть ссылка на гайд.
https://github.com/android10/Android-CleanArchitecture
Проект действительно хороший, достаточно информативный, наглядный, сложный, но с возможностью упрощения.
Аноним 22/12/20 Втр 15:29:16 1887156562
>>1887095
Ебать нахуй, это какой-то abstractsingletonproxyfactorybean в кубе.
Аноним 22/12/20 Втр 15:52:19 1887171563
>>1887156
То ли дело деды код писали - mov eax, ebx - коротко и ясно.
Аноним 22/12/20 Втр 16:10:10 1887181564
Аноны, привет
Что-то я не понял простую вещь: как вписать картинку в скролл-вью, чтобы она вставала по ширине элемента и занимала столько высоты, сколько нужно, без изменения пропорций?
Звучит просто matchparent на ширину и wrapcontent на высоту, но не работает.
Чуть подробнее https://pastebin.com/dVfkzKgE
Аноним 22/12/20 Втр 16:22:40 1887189565
>>1886362
>>1886368
>>1886454
Да, действительно, это была синтетика. Разобрался, как она работает, стал на шажок ближе к просветлению.
А почему синтетика - это плохо? Вроде бы как она существенно облегчает процесс кодинга. Дело в "секьюрности"? Или как-то отрицательно сказывается на производительности?

И по поводу "бест практисес"
Если биндинг вроде бы нашел
https://developer.android.com/codelabs/kotlin-android-training-data-binding-basics#0
то
>Clean/Rebuild/Invalidate caches
для котлина - чет не гуглится хотя, наверное, я плохо гуглил


Аноним 22/12/20 Втр 16:29:49 1887198566
cleanProject.png 13Кб, 230x337
230x337
invalidate.png 15Кб, 303x487
303x487
Аноним 22/12/20 Втр 16:43:42 1887216567
>>1887181
Используй констрэйнтлэйаут с width 0 dp (match contraints)
Аноним 22/12/20 Втр 17:36:06 1887296568
>>1887216
Немного не понял
Это нужно прямо в настройках androidx.constraintlayout.widget.ConstraintLayout
прописывать?
А есть какой-то более элегантный способ? Просто у меня там куча всего, и все худо-бедно работает. Не сломается от такого?
Ну и что конкретно прописать?
там несколько штук, например layout_constraintWidth_default (ему, кстати, нельзя задать значение 0)
Аноним 22/12/20 Втр 17:45:16 1887308569
>>1887095

Спасибо анон за поснение, буду одуплять дальше.

Пока гуглил паттерны я натолкнулся на странности в документации от самого гугла: https://developer.android.com/codelabs/kotlin-android-training-view-model#4

С одной стороны сказано:
>During configuration changes such as screen rotations, UI controllers such as fragments are re-created

Затем они создают VM через VMProvider во фрагменте, как я понимаю:
viewModel = ViewModelProvider(this).get(GameViewModel::class.java)

Затем они предлагают повернуть экран и увидеть:
>The GameFragment is destroyed and re-created each time, so ViewModelProvider.get() is called each time. But the GameViewModel is created only once, and it is not re-created or destroyed for each call.

Как же так, мы же "завязались" на fragment, и он был destroyed, почему VM не пересоздалось?
Аноним 22/12/20 Втр 18:11:42 1887336570
>>1887189
>А почему синтетика - это плохо?
Syntetic не compile time safety, синтетические свойства невозможно получать в разных модулях. Как была экспериментальной фичей, так ей и остается.
>>1887308
>Как же так, мы же "завязались" на fragment, и он был destroyed, почему VM не пересоздалось?
Всё дело в жизненном цикле фрагмента - изменение конфигурации не приводит к полному уничтожению фрагмента(Finished).
https://www.glureau.com/pictures/Jetpack-ViewModel-Lifecycles.png
Аноним 22/12/20 Втр 18:44:09 1887379571
Аноны, я использую в интерфейсе своего Repository возвращаемый тип вида:
LiveData<PagedList<T>>

Пока единственная реализация - подтягивание данных из Android Room, но потом я думаю о подтягивании данных из интернетов.
Я сильно сосну?

Вся эта магея с PagedList выглядит довольно сложной и я чото никак не пойму, зря я ей обмазываюсь или все норм будет.
Аноним 22/12/20 Втр 19:10:38 1887409572
>>1887379
Не надо в репозиториях использовать лайвдату пожалуйста.
Аноним 22/12/20 Втр 19:21:40 1887417573
>>1887296
Нет, ты вместо LinearLayout в Scrollview засовываешь ConstraintLayout, дальше внутрь констрэйнта ImageView. В конструкторе привязываешь его к верху скроллвью и в левый и правый края констрэйнтлэйаута, дальше делаешь width ImageView 0dp
Аноним 22/12/20 Втр 19:24:07 1887419574
>>1887409

Почему?

Но даже если я избавлюсь от LiveData, буду просто возвращать PagedList, это норм вариант для адаптации в будущем под REST ресурс?

Или androidx.paging.PagedList это сугубо для sqlite штука
Аноним 22/12/20 Втр 23:18:33 1887566575
>>1883424
пока начали хоть какието бабки на еду приходить, я пилил полгода почти фултайм где-то. При этом не столько код, сколько дизайн иконки картиночки, контент. Так что не жди быстрых результатов.
Если есть 10 аналогов, сделай лучше чем они. Почти всегда почему-то люди пихают овердохуя рекламы, сделай тоже самое без рекламы, и ты уже лучше. Но самое сложное - найти нишу, где у тебя будут скачки, хоть какие-то инсталы без рекламы. Тут даже топ прилага может быть никем не замечена. Дрочи aso, но в хорошей нише у тебя и без оптимизаций должные приходить хоть пару инсталов в день
Аноним 23/12/20 Срд 10:49:23 1887840576
>>1887566
>сделай тоже самое без рекламы

А как монетизировать?
Аноним 23/12/20 Срд 11:04:20 1887845577
>>1887417
Если честно, поулчается абсолютно так же, как было до этого с linearlayout
Один в один
Параметры проверил, вроде бы сделал так, как ты говоришь
магия :(
На всякий https://pastebin.com/2Q2BiJWb
Аноним 23/12/20 Срд 12:46:58 1887980578
>>1887845
поставил другую картинку (с другим разрешением, но идентичными пропорциями), отступы стали меньше, но остались. Причем отступы как сверху, так и снизу.
Аноним 23/12/20 Срд 14:09:19 1888114579
image.png 83Кб, 1097x731
1097x731
>>1887980
Соре, оказывается, я ошибся. Если известно разрешение картинки, то сделай как на этом коде
Аноним 23/12/20 Срд 14:13:47 1888122580
Аноним 23/12/20 Срд 15:22:03 1888222581
>>1888114
Работает...
Работает!
Спасибо тебе, добрый человек
Аноним 23/12/20 Срд 15:26:14 1888227582
>>1887409

Пока то что нашел на эту тему:
https://proandroiddev.com/no-more-livedata-in-your-repository-there-are-better-options-25a7557b0730

И по сути тут говорится о том, что LiveData в репозитории - это превношение в Domain layer android-специфичной сущности.
И говорят что надо пользовать Flow.

Блеать я не понимаю разницы между ними, почему LiveData - android-specific, а Flow- нет?
Аноним 23/12/20 Срд 15:38:10 1888242583
>>1888227
Потому что лайвдата имеет прямую зависимость на андроид хендлер и меин лупер. Да, можно костылями через бекдор отвязать в жвм тестах, но вопрос нахуя.
Ну и лайвдата в принципе говняха, у гугла разыгрался not invented here синдром и они решили запилить еще один обсервабл паттерн. Вот только он в разы менее функционален чем рхжава с котлином.
Аноним 23/12/20 Срд 16:06:14 1888261584
1366935579.taza[...].jpg 854Кб, 956x1275
956x1275
>>1822731 (OP)
Котаны, а как сделать фрагмент по правилам MVVM в котором 4 кнопки и по клику на каждой из них вызывается код переключения на другой фрагмент? С одной стороны - это должно быть тестируемо, с другой стороны - слишком же простой код, что тут тестировать?
Аноним 23/12/20 Срд 17:09:18 1888315585
>>1888261
MVVM тут не играет никакой роли, потому что переключение фрагментов не выходит за пределы View и не взаимодействует с ViewModel.
Наиболее чистая реализация: Navigation + коллбэки в активити, которые вызываются во фрагменте. Логика вызовов находится в активити, фрагмент может вызывать методы, но ограничен собственным жизненным циклом.
>С одной стороны - это должно быть тестируемо, с другой стороны - слишком же простой код, что тут тестировать
Самое главное, чтобы что-либо было тестируемо, и совсем не важно, если ли необходимость это что-то тестировать в данный момент.
У тебя есть обычная тарелка(не одноразовая). Она должна быть сделана из материала, который можно очистить, потому является переиспользуемой. Сейчас, когда она чистая, в очистке нет необходимости, но это не означает, что она не понадобится никогда. Это свойство, которое просто должно быть.
Аноним 23/12/20 Срд 17:24:50 1888326586
>>1888242
>у гугла разыгрался not invented here синдром
>еще один обсервабл паттерн
>только он в разы менее функционален чем рхжава с котлином
Не совсем так. LiveData вполне вписывается в концепцию архитектурных компонентов, будучи инструментом среды фреймворка. Мне нравится идея применения rxjava в бизнес-слое и livedata в framework-слое, потому что это позволяет максимально эффективно использовать инструменты, исходя из возможностей, которыми они обладают, без вреда для архитектурных ограничений.
>>1888227
Именно поэтому использовать LiveData стоит только в presentation, который относится к фреймворку.
Аноним 23/12/20 Срд 18:07:56 1888405587
>>1888315
>Наиболее чистая реализация: Navigation + коллбэки в активити, которые вызываются во фрагменте. Логика вызовов находится в активити, фрагмент может вызывать методы, но ограничен собственным жизненным циклом.

Navigation не умеет держать фрагменты в стеке, оно их пересоздаёт.
Аноним 23/12/20 Срд 18:15:21 1888410588
>>1886650

Анон, подскажи пожалуйста, как в твоем флоу обойтись без di?
Аноним 23/12/20 Срд 18:54:59 1888455589
Аноны. Есть опыт в ойти 8 лет, но интересно в мобилки вкатиться. Что сейчас надо вообще? джава всё ещё в тренде или только деды на ней пишут?
Аноним 23/12/20 Срд 19:20:31 1888477590
>>1888405
Документация:
Android maintains a back stack that contains the destinations you've visited. The first destination of your app is placed on the stack when the user opens the app. Each call to the navigate() method puts another destination on top of the stack. Tapping Up or Back calls the NavController.navigateUp() and NavController.popBackStack() methods, respectively, to remove (or pop) the top destination off of the stack.
Поведение стека управляемо, но его реализация сокрыта.
>>1888410
Механизм внедрения зависимостей необходим и является частью архитектурных ограничений. Обойтись без di можно, например, в том случае, если пилишь всё в одной активити, но если речь идёт о модульности, должны соблюдаться принципы, которые обеспечивают независимость и заменяемость компонентов. Не нужно искать способы обойтись без di, старайся понять саму концепцию. Если взять мой любимый Hilt, аннотация ViewModelInject просто сгенерирует фабрику, которая отвечает за инстанциирование ViewModel. Это же касается и юзкейсов, для которых создается провайдер-метод. Нужно понимать, что в реализации нет ничего сложного, она просто сокрыта. Ещё di служит хорошей защитой от дурака, опять же, благодаря вносимым ограничениям и, в частности, инверсии контроля. Читай гайды, пробуй внедрять di вручную или исследуй различные фреймворки и поймешь, что это действительно удобно.
Аноним 23/12/20 Срд 19:36:07 1888495591
>>1888477
Ты не понял!
При нажатии на бэк будет уничтожен фрагмент.
Мне так нельзя делать, потому что при переключении между экранами будет теряться состояние, а восстановливать его долго,юзер будет в бешенстве.
Разве есть там решение этой проблемы?
Аноним 23/12/20 Срд 20:02:51 1888534592
>>1888495
OnBackPressed-коллбэк можно хэндлить, как и само сохранение состояния. Собственно, если есть необходимость, можно переопределять методы Navigation классов под конкретные кейсы и создать провайдер, который будет управлять поведением в каждом варианте использования. У меня нет однозначного ответа на твой вопрос, могу только сказать, что не сталкивался с нерешаемыми проблемами. В любом случае, названный мной ранее способ актуален и без Navigation-компонента.
Аноним 23/12/20 Срд 20:05:07 1888537593
У меня был RecyclerView с длинным списком внутри VIewPager2. Если его вбок сдвигать, то скрол работает. Но потом мне захотелось, сдвигать его вверх. И скрол перестал работать =(
Оно принципиально не может? Или можно починить?
Аноним 23/12/20 Срд 20:08:28 1888540594
>>1888534
А для чего тогда вообще переопределять, если копание с этим займёт времени больше или столько же, сколько создание своего Navigation?
Аноним 23/12/20 Срд 20:12:53 1888548595
>>1888540
Это лишь возможные варианты решения потенциальной проблемы. Разумеется, выбирать нужно наиболее эффективный и наименее времязатратный подход.
Аноним 23/12/20 Срд 20:24:03 1888563596
Навигейшон компонент не держит созданные фрагменты из бекстека в памяти со сломанной вьюхой как это делает обычный фрагмент менеджер? Мхехмда. Вьюмодель то хоть живет?
Аноним 23/12/20 Срд 20:42:15 1888594597
Аноним 23/12/20 Срд 20:55:38 1888615598
>>1888563
Имхо навигейшн компонент неюзабельное дерьмище если у тебя в приложении больше 2-х экранов. Рано или поздно упрешся в какую-то вещь которую принципиально на этом компоненте не сделаешь.
Аноним 23/12/20 Срд 21:14:30 1888648599
>>1888563
Держит вроде, с чего ты взял, что не держит?
Аноним 24/12/20 Чтв 03:13:00 1888915600
>>1888563
У меня помнится были проблемы в плане бекстеком на этом компоненте. Точно мб уже и не вспомню, но выглядело примерно все так:

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

Если ловим любую ошибку - вывалиемся назад на экран авторизации.

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

Но! при этом если зайти нормально в вебвью, полазить, вывалится обратно на 1-й скрин авторизации и запусть вебвью в 2й(!) раз (и далее, 3-й, 4-й и т.д) - то бекстек вебвью ломался, любое нажатие на назад закрывало вебвью и отправляло юзера назад на скрин авторизации.

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

Вроде мелочь, но с тех пор в голове прочно засела мысль что навкомпонент кусок дерьма.

И глядя на текущий проект, где в плане навгации есть много чего интерестного и на докуметацию по этому компоненту - я просто не представляю как можно было бы сделать навигацию моего текущего проекта на этом убогом, обрезанном со всех сторон огрызке от великолепия всех комбинаций флагов интентов/лаунчмодов и жонглирования транзакциями фрагментов (хотя в плане вложенных фрагментов много нелогичного дизайна, а местами и откровенных багов).
Аноним 24/12/20 Чтв 16:11:28 1889383601
>>1888477

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

Я сам пришел из мира серверного жвм-ынтырпрайза и поэтому мне не кажется хорошей идеей открывать новый стек технологий сразу с DI, хотя сейчас для серверной жабки/котлина я бы не стал, за редким исключением, стартовать ни один проект без DI, но это потому что есть 10летний бекграунд в этом деле. А тут хотел обмазаться сперва по-хардкору, без DI.
Аноним 24/12/20 Чтв 17:20:19 1889493602
>>1889383
>если что-то нельзя сделать без фреймворка-DI, то возникают вопросы к такому подходу
Идея подхода заключается в наибольшем уменьшении связанности, чего невозможно добиться без di. Production ready, так сказать. Собственно, если есть цель обмазаться, убирай всю абстракцию, объявляй условный репозиторий прямо в месте вызова его методов и анализируй поведение такого подхода, включая сайд-эффекты, с которыми этот процесс будет гораздо веселее. Или, как вариант, можно написать простенькую реализацию MVP и создавать объекты прямо в активити(в т.ч. и презентер).
>жвм-ынтырпрайза
>открывать новый стек технологий сразу с DI
Если, например, взять JavaEE, где есть скоупы, квалификаторы, инъекция фабрик и сервисов, или Спринг, где di реализован в виде компонентов и конфигурируемых бинов(со скоупом и жц), и провести аналогию с той же dagger-реализацией, понять её специфику будет ещё проще. Можешь начать с ручного внедрения(через конструкторы и фабрики), если не хочешь сразу погружаться во фреймворки(есть множество гайдов, где показан процесс реализации без использования каких-либо фреймворков), но нет ничего плохого в том, чтобы начинать осваивать новый стек с хороших практик, с необходимостью которых всё равно придется столкнуться, пусть и чуть позже.
Аноним 24/12/20 Чтв 20:14:01 1889702603
>>1822731 (OP)
Привет всем отцам и не очень!

Хочу сделать музыкальное сопровождение для своего приложения: при нажатии проигрывать конкретный звук.
Написал функцию, которую пристыковал к нажатию нужных кнопок
Оно работает
Но если произвести "стресс-тестирование"жать на эти кнопки как сумасшедший, то после определенного момента все просто перестает работать
Есть другая похожая функция, она тоже перестает работать
Написал try except - не помогает
Написал проверку, не играет ли плеер сейчас (если играет - нахуй выключить его) - не помогает
В чем может быть дело?
Код функции
https://pastebin.com/A0Av9Gcw
Аноним 24/12/20 Чтв 20:17:41 1889706604
>>1889702
Нет смысла создавать каждый раз медиа плеер с одним и тем же звуком. Просто делай ему start/stop/seekTo
Аноним 24/12/20 Чтв 20:25:30 1889721605
>>1889706
Пара вопросов:
-А как это в функцию реализовать? Функция для включения плеера и функция для запуска сообщения? Как-то сложно представить.
-мой вариант, по идее, не самый оптимальный, но должен работать. Почему после определенного момента начинает залипать? Что еще я должен пересоздать?
Аноним 24/12/20 Чтв 23:47:15 1889970606
>>1889702
Братан, используй абстракцию и вынеси плеер в отдельный класс, а не создавай его каждый раз в функции.
Аноним 25/12/20 Птн 02:02:39 1890035607
Как использовать разные библиотеки для разных сборок? Допустим есть либы А и В для работы с видео. Мне надо для одной сборки чтоб использовалась либа А, для другой сборки - либа В. В коде обмазал все интерфейсами и т.п., так что у убеих либ одинакое лицо все правильно же сделал, да?, но как при сборке подсунуть нужную либу - хз. Через flavors это делается?
Аноним 25/12/20 Птн 06:23:34 1890213608
>>1889702
Переделай условие на: или плеер нулл или из плеинг. Сейчас там стоит и.
Аноним 25/12/20 Птн 10:44:57 1890351609
735362710034ae6[...].jpg 592Кб, 1202x800
1202x800
>>1822731 (OP)
Котаны, а когда вьюхи получают событие onTouch?
После вызова какого метода в Lifecycle Activity/Fragment?
Аноним 25/12/20 Птн 11:02:57 1890361610
А есть какая-то команда, чтобы после разового прослушивания плеер удалялся?
mMediaPlayer2!!.isLooping = false - это, чтобы он играл один раз
А как чтобы удалялся?
Пока что самое такие, что я придумал - это создать функцию, создающую несколько плееров (с разными саундами), потом функцию, которая крутит соответствующий саунд
И функцию, которая удаляет все плееры при уходе с активити. Такой вот план.
>>1890213
Переделал
Перестало работать после первого клиа
Попытался покрутить, оставить, например, только isPlaying - то же самое
>>1889970
Я никогда подобными вещами не занимался, идея хорошая, попробую. Я просто слабо представляю себе как это должно выглядеть.
Аноним 25/12/20 Птн 12:11:32 1890388611
>>1890361
Посмотрел еще раз на свою функцию
https://pastebin.com/LMk8f68q
Так у меня же первой строкой идет
var mMediaPlayer2: MediaPlayer? = null
Получается, что предыдущий плеер должен закрыться автоматически
Зарве нет
В топку классы, я слишком тупой для них, но тут-то что не так?
Аноним 25/12/20 Птн 13:14:45 1890462612
>>1889493

Наверное, как ты советуешь, попробую с ручных фабрик.
Про то что это di это продакшон реди и хорошая практика - не спорю ни разу, просто хочу сначала руками обмазаться.

Я пока не понимаю как di решает проблему context-awareness, и чтобы это понять навреное надо попытаться сначала "магею" руками наковырять.
Аноним 25/12/20 Птн 13:45:28 1890521613
>>1890388
Раздербанил функцию, при старте активити делаю плеер, при нажатии кллавиш прокручиваю музыку, при выходе убиваю плеер, все работает. Нефилигранно, ну и ладно.
Аноним 25/12/20 Птн 14:09:05 1890569614
>>1890388
>>1890521
>var mMediaPlayer2: MediaPlayer? = null
>должен закрыться автоматически
Ты создаешь объект типа MediaPlayer, присваивая ему значение null по умолчанию. Чтобы уничтожить его, тебе нужно сделать проверку на null, сделать release и присвоить null, если MediaPlayer'у присвоено значение. (делать это, соответственно нужно в месте, где предполагается его уничтожение и когда он не isPlaying) Если тебе нужно делать так, чтобы он уничтожался после проигрывания - вешай на него OnCompletionListener и пиши приведённый выше код в теле его метода. Учти, что в этом случае присваивать значение MediaPlayer'у нужно в месте старта звуковой дорожки. Помни о том, что MediaPlayer должен существовать в единственном экземпляре. за исключением отдельных случаев, для реализации которых необходимо создание отдельного компонента для управления ресурсами
Аноним 25/12/20 Птн 14:17:26 1890577615
367115150ae3013[...].jpg 79Кб, 605x605
605x605
>>1890388
Переменная MediaPlayer ЛОКАЛЬНАЯ!
Аноним 25/12/20 Птн 14:42:26 1890613616
Котаны, а как правильно получить инстанс класса MyNavigation, который я создал в активити, а нужно использовать мне его внутри фрагмента и я не хочу делать getActivity с преобразованием типа.

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

теперь без пикчи
Аноним 25/12/20 Птн 17:24:09 1890739617
Аноним 25/12/20 Птн 20:48:24 1890879618
>>1890739
>прокидывается Application в ViewModel, и репозиторий юзается из ViewModel
>не очень-то и безопасны
Всё верно, подход неправильный, но это туториал, который должен быть простым для понимания. Я полагаю, что это сделано для демонстрации лёгкости внедрения архитектурных компонентов, ведь если не вникать в подробности, может показаться, что присутствует некая многослойность и, как минимум, соблюдены базовые принципы MVVM, хотя очевидно, что в нём же они нарушаются. Цель любого туториала - донести информацию доступным образом, но иногда это происходит в ущерб качеству или же может вовсе ввести в заблуждение.
Аноним 26/12/20 Суб 21:49:45 1891774619
>>1890879

Анон, я стал разбираться с тем туториалом по чистой архитектуре и смотреть второй проект автора этого туториала - https://github.com/android10/Android-CleanArchitecture-Kotlin

И возник вопрос - почему там используется LiveData, а не Flow?
Разве flow не богаче по функционалу в плане контроля над тредами и потоком данных? Вообще по твоему опыту пром. разработки под андроид что чаще используется?
Аноним 27/12/20 Вск 17:44:04 1892475620
>>1891774
В прошлом проекте была классическая реализация Clean Architecture. Здесь же автор показывает подход, который предполагает уменьшение искусственных ограничений, вынесение общей логики в core(обрати внимание на то, что там находятся даже функции-расширения android-зависимых компонентов) и features, который содержит модули с data и presentation компонентами. Это важный момент, который многое объясняет.
>И возник вопрос - почему там используется LiveData, а не Flow?
Как написал автор в блоге, одной из его целей было максимальное упрощение и, соответственно, избавление от всевозможных промежуточных оберток и операций, которые не нужны в случае минимизации искусственных ограничений. Логика такова, что раз LiveData является частью реализации приложения, её можно отнести к числу общих компонентов, который может располагаться в core-модуле. Почему используется LiveData, а не Flow? Потому что автор акцентирует внимание на преимуществах MVVM архитектуры и использует инструменты, которые не приведут к оверинжинирингу, о чем он прямо говорит, приводя в пример RxJava. В контексте данного подхода и его ключевых идей никаких противоречий нет.
>Разве flow не богаче по функционалу в плане контроля над тредами и потоком данных?
Да, но учитывая то, что его функционал не относится к числу необходимого, автор считает его лишним.
>Вообще по твоему опыту пром. разработки под андроид что чаще используется?
RxJava используется очень часто, потому что её функционал гарантирует минимизацию рисков, связанных с увеличением сложности последующего внедрения новых фич. В новых проектах часто используется Flow, что идиоматически оправданно, т.к. так используется Kotlin. В большинстве проектов, где изначально использовалась RxJava, она по-прежнему используется, так как рефакторинг нецелесообразен.

Насчёт самого подхода могу сказать, что мне больше нравится классическая реализация Clean, потому что наличие явных ограничений упрощает сопровождение увеличивающегося проекта и является более элегантным решением, чем может показаться на первый взгляд. Я считаю, что для архитектуры первостепенно разделение на бизнес и фреймворк, а далее, руководствуясь принципами чистой архитектуры, можно адаптировать её под цели, требования и потенциальную масштабируемость проекта. В любом случае, все эти проекты являются разновидностью реализации, поэтому не нужно стесняться делать что-то своё, опираясь на свойства собственных задач, придерживаясь общих принципов.
Аноним 27/12/20 Вск 19:25:34 1892634621
Пиздец ваш андроид, dagger2 самая злоебучая хуйня что я видел в программировании за всю жизнь, куда-то блять что-то прописывать инжект, хуект, модуль компанент. Ебаный в рот. Вообще шизень.
Помогите с ведройдом Аноним 27/12/20 Вск 19:54:44 1892671622
Screenshot20201[...].png 42Кб, 1080x2270
1080x2270
Screenshot20201[...].png 1574Кб, 1080x2270
1080x2270
Screenshot20201[...].png 2488Кб, 1080x2270
1080x2270
Ребят, сори за фотки экрана(так бомбит что не могу нажать на принт скрин). Короче можете подсказать в чем может быть проблема? Я уже и версию своего андроида доказал. И в редакторе разрешение сменил. Но это говно все равно летает по вертикали куда хочет. Что предложите погуглить? Или возможно все так элементарно что в две строки поясните?
Аноним 27/12/20 Вск 19:59:45 1892677623
>>1892671
Меняй Relative на Constraint, засовывай textview и кнопку в вертикальный linearlayout(wrap_content) и привязывай его constraint'ы.
Аноним 27/12/20 Вск 20:03:20 1892682624
>>1892677
Попробую. Огромное спасибо)
Кстати, есть какое нибудь срамное руководство по этим тэгам в XML, типо какой что делает. А то это первое приложение которое я пишу(обезьяны) и хотелось бы получше разобраться. Спасибо за ранее.
Аноним 27/12/20 Вск 20:14:23 1892689625
Аноним 28/12/20 Пнд 08:34:12 1893187626
>>1892677
>>1892682
Засовывать linear (и прочие) в constraint плохая практика, constraint предназначен для создания плоской иерархии view. Имхо иногда можно, когда у тебя действительно дохуя вьюх - удобнее сделать тот же линеар чем цеплять один к другому по цепочке. Но блять, их же тут всего 2.

Смотри, 1-ю вьюху с часами ставишь без всяких линеаров, тупо в констраинт - startToStart на parent, endToEnd на парент тоже - центровка по горизонтали. Тоже самое для вертикали - topToTop - parent, bottom to bottom - parent.

Дальше цепляй кнопку к низу часов - topToBottom = "айдишник часов"
startToStart = "айдишник часов"
endToEndOf= "айдишник часов" делаем кнопку посередине вертикали часов.

Если нужно что-то подвинуть слегка - юзай марджины / constraint bias

Аноним 28/12/20 Пнд 13:21:05 1893388627
image.png 143Кб, 1024x576
1024x576
Аноны, кто использует

observeForever

В ViewModel, тупой вопрос - как избежать ужастного объемного бойлерплейта в onClean, где я вынужден удалять все observer'ы

При чем до этого я вынужден их держать еще и в полях класса, что тоже мне несильно нужно.
Аноним 28/12/20 Пнд 13:21:32 1893389628
Аноним 28/12/20 Пнд 17:16:55 1893657629
>>1893388
А зачем ручками отписываться? Есть лайвдата которая сама умеет следить за LifecycleOwner, есть прямые байдинги из xml где такого я тоже не припомню.

Я мб таким давно не занимался, но пока выглядит так как будто ты пишешь очередной велосипед.
Аноним 28/12/20 Пнд 18:10:34 1893743630
>>1893657

Те вещи, которые можно замапить в xml - я маплю, тут вопросов нет.

Но у меня есть логика в AndroidViewModel, которая использует observeForever - получить данные допустим из репозитория, далее что-то сделать, т.к. ViewModel не может иметь lifeCycleOwner то нужно руками удалять observer'ы.
Я видимо не так что-то делаю, но хуй пойми как это поправить.
Аноним 28/12/20 Пнд 18:16:57 1893752631
>>1893657
>>1893743

Вот такими мыслями я руководствовался:
What's important is you don't observe on a LiveData object from something bound to a different lifecycle. For instance, if you have something Fragment scoped and then something activity scoped. If the activity scoped one binds to a livedata object from the fragment one, the fragment's ViewModel will still be referenced even though it is no longer managed.

It is OK to observe on data from the repository w/ observeForever as this isn't bound to a lifecycle. It observes until told otherwise. The part that you have to handle in that case is to make sure you remove it in onCleared(), which they don't appear to be doing. There's a possibility in this case to leak the ViewModel longer than it should be around since they don't reset() the handler in onCleared().

из обсуждения: https://github.com/android/architecture-components-samples/issues/301
Аноним 28/12/20 Пнд 21:49:17 1893993632
>>1893743
>
>Но у меня есть логика в AndroidViewModel, которая использует observeForever - получить данные допустим из репозитория, далее что-то сделать

Мб лучше иметь отдельный слой между презентейшн слоем и репозиторием для такой логики, юз-кейсы там или еще что-то в этом роде. Если все же хочешь делать это именно на лайвдате в ВМ, чекни это https://developer.android.com/topic/libraries/architecture/livedata#transform_livedata
Аноним 29/12/20 Втр 01:32:12 1894166633
Будут ли какие проблемы если я каждый день выкатываю обновления/фиксы в маркет?
Аноним 29/12/20 Втр 05:27:41 1894276634
Аноним 29/12/20 Втр 05:31:55 1894281635
>>1893388
Я так данные из foreground сервиса передаю.
В классе Application лежит Repository с Mutable LiveData, внутри ViewModel подписываемся через Observe Forever, обычно для отображения данные нужно преобразовать, этот происходит внутри ViewModel.
Аноним 29/12/20 Втр 12:24:38 1894429636
>>1894281

А очищаешь-то как observer?

В callback'e onCleared?

Вообще судя по всему observeForever в ViewModel - это антипаттерн, рекомендуют стараться обходиться map/switchMap, а наблюдать только из View.

Хуй знает, не всегда это получается, по-моему. Не могу пока этот помент прочувствовать.

Вообще то, что в мире js-блядей делается сука щелчком пальцев (как во vue.js) - в андроде превращается в какой-то ебаный танец по удовлетворению паттернов, жизненного цикла, аллаха, блядь, ХУЛИ СУКА ТУТ ТАК СЛОЖНО ЕБАНА
Аноним 29/12/20 Втр 13:04:58 1894455637
>>1893993

Я не очень понимаю как use cases/interactors решают вопрос с ожиданием результата обращения в репозиторий, все равно ведь репозиторий возвращает LiveData (или Flow, если нет желания завязываться на android)
Аноним 29/12/20 Втр 20:54:04 1894839638
>>1894429
>map/switchMap
По подробнее, пожалуйста
Аноним 29/12/20 Втр 21:50:42 1894880639
Аноним 31/12/20 Чтв 00:26:03 1896317640
Аноны, стоит сразу учить котлин в андройт студио минуя там джаву? Жаву и так знаю не много, вопрос именно про андройд, есть ли смысл там жаву учить вообще?
Аноним 31/12/20 Чтв 14:53:41 1896784641
>>1896317
Ну смотри, у джавы сейчас по сути 2 применения.

1-е. Ты можешь попасть на +- старый проект, который написан на джаве. Возможно при этом дальше он будет дописываться на котлине, но читать старый код на джаве придется.

2-е. При гуглинге разнообразный инфы ты столкнешся с тем что куча ответов с стековерфлоу написаны на жабе, какие-то старые, но все еще полезные гайды на ебучем медиуме тоже.

По итогу, на мой взгляд можно сразу учить котлин (предварительно офк разбобравшись по минимуму в том что такое jvm и прочее). Но джаву ты должен как минимум спокойно читать.
Аноним 31/12/20 Чтв 15:29:33 1896818642
image.png 130Кб, 378x836
378x836
Сап анонасы. Помогите умоляю, есть у кого приложение с контактами на котлине как на пикриле? Очень нужно пиздеццццц аноны спосите
Аноним 03/01/21 Вск 15:23:46 1899529643
bump
Аноним 05/01/21 Втр 11:46:47 1901351644
>>1822731 (OP)
Как же горит с прибитого гвоздями интерфейса к деревянному XML. Как вообще динамический интерфейс тут пилится?
Допустим надо регулировать количество кнопок в рантайме.
Скрывать элементы - костыль. Храним невидимые элементы.
Фрагменты - костыль. Бесполезное оборачивание элементов - производительность в пустоту. Надо пилить руками кучу фрагментов.
Пилить элементы из кода - отвратительная поддержка стилей через код и документация этого извращения настоящая дрисня.
Кастомные элементы - чего, блять? Мне стоковые кнопки надо просто добавить/удалить и менять пару параметров стиля.

Так что из этой каши у Гугла считается правильным вариантом? Всегда плевался с XAML у индусов, но даже там всё лучше - просто добавляешь элемент из кода и прикручиваешь XAML-шаблон, в пару строк всё делается.
Аноним 05/01/21 Втр 12:12:05 1901371645
>>1901351
> производительность в пустоту
Байтослесарь, ты?
Аноним 05/01/21 Втр 12:41:04 1901399646
>>1901371
А если мне надо в каждой кнопке одну-две строчки стиля поменять? Пилить 10 фрагментов руками, имея 95% шаблонного XML? Звучит как полная хуйня. Даже во времена WinAPI такой хуйнёй не занимались.
Аноним 05/01/21 Втр 14:13:55 1901455647
Аноним 05/01/21 Втр 16:38:58 1901614648
>>1901351
Налицо очевидный недостаток знаний и отсутствие понимания базовых подходов к проектированию/оптимизации ui. Могу только посоветовать учиться дальше и разбираться подробнее, а не придумывать несуществующие костыли и гореть из-за них же.
Аноним 05/01/21 Втр 16:59:11 1901634649
>>1901614
Т.е. ты сам не знаешь как правильно? А ведь судя по документации, у Гугла вариант с фрагментами является правильным. И всё это случилось из-за изначального ущербного подхода. В то время как у индусов был переход из кода в XAML и он до сих пор лишь вспомогательный инструмент, Гугл сразу с первых версий ведра прибивал всё гвоздями к XML.
> придумывать несуществующие костыли и гореть из-за них же
Что же тогда сам Гугл пригорел и запилил Flutter? А XML что-то дальше этих костылей с фрагментами не ушёл - как была статичная параша, так и осталась.
получение технических данных без рута Аноним 05/01/21 Втр 18:32:15 1901757650
image.png 381Кб, 750x927
750x927
Добрый вечер, господа программисты.
пишу диссер, прорабатываю модель системы трекинга персонала на основе wi-fi и тегов на базе мобильных устройств. Трекинг на вайфай очень свежая тема, в нее вкатываются даже здоровые конторы типа циско, но хочется добиться некоторых преимуществ. В связи с темой появились следующие вопросы:
- Можно-ли ( а в идеале как) сделать так, чтобы приложение получало инфу о том, что устройство было разблокировано ( по отпечатку, лицу или пину, етс). То есть можно прикрутить функцию прямо в приложение базовыми апи, но это удар по юзабилити. хочется конкретно агент
- Можно-ли выдернуть из кадров WiFI P2P данные о уровне сигнала RSSI
- Можно ли сделать то же самое для кадров BT

Все это про безрут, с рутом и такой дурак как я сможет)
Сам не программист, занимаюсь инфобезом. Заранее спасибо. Пикча для привлечения внимания
Аноним 05/01/21 Втр 21:11:37 1901894651
>>1901634
>Т.е. ты сам не знаешь как правильно?
Что правильно? Та парадигма, которая сейчас является стандартом, обладает достаточной гибкостью, чтобы можно было реализовать что угодно. Большинство маня-идей, которые выходят за её пределы, как правило, бестолковые и по своей сути являются костылями, без которых можно обойтись.
Если тебе это действительно так необходимо, используй сырой Compose, оставляй фидбек и помогай развивать его, что будет гораздо полезнее, чем высеры на тему "тут всё так плохо, а вот там лучше".
>Что же тогда сам Гугл пригорел и запилил Flutter?
Предлагаю тебе использовать Флаттер, вдоволь "насладишься" производительностью.
>XML что-то дальше этих костылей с фрагментами не ушёл - как была статичная параша, так и осталась
А куда он уйдет? Ты рассуждаешь о невозможном, потому что потолок его возможностей достигнут. Дальше может быть только полный уход к декларативности, где тебе будет отрисовка, динамическая компоновка, настоящая пространственная "материальность", векторы, кватернионы и всё без костылей. Вот тогда и обмажешься динамикой, а пока работай с тем, что есть, либо пробуй готовые решения.
Аноним 05/01/21 Втр 22:38:44 1901975652
>>1901351
> Пилить элементы из кода - отвратительная поддержка стилей
1) создаешь xml из одной кнопки со стилями хуилями
2) инфлейтишь эту кнопку в свой линер лейаут
Аноним 06/01/21 Срд 02:09:30 1902143653
image.png 15Кб, 1124x76
1124x76
при попытке установить нечто 100% совершенно не моднутое васяном_xx2000xx на устройства и эмуляторы с последними версиями ведра с помощью adb вылазит прикл. собсно вопрос, можно ли проверку сертификатов отрубить?
подписывать самому каждый раз лень
Аноним 06/01/21 Срд 07:29:57 1902232654
>>1901351
Запили ресайклер (можно горизонтальный) который будет тебе 100500 кнопок генерить без проблем с производительностью
В коде просто хранишь список кнопок, а в холдере будешь просто менять нужный тебе стиль.
Аноним 06/01/21 Срд 13:41:04 1902372655
Кто как обрабатывает ошибки в корутинах?
Цепочка viewmodel->usecase->repository->retrofit.

У самого сделано во вьюмоделе через try-catch и обертку Result (loading/success/error). Есть варианты получше?
Аноним 06/01/21 Срд 14:58:13 1902463656
Аноним 06/01/21 Срд 17:58:19 1902843657
rudolph.png 284Кб, 394x337
394x337
Как правильно сделать обновление одного из элементов RecyclerAdapter, используя паттерн MVVM?
Аноним 06/01/21 Срд 21:46:04 1903061658
image.png 69Кб, 575x402
575x402
Мою прогу удалили из плей стора из-за жалобы правообладателей, хотя я удалил весь их контент парочками днями ранее. Мудакам из гугл похуй, для них разраб это чмо которое надо вышвырнуть нахуй, они тока рекламодателей жалуют.

Кароче, пиздец. Просто негде высказаться.
Слава Б-гу чуть насобирал денег, но, дебил, проебывал на всякую хуйню. Благо не все проебал.
Пойду вкатываться в геймдев, ничо не умею и не знаю (ну так, немного юнити и блендер), хуй знает что со мной будет и что делать. Сладкие времена когда доилась одна большая корова закончились. Хочется сдохнуть. Хотя по сути есть пару лет на обучение геймдеву, но все-равно ужасно как-то.


Аноним 06/01/21 Срд 22:19:13 1903105659
>>1903061
А на Айфон чего не делал?
Аноним 06/01/21 Срд 22:44:09 1903136660
>>1903105
Да не умел и думал там все еще похуже с копирастией и не было макбука и тд. И свифт не знаю.
А так, хз какой контент копирастский. Я бы с радостью его удалил, но если там такого больше 50%, то лучше пусть будет удаленная нах. Приходится ждать писем счастья, а копирасты сразу в гугл жалуются.

Возможно стоит портировать... В принципе идея, если гугл насовсем меня забанит навечно и мои акки, еще есть эпл. А забанить могут за пару страйков, как я понял.
Аноним 06/01/21 Срд 23:42:17 1903210661
>>1903061
Что за приложение? по тематике Какого рода контент был? Куда впиливал его и зачем? зачем тебе вообще мог понадобиться чужой контент?
>>1903136
>думал там все еще похуже с копирастией
Её нигде не жалуют
>не было макбука
Достаточно виртуалки
>И свифт не знаю
Он очень простой, это не должно быть проблемой
Аноним 07/01/21 Чтв 00:14:13 1903234662
>>1903210
тесты, психологические, кароч. С ними сложно потому что хуй поймешь что копирастнутое, а что нет, знал бы я, удалил бы все что копирастнутое и спал бы спокойно. Долго его пилил, даже свой тест пол года делал (который никто не оценил даже), все красивое было и вылизанное, 96 апдейтов было, один хуй, всему конец. Можно только перезалить приложение, но с другим названием и тд, но страшно. Если копираст пожалуется опять какой-то, то есть шанс бана аккаунта разраба, наверн. В гугл не пишут за что банят акки разрабов, пишет что за "вопиющие нарушения их правил", что значит за что угодно, они сами решают, по настроению. Наверное придется рискнуть, если что. А в случае провала сдаться эппл и запиливать игру (которую я возможно сделаю позже) в эпл стор.

ибифо: деванон тгавля
Аноним 07/01/21 Чтв 00:19:37 1903240663
Котаны, а не подскажите, как избежать бана приложения,которое предоставляет доступ к фильмам через торренты, используя базу данных рутрекера?
Аноним 07/01/21 Чтв 00:26:38 1903244664
>>1903240
не переводить на английский, хотя это чревато потерей львиной части дохода, но зависит от приложения. Наверное америкосы мало юзают торренты. И то наверное это только временно поможет. Лучше такие проги в интернете как-то распространять. Но пока что это успешно удалось сделать только hd videobox-у.

Часто проверять почту, мб кто-то напишет и предупредит что-то удалить, до жалоб.

Аноним 07/01/21 Чтв 01:45:34 1903270665
>>1903136
Эпл просто так не банит, но может доебаться при заливке в стор и не пустить прилагу или апдейт. У меня был подрыв жопы сперва, почему на Андроиде все можно, а эплу все не нравится, но если они без предупреждений страйк не кидают, то почему и нет. Ну и траффика у меня на эпл в 10 меньше
Аноним 07/01/21 Чтв 01:46:23 1903271666
Аноним 07/01/21 Чтв 09:11:57 1903366667
>>1903210
Нихуя свифт не простой.
Аноним 07/01/21 Чтв 10:59:20 1903409668
>>1903271
Даже в гугл поиске показывается. Недурно.
Аноним 07/01/21 Чтв 12:11:18 1903437669
>>1903366
И в чем же его сложность?
Аноним 07/01/21 Чтв 14:14:01 1903557670
Аноны, мне нужно что бы у меня модуль где-то в фоне качал что-то по FTP и периодически передавал это в рожу приложения. Что я пробовал.
AsyncTask, не походит т.к. у меня достаточно длительный процесс и нужно получать от GUI команды, т.е. если все скачалось, ждем команду на запуск работы. Собственно непонятно как в AsyncTask эту команду пробросить.
Затем смотрел всякие Looper, но тоже может не до конца разобрался.
В итоге решил попробовать оформить загрузку как Service, но не понятно, вроде пишут, что Service стартует в потоке GUI.
Аноним 07/01/21 Чтв 14:53:34 1903598671
image.png 89Кб, 1606x378
1606x378
Господа, спасайте, нужно разработать приложение на Android, срок 2 недели.
Суть: нужно парсить файл расписаний в excel и сохранять данные в БД, выводить в виде списка событий, также должен быть календарь для выбора даты из календаря чтобы просмотреть события в определенный день. + Отчеты по кабинетам из бд (свободные/занятые).
Почитал про Apache.poi (для работы с Excel) - говорят очень геморно использовать + у меня не получилось подрубить его к моей Android Studio. Знания основ программирования имеются (C++). На Java нет.
С чего начать? Куда копать? Что использовать? Выручайте!
Пример содержания файла прикрепил
Спасибо и с рождеством!
Аноним 07/01/21 Чтв 18:54:36 1903805672
>>1903598
Ищи другой парсер.
Используй формат csv
Аноним 07/01/21 Чтв 19:33:22 1903846673
Всем привет
У меня вопрос, как сохранять данные на фрагменте при повороте?
Кроме retainInstance
Аноним 07/01/21 Чтв 19:37:36 1903848674
>>1903557
rxjava(rxkotlin) посмотри, там можно сделать запуск по таймеру с интервалом
Аноним 08/01/21 Птн 06:50:11 1904293675
Поясните зачем нужен DiffUtils, когда есть ObservableList, который можно соединить с RecyсlerView и радоваться жизни?
Аноним 08/01/21 Птн 19:15:48 1904823676
>>1903136
На Айфоне еще хуже анальная модерация.
Аноним 08/01/21 Птн 19:55:57 1904894677
>>1903234

>96 апдейтов

Охуеть, представляю как это обидно. А заблокировали весь аккаунт или только удалили приложение?
Аноним 08/01/21 Птн 20:19:42 1904931678
>>1903061
А почему геймдев. В вебе будешь при деньгах или веб тебе вообще не нравится?
Аноним 09/01/21 Суб 10:46:52 1905365679
Cап, есть одна прога c открытыми исходниками на андроид. Нужно скомпилировать, как это сделать?
Мои знания это паскаль в школе и С++ в универе
Аноним 09/01/21 Суб 13:56:42 1905459680
>>1905365
Открыть в андройд студии не получается?
Аноним 09/01/21 Суб 13:59:59 1905462681
>>1905459
Я вообще в этом не понимаю, поэтому и спрашиваю что-то типо инструкции
Аноним 09/01/21 Суб 14:08:01 1905467682
>>1905462
Скачай андройд студию
Попытайся открыть папку с твоим проектом
В студии есть кнопочка чтобы всё собрать

если на каком то шаге что то не получается, вводишь в гугл android studio %описание проблемы%
Аноним 09/01/21 Суб 16:07:25 1905555683
>>1903061
Как альтернативный вариант можешь попробовать использовать App Gallery от Huawei. По сути можно просто апк загрузить и выпускать релиз на пользователях. Но если у тебя необходимо использовать какие-то гугловые сервисы, типа файрбейса, тогда на устройствах без гулосервисов работать не будет функционал и придется делать оптимизации под такие устройства.
Аноним 09/01/21 Суб 16:14:17 1905571684
>>1903557
Про асинк-таски давно пора позабыть. Сейчас для этого есть корутины, рхджава.

Сервис не отвечает за работу в фоновом потоке, а только лишь позволяет выполнять какую-то логику без привязки к UI (без activity). За выполнение длительных задач в фоновом потоке отвечает программист, который будет реализовывать эту логику через корутины, рхджава, хэндлеры, асинк-таски.
Аноним 09/01/21 Суб 16:15:29 1905574685
Аноним 09/01/21 Суб 16:20:54 1905582686
>>1904293
Проверяет список моделек в адапторе и новый список, который передают в адаптор. Проверяет есть ли отличия. Если два метода, в которых ты сначала проверяешь по некоторому id что это одна и таже модель, а во втором уже сравнение моделек по содержимому. Это позволяет оптимизировать перерисовку списков либо не перерисовывает его, если ничего не поменялось. Либо если поменялся только один элемент, обновляет его не затрагивая остальные в списке.
Не знаю что за ObservableList, но кажется это не имеет никакого отношения к DiffUtil.
Аноним 09/01/21 Суб 16:29:55 1905597687
>>1905467
Спасибо, получилось
Аноним 09/01/21 Суб 18:02:29 1905686688
>>1886544
Ошибку проанализировать ты конечно не додумался, ослоеб тупой. Действительно, кому всрался этот красный текст под названием ошибка? Так вот, еблан, все операции с сетью выполняются в отдельном потоке. Это бай дезигн. потом нужно... потом нужно послать тебя на хyй
Аноним 09/01/21 Суб 19:57:08 1905808689
>>1905582
>Не знаю что за ObservableList, но кажется это не имеет никакого отношения к DiffUtil.

Я пришел из шарпа. В шарпе есть есть ObservableCollection который биндится к списку в гуи и ObservableCollection кидает события своих изменений и гуи синхронно обновляет.

В андроиде я начал искать то же самое и нашел родной androidx.databinding.ObservableList
но начинаю искать как его биндить то к спискам, а нахожу такое
https://developer.android.com/codelabs/kotlin-android-training-diffutil-databinding#0

пожав плечами забабахал связь адаптера с этим ObservableList, где на события ObservableList дергаются адаптеровские notifyItem* (благо реализация элементарна)

Все работает, но у меня ощущение "в чужой монастырь со своим уставом". Вот и спрашиваю
Аноним 10/01/21 Вск 16:33:33 1906543690
Имеет ли смысл использовать Dagger2 для получения экземпляра базы данных вместо использования синглтона внутри класса для работы с БД или вызова ((Application) getContext())?
Аноним 10/01/21 Вск 16:39:00 1906553691
>>1905808
DataBinding обычно советуют не использовать, не самое лучшее решение от гугла.
Аноним 10/01/21 Вск 16:42:15 1906558692
>>1906543
Лучше передавать через конструктор нужные зависимости. Но с другой стороны если ты хочешь использовать DI для того чтобы просто предоставить зависимости для БД, а все остальное ручками делать тогда особого смысла не имеет.
Попробуй заюзать Koin тогда и для остальных зависимостей сможешь быстро разобраться как что куда прокидывать.
Аноним 10/01/21 Вск 17:10:17 1906590693
>>1906558
>Лучше передавать через конструктор нужные зависимости
Вопрос не об этом
>Но с другой стороны если ты хочешь использовать DI для того чтобы просто предоставить зависимости для БД
В этом нет необходимости. Мне нужно просто использовать Room везде, где есть обращения к нему
>Попробуй заюзать Koin
Да вопрос про Dagger

Ох уж эти диванные.
Аноним 10/01/21 Вск 17:23:01 1906615694
>>1906553
Кто советует? Мазохисты и любители портянок кода?
Биндинг это альтернатива ручному написанию связующих портянок
Аноним 10/01/21 Вск 17:26:20 1906620695
>>1906543
Если даггер есть то используется для всего чтобы получать зависимости, а не самому за ними ходить. А значит вопрос не стоит.
Аноним 11/01/21 Пнд 10:33:31 1907073696
Аноны, не пойму, зачем нужен Looper. Вот создал я поток, создал в нем handler и переопределил onHandleMessage. Периодически могу туда кидать сообщения из gui потока или не могу? Надо через Looper
Аноним 11/01/21 Пнд 10:56:10 1907086697
>>1907073
Пиздц, хотел ответить, но потом понял, что все забыл, хотя лет 5 назад плотно изучал, что-то делал на луперах даже
Аноним 11/01/21 Пнд 10:59:38 1907089698
>>1907073
Лупер вроде просто берет и обрабатывает сообщения в своем потоке. Сообщения кидаются через хендлер, хендлер должен быть привязан к луперу. Так гуи main thread работает, все события из ui обрабатывает ui looper. Лучше исходники глянуть конечно, там понятно вроде
Аноним 11/01/21 Пнд 11:05:48 1907092699
>>1907089
Хорошо, а если я просто создаю поток реализуя интерфейс runnable и создают там handler, не будет ничего работать?
Аноним 11/01/21 Пнд 11:42:18 1907109700
Аноны, а как в андроиде принято потокам одного приложения общаться? Это нормально если я например из одного потока в другой буду Intent слать.
Аноним 11/01/21 Пнд 17:52:25 1907589701
>>1907109
Интент это для межпроцессов
Аноним 11/01/21 Пнд 18:29:47 1907609702
>>1906553
Не соглашусь.
DataBinding + LiveData + MVVM = чуть ли не лучшая связка из того, что предлагается гуглом. Лучшая как в плане гибкости, так и в плане читабельности и простоты в реализации
Аноним 11/01/21 Пнд 20:28:33 1907769703
>>1907609
плюсую этого, особенно меня порадовало в свое время то, что рум умеет данные бд в лайвдату заворачивать и сам ее апдейтить после апдейта бд.

Сейчас еще планирую пощупать за вымя котлиновский флоу, интересно как он зайдет в сочетании с вышеперисленным в сравнении с рх (который конечно мощный, но из-за это слишком замороченный, имхо (как и даггер, лол)).
Аноним 11/01/21 Пнд 20:30:19 1907771704
>>1907109
Дохуя способов для различных случаев, оптимальный очень сильно зависит от задачи. Что конкретктно нужно сделать?
Аноним 11/01/21 Пнд 22:48:39 1907876705
>>1907609
> чуть ли не лучшая связка из того, что предлагается гуглом.
А что же еще предлагается гуглом?
Аноним 12/01/21 Втр 12:19:24 1908152706
>>1907876
все остальное, что было написано до этого. Оно ведь тоже предлагается, а не объявлено депрекатед.
Аноним 12/01/21 Втр 12:34:38 1908157707
>>1908152
> все остальное, что было написано до этого
Что именно? Последний раз гугл предлагал архитектуры в 2016 на контент провайдерах и лоадерах на гугл ио сайд проектик гуглеров архитектур семплс не в счет, они даже там писали не как все.
Аноним 12/01/21 Втр 12:35:47 1908159708
>>1908157
поддерживается в Android Studio считай как "предлагается"
Аноним 12/01/21 Втр 12:53:02 1908174709
Вот вам делать нехуй. Завтра гугл придумает новую либу, будете на нее дрочить. Ебашу по старинке на rx, ну и + Даггер. Заказчики довольны, рейты ростки, а на собесы в офис я хуй ложил
Аноним 12/01/21 Втр 12:53:29 1908175710
Аноним 12/01/21 Втр 12:59:26 1908180711
>>1908174
>Завтра гугл придумает новую либу, будете на нее дрочить.
ну либа либе рознь

Любители хардкора будут всегда. Некоторые и в блокноте пишут и в консоли дебажат. Но есть и нормальные люди.

Я вот в WPF много лет MVVM/биндинги и это просто небо и земля по сравнению с хардкодом. Посматривал давно на андроид, но писец в виде хардкода, безумия с лоадерами асинтасками и тому подобным сразу убивало все желание.

Забегал в xamarin, там тоже удобно, просто там другие проблемы

А вот котлин с его корутинами, мввм, биндинги - и уже вполне приятно писать под андроид стало.
Аноним 12/01/21 Втр 13:08:20 1908186712
>>1822731 (OP)
ПЕРЕКОТ https://2ch.hk/pr/res/1908185.html
ПЕРЕКОТ https://2ch.hk/pr/res/1908185.html
ПЕРЕКОТ https://2ch.hk/pr/res/1908185.html
ПЕРЕКОТ https://2ch.hk/pr/res/1908185.html
ПЕРЕКОТ https://2ch.hk/pr/res/1908185.html
ПЕРЕКОТ https://2ch.hk/pr/res/1908185.html
ПЕРЕКОТ https://2ch.hk/pr/res/1908185.html
ПЕРЕКОТ https://2ch.hk/pr/res/1908185.html
ПЕРЕКОТ https://2ch.hk/pr/res/1908185.html
ПЕРЕКОТ https://2ch.hk/pr/res/1908185.html
ПЕРЕКОТ https://2ch.hk/pr/res/1908185.html
ПЕРЕКОТ https://2ch.hk/pr/res/1908185.html
Аноним 12/01/21 Втр 13:14:57 1908191713
>>1908180
Лодеры и асинктаски только на заре ведроида юзались
Аноним 12/01/21 Втр 13:15:31 1908192714
А wpf вообще умер нахуй
Аноним 12/01/21 Втр 13:21:52 1908197715
>>1907876
Мне тебе тут все перечислять, лол?

>>1908174
>Завтра гугл придумает новую либу, будете на нее дрочить.
Да, представь себе. Когда работаешь с экосистемой гугла и продуктом гугла, то будь добр юзать то, что гугл предлагает. Можешь, конечно, не юзать, игнорить, но не ной тогда года через 2-3, когда на собесе у тебя спросят основные мастхев фичи в проектах, а тебе будет и сказать нечего
Аноним 12/01/21 Втр 13:36:40 1908207716
>>1908197
Зачем через 2-3 года ходить на собес в офис, если есть божественный upwork, с рейтами, которые тебе никогда не светят в офисе?
Аноним 12/01/21 Втр 13:36:47 1908208717
>>1908192
ага. а за мкадом жизни нет )))
Аноним 12/01/21 Втр 13:59:56 1908225718
>>1908207
Да что ты, мань? Ну вот моя ставка в офисе 2.5к. Сколько лет тебе придется набивать репутацию, чтоб дойти до этой цифры на апворке? Я уж молчу о том, что на апворке ты обречен вечно получать легаси говно и править костыли за кем-то, тем самым нихуя не развиваясь, как программист.
И тут не в том вопрос, чтоб каждые 2 года ходить на собесы, а в том, чтоб быть в курсе новых технологий и паттернов в рамках той платформы, с которой работаешь. Это как бы нормально для хорошего программиста.

Аноним 12/01/21 Втр 14:39:41 1908253719
>>1908225
Каждому своё, почти сразу на 20$/ч взял, после пары пустяковых заданий за 5 звёзд
Аноним 13/01/21 Срд 00:45:53 1908775720
>>1908225
Ты планируешь перекатываться в iOS?
Аноним 13/01/21 Срд 11:31:35 1908922721
Аноним 25/01/21 Пнд 14:24:32 1921104722
>>1836275
>2021
>использовать говно от джет брейнс вместо богоподобного эклипса
Аноним 25/01/21 Пнд 23:08:09 1921769723
>>1921104
Еще мавен вместо градла без каптов-хуяптов. Собирается на секунды.
Аноним 30/01/21 Суб 17:48:57 1926280724
Посоветуйте годные гайды по анимированию(через xml аним файлы)
Аноним 30/01/21 Суб 17:49:59 1926282725
>>1926280
> через xml аним файлы
Зачем?
Аноним 30/01/21 Суб 18:20:37 1926344726
>>1926282
хочу скрасить ожидания загрузки данных во фрагменте для юзера при смене фрагментов(нхочу добавить анимации при их транзакции фрагментов, использую navigation component)
Аноним 05/02/21 Птн 02:04:22 1930934727
>>1926344
на схеме фрагментов, потыкай на стрелочки, там можно выбрать анимацию появления/скрытия дефолтные
Аноним 05/02/21 Птн 13:04:01 1931211728
>>1930934
спасибо, но это энивей было понятно
почти сразу как вопрос задал начал внедрять анимации, в том числе shared element transition, охуенно
Аноним 21/02/21 Вск 22:20:17 1948722729
есть ли тут разрабы flutter. Как там обстоит дело с разработкой custom view и отрисовкой 60fps? Может кто-то запилить пример с кастомной вьюхой рисующей поле под крестики нолики?
Аноним 07/03/21 Вск 15:06:58 1959828730
15718907022772.jpg 72Кб, 604x499
604x499
Комрады, есть простой код который грузит контент из интернета в папку, которую выбирает пользак посредствам action_open_document_tree. Все выглядит вот так:
-пользак выбирает, что хочет загрузить
-выбирает куда, посредствам action_open_document_tree
-мы получаем treeURI-объект и отдаем его по интенту сервису
-далее, врубается foreground service и начинает все грузить с уведомлениями в трее.
Все это прекрасно работает на ведре с 6 по 10. На 11 ведре, если убить основное приложение, то сервис падает с ошибкой отсутствия прав на запись. Как я понял, ведро ебанное убивает объект treeURI, который мы получаем от action_open_document_tree. Пока приложуха не закрыта ее можно свернуть, главное не закрыть сервис работает. Как только приложуху убить, сервис падает сразу. Другие фореграунд сервисы из этой приложухи, которые не пишут файлы, робят нормально в фоне.
Можно как-то пофиксить подобное поведение уебанского ведра№11?
Аноним 21/03/21 Вск 22:43:13 1973626731
nnnn
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов