Тред для тех, кто пытается вкатиться в андройд разработку или что-то похожее. По возможности стараемся угощать ньюфагов чаем и поливать друг друга радугой.
В дальнейшем потребуется базовое знание SQL, понимание XML и JSON.
> Я прошел курсы Udasity, а дальше что? После прохождения курсов у тебя должно сложиться базовое представление о создании приложения; жизненные циклы Activity/Fragments, AsynsTask, Http, Json, SQLite. Дальше закрепляешь знания путем просмотра видосов выше + Написание парочку приложений на свой вкус. Так же стоит уделить внимание BroadcastReceiver, IntentService, поиграться с Loader's, хендлерами, Contest providers и прочее.
>Хочу изучать популярные либы и не быть говноедом! Если ты сразу после курсов переползаешь сюда - будь готов, что ты не будешь знать как это делается под капотом. Retrofit - стандарт для взаимодействия с сетью. Вместе с ней можешь изучать либу okhttp3. Так же для справки можешь гуглить volley. RxJava - тяжеловесная либа. Одно из решений для выполнения кода в бекраунде. [YouTube] KotlinConf 2017 - RX Java with Kotlin in Baby Steps by Annyce Davis - rxJava с нуля [YouTube] RxJava доставляет Артём Зиннатуллин - на русском [YouTube] Managing State with RxJava by Jake Wharton - rxJava [YouTube] Making Retrofit Work For You by Jake Wharton - retrofit
Неплохо было бы и изучить MVP. Для самообразования можно написать его голыми руками или прогуглить, как это делается.
> Есть что-то кроме нативных приложений на Java/Kotlin? - Flutter - кросс-платформенный фреймворк от Google. Js с аля строгой типизацией. Если совсем поехавший можешь начинать с него. https://flutter.io/docs/ - документация https://www.udacity.com/course/build-native-mobile-apps-with-flutter--ud905 - курсы от Udacity Остальные: ReactNative — мочаскрипт во всей красе. - PhoneGap/Ionic/Titanium — имя им мочаскрипт-младшие, принципы у них разные, первые три попытка в кроссплатформенность одного кода. Популярность у них разная как и размер комьюнити. Вопросы по ним — в js-тред. - Qt — кросс-платформенный фреймворк на C++. Используется в основном для игры и для приложений с высокими требованиями к производительности (обработка изображений, звука, ГИС-системы). Спрашивать в C++ треде. - Xamarin — кросс-платформенный фреймворк на C#. Представляет из себя обёртку над Android API. Куплено Microsoft. Теперь есть бесплатная версия. Спрашивать в C#-треде. - BugVM — кросс-платформенный фреймворк, написанный на Java. Форк невинно убиенного RoboVM.
> Хочу писать игры! LibGDX - слишком медленная параша для больших проектов, но познакомится можешь. Unity - для адекватных, Corona SDK, LOVE, Defold и другие. Спрашивать в /gd/.
> Что нужно, чтобы взяли джуниором? Что учить в первую очередь? Нужно хорошее знание Java, понимание базовых принципов Android (жизненный цикл activity/fragment, что такое Context, intents, services, UI thread, support library и ее версии, shared preferences, SQLite, Handlers, Executors, Content-Providers), знание популярных библиотек типа Retrofit + Glide/Picasso + RxJava2 + Dagger2(по обстоятельствам), понимания СОЛИД и других паттернов проектирования. И хотя бы несколько готовых приложений.
Сап, аноны. Этим утром удалили одно из моих старых приложений из google play. Написали мол реклама нарушала правила. Пользовался в данном приложении сервисом Appodeal. На других приложениях уже давно перешел на admob от гугла. Итак вопрос? Сильно ли это плохо для аккаунта? Притом что у меня очень давно блокировали приложение за неприемлемый контент. Бля, если аккаунт забанят, то новый потом и не создать и хуй че докажешь этим гуглам. Очень страшно, живу онли на доход с игор.
Допустим, есть app компонент - базовый. От него идет First SubComponent - а от него идет SecondSubcomponent. Я прочитал статьи, и соответственно когда у нас активи, например, закрывается, то чистим нам First SubComponent.
У меня вопрос: Нужно ли когда-нибудь чистить SecondSubcomponent и в каких случаях?
Анон, дай правильное направление мысли... https://pastebin.com/6N7qVrVa Создаю класс видео плеера ExoPlayer. С использованием DI Koin делаю этот класс синглтоном и инжект во врагменте. Передаю в метод ссылку на видео и view плеера. Запускаю аппу все работает. Делаем поворот экрана и получаю наложение звука, т.е. у нас создался еще один экземпляр плеера. Сейчас сижу и думаю, что проебался где-то на элементарной хуйне, но хз как гуглить.
>>1272227 Ты нахуя ExoPlayerFactory.newSimpleInstance вызываешь каждый раз? Не забывай, тебе ему еще release нужно не забыть вызвать, когда все отыграешь.
начал изучать rxJava делаю запрос в сеть,подписываюсь .subscribe (s->temp=s.getValue().get(symbols).toString()) ; return temp; получаю результат. НО получаю старый,то есть обновляется ,тогда когда делаю повторный запрос.Как сделать что б сразу получать результат. Как исправить ,плиз.?
>>1272658 Глянуть все 17ые строки где фигурирует TextView, похоже ты без сапортной либы пытаешься что-то новое в xml сделать. Посмотреть версии и прошики, сохранять кастомные ключики типа емэйла или userId (если есть) в крашлитику, возможно что бы связаться с юзером.
>>1273118 >использовать логи для дебага полохо? Когда ты войдешь в андройд дебаг, логи писаться не будут. Хуй знает как на других платформах, т.к. сижу онли на андройде.
>>1273247 Что? У меня все пишется вроде. >>1273118 Тут я бы больше поставил акцент на 'printf' - вообще никакое не решение, ни тебе тегов, ни контекста, ни в файл записать, без буфера и тд. Ну и вообще ты заебешься собирать проект после добавления каждой строчки логов. чем негодила светлая тема - не понимаю, раньше сидел на темной, сейчас на светлой, биг дил бля
>>1273403 Обновить как? удалить и поставить новый? Никогда с этим не сталкивался, я бы еще переустановил андройд, если не помогает. В настройках еще посмотри, когда создаешь авд, мб что там есть.
Привет, антоны. Хочу сделать себе йоба-галерею с ресайклером и пейджером в детальном просмотре. Нашел работающий гугловский пример - https://github.com/google/android-transition-examples/tree/master/GridToPager. Вот только я уже 3 раза пытался его реализовать в своей приложухе, и каждый раз там что-то не работает что-то разное (а то и вообще падает с ебанутым НПЕ из недр андроида), да и к тому же приходится нуллить адаптер ресайклера, иначе выскочит ООМ. Может, кто-нибудь знает пример получше? инб4 неосилятор
>>1273555 >каждый раз там что-то не работает что-то разное Берешь и идешь по шагам. Проговариваешь - так эта фоточка идет сюда, здесь сохраняю - а здесь получаю пизды.
>Может, кто-нибудь знает пример получше? Все примеры идут из доков или же от умных людей, которые набили шишку. Но они как правило чсвшные. Можешь этот брать. Или код скинуть сюда, хотя бы в пастербине.
Кстати, я тут очень занят, как все сделаешь - проверь работу не с фрагментом, а с dialog fragment. Будет ли туда эта параша передаваться или нет?
>>1273595 >> 2018 >> фрагменты Тебе что-то не нравится? Я тоже могу пиздеть, 2018 - переворот активити. 2018 - дохуя либ, которые гугол рекомендует, чтобы покрыть костыли. Андройд вообще параша, что тут говорить. До 6.0 используется интент сервис, с 6.0 джоб, и то, он ПРОСТО так крашится с НПЕ в любом случае. с 8.0 work manager и прочая хуйня.
С октября месяца чтобы релизнуть апп нужно поставить мин сдк что-то там 24 что ли или что-то вроде того.
Вышел из приложения, постоял 20 минут - зашел - активити убито и тупо все данные улетели. Ничего не работает нормально.
Я тоже могу расписывать, а не решать проблемы, так что соси хуй. Я не жалуюсь на фрагментах, я же не делаю одно активити, если бы делал, то взял бы цицероне.
>>1273752 Ну инжект в аттаче, он вообще лишь раз вызывается. И, кстати, я для DI не только даггер использовал, и все равно результат тот же. Но окей, попробую ручками все заинжектить, спасибо за идею.
>>1273752 >>1273764 Проинициализировал презентер вручную, бага не исчезла. Так-то мне кажется, тут где-то собака зарыта в маппинге элементов, но вполне вероятно, что я ошибаюсь.
>>1273779 >Так-то мне кажется, тут где-то собака зарыта в маппинге элементов, Ну я тоже так думаю. Посмотри момент в коде, как закрывается, у тебя image view исчезает.
>>1273823 >Бага пофиксилась после того, как я задал ресайклеру атрибут paddingStart. Пиздец Что? На что это повлияло? Как атрибут в разметке может помочь, кек.
>>1273823 Лол, не пытайся использовать падинги для красоты в ресайклере. Маржины в элементах иногда можно, но лучше конечно ItemAnimator, хотя у вот как-то повторял айсовский механизм инсетов для ресайклера и наблюдал крайне странное поведение из-за которого пришлось частично вернуться к маржинам в элементах. >>1273896 Возможно из-за того что анимация по координатам не сходится.
>>1273899 Так я и не пытаюсь, у меня просто анимация из-за этого не работала. Да и вообще, для красоты можно использовать. ItemAnimator и ItemDecoration.
>>1273899 > ItemDecorator Срань, начинаются анальные боли, когда тебе нужный разный отступ в зависимости от предыдущего или следующего элемента. Например, от хедера тебе отступ не нужен, а от другого такого же элемента нужен. Если у тебя хедер ремувится, то тебе нужно явно вызывать notifyItemChanged элементу, у которого динамический отступ, иначе он не пересчитается.
>>1273930 У меня там была какая-то хрень что отступы заданные через ItemDecorator влияли на внутренние констрейнты во вьюхе холдера. Ну вообще разве DiffUtil не решит той проблемы что ты указал?
>>1273942 Нет, там же у элемента за хедером не вызовется notifyChanged. Он же не поменялся, а просто хедер был удален, кроме notifyRemoved ничего не будет.
Я сейчас в итоге необходимость отступа формирую на уровне презентера и пишу в поле элемента списка. А сам отступ паддингом или марджином элемента, в зависимости от внешнего вида. Тогда это поле учитывается в диффутилах и все нормально нотифаится. ItemDecorator соотвественно не использую.
>>1273930 Еще вспомнил кейс, полный анальной боли.
Берем обычный гридлейаутменеджер. По материал сетке, там слева 4 дп, между элменетами 4 дп и справа 4 дп. В итоге в getItemOffsets можно это нормально просчитать через view.layoutParams as GridLayoutManager.LayoutParams, благо там эта информация есть. В итоге пихаем такие самому левому лево 4дп право 2дп, центральные 2дп, самый правый 2пд и 4 дп. Удаляем элемент из списка, делаем notifyItemRemoved, а у остальных отступы нихуя не пересчитались, и все едет по пизде.
>>1270595 (OP) Анчоусы, недавно вкатился в офисную разработку под ведро. До этого ток для себя писал
И это какойто ПИЗДЕЦ, блять, такое говно, просто яебал
Джун тащит в проект любую бяку, какую найдет и даже не может нормально реализовать. Уже втащил MVP, DAGGER, RX и нихуя из этого нормально не сделано. Полное говно.
>>1273987 >Уже втащил MVP, DAGGER, RX и нихуя из этого нормально не сделано. Полное говно. Ну ты же сам джун, если недавно вкатился. И тащемпа у всех по говнястому реализовано. Там же заказчики сроками ебут. Вот у меня на работе - я сам и дизайн делаю и сам пишу в одиночестве.
Перестал работать линк на R, при этом проект собирается и все работает, клин\ребилд\инвалидейт+рестарт не помогают. Студия 3.2. Как починить, кто сталкивался?
>>1273993 >если бы не было MVP, Daggerа и RX было бы намного чище ПХАХАХАХХА. Я знаю как чище. Берешь. отрубаешь orientation в каждом активити. Пишешь все инстансы ретрофита хуита в Апп, а остальное говно в активити. Это как раз называется у даунов МВС. Вот тогда ЧИЩЕ.
>>1274054 >Теперь еще и все импорты отвалились, я ебал так жить. рофлишь что ли? Все нормально работает. Хотя поначалу когда я вкатывался тоже горел со всей этой хуйни.
>>1274160 Можно, но не нужно. Почитай про ViewHolder pattern и используй ресайклер. А для общения с контейнером ресайклера используй интерфейсы. если все же хочешь упороться - делай через пустой FrameLayout, в который пихаешь фрагмент через транзакцию
Сап. Гугол выкатил новый виджет BottomAppBar. В гайдлайнах к нему идёт красивый drawer, а как его нормально запилить найти не могу. https://material.io/design/components/app-bars-bottom.html#behavior Если кто-то делал - поделитесь плз. BottomDialogFragment имеет конченную анимацию (или можно как-то сделать плавно?) BottomSheetBehavior - впринципе можно использовать, но придется его перепиливать, тк задуман он для другого.
>>1274305 > BottomSheetBehavior - впринципе можно использовать, но придется его перепиливать, тк задуман он для другого. С чего ты взял? Да и у фрагмента фиксится анимация, нужно просто сделать свой диалог фрагмент, выключить ему анимацию, и боттомшит, который там используется инициализировать с состоянием хидден, а в онстарте перевести в экспандед.
>>1270595 (OP) Что вообще в ведре по отладке чужих апк? Есть вообще нормальные дебаггеры, чтоб я мог как на винде ида про/x64dbg взять и поковырять что хочу?
>>1274700 >Зачем вы пишите что то? Фуксия скоро убьет андроид и оставит вас без работы Зачем ты живешь вообще? Человек существует около 70 лет на этой земле и дальше растворяется на атомы, а там и на более мелкие частицы. Зачем ты каждый раз встаешь по утрам? Зачем ты вообще что-то делаешь, если скоро сдохнешь?
>>1274898 >Ты опять за свое? Котлин же экономит кучу времени. Пока ты учишь котлин, дарт встает на ноги и даст пососать уже через год-два. Гугол бросит всех разрабов, тогда андройд рухнет и очень много людей пострадает от этой хуйни.
Разобрался до конца в handlers, runOnUiThread. И у меня вопрос. Почему люди отказались от них? В большинстве случаев приходится лишь обрабатывать ответ с сервера или постить данные. Почему ими уже никто не пользуется? Какие нетривиальные задачи нельзя ими разрешить?
>>1275629 >Если б разобрался, не спрашивал бы. Просто так спросил, чего плеваться-то. Я уже и сам понял. Через полгода пора бы выучить котлин и на корутины пересесть.
>>1275646 > Через полгода пора бы выучить котлин и на корутины пересесть Посмотрел видосик про курутины от е-легиона. Просто пиздец, нахуй так жить? Ну да, можно некоторые вещи писать в императивном стиле, только при этом ты теряешь всю мощь рх, даже блять банальный дебаунс нужно самому велосипедить. Есть рх, дефакто стандарт индустрии, нет, не хотим, хотим хуйню.
>>1275672 > только при этом ты теряешь всю мощь рх, А в чем эта мощь? Если ты обволакиваешь целые проекты реактивщиной, то нечего и переживать. Люди, которые втягивают такую либу ради гет пост запросов - ну такое себе.
Вы дауны, кто сравнивает rx и корутины, это разные уровни абстракции и разные области применения. Новая версия rx, кстати, будет реализована на корутинах.
>>1275675 > Люди, которые втягивают такую либу ради гет пост запросов - ну такое себе Только потом твои гет пост запросы потом становится легко использовать в более сложных кейсах. >>1275680 Хуякции. Их сейчас форсят именно как замену рх. > Новая версия rx, кстати, будет реализована на корутинах. Пруфс?
Есть ли возможность сделать transition на dialog fragment? Мне важен переход image view в этот DF. На стековерфлоу один ответ и то, даунский - смотреть примеры от гугла. Я применил их. Отличие в том, что, если показывать DF - то нужно объявить метод show у него, в гугле же все делается через getSupportFragment(), я делал через последний и у меня диалог фрагмент превращался в обычный, но мне нужно чтобы был именно диалог. В какую сторону копать?
>>1275762 Емнип, в метод show() можно передать либо саппортФрагментМенеджер, либо саму транзакцию. Можешь попробовать запихнуть туда транзакцию с транзишном и посмотреть, что получится. Кстати, если получится, то отпиши итт, мне интересно, но проверить времени нет.
>>1275938 >можно передать либо саппортФрагментМенеджер Нет, я пробовал. Привязывал к диалог фрагменту setSharedElementEnterTransition, после всех аниманий вызываю show и передают туда тракзакцию свою. В итоге ничего не крашится, но диалог показывается как обычный диалог без всяких пистелок свистелок, который были добавлены в транзакцию.
>>1275951 >Значит сделай обычной фрагмент. Тогда как мне объединить в viewPager методы addPagerChangeListener и onTouchListener в view Pager? Сейчас думаю, что нужно перелистывание реализовать в onTouch только хуй знает как это делать пока.
>>1275968 А нет, это я понял. Меня больше интересует, можно ли fragment сделать transparent? Диалог конечно же можно. Там просто getDialog.getWindow устанавливается бекграунд и рутовый леяут устанавливается в определенную альфу. Пытался такое провернуть с фрагментом - не получилось.
Паскудная хуестудия после обновления до 3.2 вынесла к хуям с тулбара кнопки Undo и Redo, оставив вместо них бесполезную хуйню Back и Forward. Как сделать обратно? Тыкать шорткаты на клаве не предлагать.
>>1276210 Да, чертовски важны. Особенно, когда накодил хуйню, и понял это только после того, как уже переписал кусочек. А переписывать его по памяти лень или чревато багами. Или переписал, и засомневался, не лучше ли было оставить старое? Впрочем, я уже вернул как было. Хз, зачем гугломразям было их убирать.
>>1276211 Да и банальнейший пример - выделил кусочек в порыве страсти, он оказался большим чем нужно примерно на пол класса, и был нечаянно удален. Делать мне вот больше нехер, выплясывать на клаве шорткаты, чтобы вернуть все на место. Хочу давать пальцам хоть иногда отдых, а не воспоминать пердолево в cmd.
>>1276213 Предлагаешь лезть в менюшку за этим, когда раньше было прям на тулбаре? Новые хромотренды ебучих дизайнеров, прятать все в 100500 подменюшек, чтобы все охуели, как могут. А возвращается так ПКМ на тулбаре - Customize Menus - Main Toolbar - Add After - Main Menu - Edit - Undo/Redo
>>1276219 Нажать две кнопки на клаве или одну на мышке? Да еще и в зависимости от того, Undo или Redo - нужно жать две или три кнопки на клаве для совершения, в общем-то, идентичных действий. Интерфейс не один и тот же выходит ведь, контракт нарушен.
>>1276221 Двигать ебаную мыш, в поисках кнопки через весь монитор, вместо того, чтобы быстро нажать на клаве 2 кнопки, когда рука уже лежит на клаве - страдай, хуле
Здравствуйте. Затупился в одном моменте. Использую в приложении какое-то 3rd-party говнище на базе ImageView, но только с ресайзом. Хочу по лонг клику вызывать контекстное меню, но не выходит. Вроде выяснил, что все дело в GestureDetector, который там что-то перехватывает, чтобы я не мог тупо registerForContextMenu() Попытался просто через setOnLongClickListener сделать, но не взлетело. Никак не гуглится способ вызвать контекстное меню без override onCreateContextMenu()
Как можно определить, что два телефона находятся очень близко? Не требуется знать их координаты, нужно просто определить, что два телефона находятся на расстоянии 50см и меньше ну или хотя бы меньше метра. Может для этого нужно использовать звук? Тип один телефон издаёт звук и если другой телефон его услышит, то тип близко находится. Или "выцепить" этот звук из окружающего шума не реально?
>>1277029 По блютузу не выйдет. Мощность сигнала сильно варьируется от устройства к устройства и по мимо этого есть ещё куча параметров, которые влияют на мощность сигнала.
>>1277037 > По блютузу не выйдет. Nfc - не блютуз, почитай про него. >Мощность сигнала сильно варьируется от устройства к устройства и по мимо этого есть ещё куча параметров, которые влияют на мощность сигнала. Ну а это вообще пушка. Знаешь ответ на вопрос, сколько требуется программистов, чтобы вкрутить лампочку в люстру?
>>1277145 > Знаешь ответ на вопрос, сколько требуется программистов, чтобы вкрутить лампочку в люстру? Ноль, т.к. нужен один офис-менеджер. >>1277029 НФЦ же до 20 см, так и нет поддержки большинства девайсов, особенно любимыми в нашей стране ксяоми. Хотя задача у него довольно специфичная, может там под заказ мобилки будут.
>>1277161 Ну так и я о том же, если проблема аппаратная, то решает ее не программист. Ты говоришь, что сделал обнаружение устройств с использованием технологии, разразработанной именно для этой задачи, и тебя не ебет, что дальше. Да и вообще, что за хуйня, искать устройства рядом по звуку? Это как будто хранить 10к записей в SharedPreferences вместо SQLite. А если менеджеры начнут доебываться что устройства с нфц ДОРАХА то скажи им чтобы попробовали абак вместо экселя, хуле, функционал схожий.
Ну или вот амазоновская кнопка (ты покупаешь кнопку для порошка и когда нажимаешь ее возле телефона она связывается с твоим аккаунтом и регается в вайфае) тоже по звуку конектится к девайсу.
>>1277145 Хорошо, прочитаю про Nfc, но 20 см - это слишком мало для моей задачи. >>1277161 >НФЦ же до 20 см, так и нет поддержки большинства девайсов, особенно любимыми в нашей стране ксяоми. Хотя задача у него довольно специфичная, может там под заказ мобилки будут. Нет, мобилки у меня абсолютно обычных людей. У меня в планах разработать игру, для которой мне требуется определить, что два человека находятся очень близко. >>1277218 Читал эту статью. Их проект, насколько я знаю, сейчас закрытый и его можно использовать только на коммерческой основе. Мой проект бесплатный. Кроме того, их метод обнаруживает в радиусе 5 метров, а мне нужно сделать проверку в радиусе 50-100см. Про кнопку в первый раз слышу. Будет ли она работать при окружающем шуме? Моё приложение должно работать в торговом центре, где, обычно, стоит гул.
>>1277369 >Про кнопку в первый раз слышу. Будет ли она работать при окружающем шуме? Моё приложение должно работать в торговом центре, где, обычно, стоит гул. Хуй знает, на ведре она работала через nfc/блютус, а через звук на iOS, ну мы впринципе были в небольшой комнате, обычный разговор выдержала. Там же звук совсем на других частотах, ей скорее какие-нибудь траснформаторы бы помешали наверное.
>>1277377 Выше уже писал, что по блютузу тяжело судить о том, насколько близко находится человек >>1277384 Я, наверно, хуйню спрошу, но можно ли создать на телефоне такой звук, который человек не услышит?
>>1277461 Вряд ли, я не гуглил, не думаю что слишком сложно, нужно записывать семплы микрофоном с каким-то интервалом который раз в десять (пусть с гаком) больше длины сигнала. И так пару раз послушать. Потом сравнить с эталоном. >>1277444 Ну хз, вроде как аудитрек достаточно низкоуровневый, может даже в нативщину не придется лезть, в крайнем случае можно его скачивать/бандлить с девайсом. Вон на телеках/рекламных стендах всяких прошаренных во время рекламы звуки проигрывают, а сдкашки на телефонах их ловят.
>>1277479 >Вряд ли, я не гуглил, не думаю что слишком сложно, нужно записывать семплы микрофоном с каким-то интервалом который раз в десять (пусть с гаком) больше длины сигнала. И так пару раз послушать. Потом сравнить с эталоном. До этого я и так догадался. Проблема в том, как выделить звук на фоне окружающего шума. >>1277479 >Вон на телеках/рекламных стендах всяких прошаренных во время рекламы звуки проигрывают, а сдкашки на телефонах их ловят. Шо? Чёт первый раз про такое слышу
>>1277444 Ты занимаешься хуйней. Игры не стреляют, либо ты вкатываешься, либо дрочишь какую-нибудь парашу. Более чем уверен, что ты даже писать ничего не начинал.
>>1277538 У меня и нет планов, что бы это выстрелило. Пусть даже её вообще никто не скачает. Мне просто нужно написать игру. Собственно, да, ещё не начинал, потому что пытаюсь понять, реален ли этот проект и стоит ли его вообще начинать. >>1277569 Спасибо
Есть код в активити сразу после setContentView(): >Perdol.start() //да, без аргументов, без передачи активити/контекста Задача: вызовом этого статического метода start() детектить эвенты тапов на view И получать поля этих view (например, текст, если это button или просто id). Как бы вы это сделали?
>>1278169 Нужно получать каждое событие тапа (или хотя бы ACTION_DOWN). Это нужно например чтобы знать, куда пользователь кликает. Но нужно сделать это не просто ручным навешиванием листнеров на все view, а единственным вызовом в активити метода >Perdol.start() внутри которого происходит аркейн-магия, которая позволяет видеть (в logcat'e, например) все тапы и инфу о view, на которую тапнули.
>>1278092 Никак. Ты же у мамки хакир и не научился нормально работать со smali, чтобы инжектить что-то кроме статических вызовов без параметров? Иначе твоя задача вообще не имеет смысла в такой формулировке.
>>1278188 Ничего инжектить не требуется, требуется вызвать в своём коде Perdol.start() и начать видеть все тапы (или хотя бы часть?). Сейчас не важно, имеет ли смысл задача, сейчас важен способ её выполнения. И то что это сделать возможно - инфа 100%, вопрос КАК
>>1278281 Потому что блять. Вангую что ты ребенок дауненок.
>>1278190 > и начать видеть все тапы Задавай вопрос на реддите. Как узнаешь что, можешь сюда отписаться. Мне интересно, но чекать сам конечно же не буду.
>>1278092 Если в метод start() нельзя ничего передавать, то его пердоль нужно оформить синглтончиком со ссылкой на контекст приложения, а затем с помощью контекста вешать лисенеры на все вьюхи. Если передавать можно, то передавай контекст или, лучше, рутовый леяут, затем получай список детей и рекурсивно по ним проходись, если ребенок - вьюгруппа.
>>1278326 оформить синглтончиком со ссылкой на контекст В том-то и суть, что нельзя ссылку на контекст ему давать. Должен быть исключительно голый Perdol.start() и ни намёка на передачу параметров. Хитрые еврейские ребята из appsee так сделали, чем лишили меня сна. Мало того, что у них все тапы, свайпы по всем вьюшкам детектятся одной единстивенной(!) строчкой кода Appsee.start(), так они ещё и видео и скриншоты приложения делают. А исходников нет, они всё обфусцировали вжопень.
И единственное до чего я дошёл, так это до анальных контузий с MainLooper'ом и рефлексией, которой, отсеивая тонны сообщений лупера, можно поймать такие сообщения, которые содержут в себе ссылки (естественно непрямые, там тоже попердолиться рефлексией пришлось) на активити, которая породила это сообщение.
Но это очень нездровая ситуация, хотелось бы верить, что хитрые евреи сделали что-то по-проще.
>>1278337 Прыгай от com.appsee.bb класса. Потыкай туда брейкпоинты. Там как минимум работа с определением нажатой вьюхи и выковыриванием атрибутов из нее.
>>1278362 Охуенно, спасибо. Они, оказывается, вешали Window.Callback, а не на каждую вью листенер. Но остаётся вопрос, как именно они получили этот window из статического класса без ссылок на контекст.
Полистал я гугл плей и увидел дохуя откровенно плохих и бесполезных приложений, которые неплохо так скачивают. Тесты какой ты ободок от унитаза, блядь, иконы, всратые поздравления.
Есть ли смысл выкатывать подобное говно в маркет? Или получу 0 скачиваний и буду сидеть грустный? Можно ли завести несколько аккаунтов разработчика? Один под откровенное говно, другой под продукты за которые не стыдно.
Насколько разумно пилить UI нативного приложения для ведра на React Native или Flutter? И если хоть немного смысла это имеет, то что всё же лучше учить начинающему разработчику?
>>1279035 >>1279043 Всё говно и кроме как для поиграться не нужно. Учите основы, а в модных свистоперделках потом разберётесь, если вообще это когда-то понадобится.
>>1279035 > то что всё же лучше учить начинающему разработчику? Что хочешь то и учи. Реакт никогда не взлетит, кто бы что не говорил. На флуттер смотреть еще рано, пусть еще 2 года пройдет и посмотрим. Еще годик два можно вкатываться в андройд, а дальше нельзя.
Какие, кроме jdeferred, есть варианты для запихивания результата асинхронной херни в объект? Ещё нужно чтобы была возможность скомпоновать несколько таких результатов в один - типа как settle в jdeferred или Promise.all в жс.
>>1279595 >Тогда разве не стоит всерьёз заняться flutter Если бы мне было 12 лет я бы занялся, в чем проблема? 5 лет это очень долго, даже Вартон не занимался дартом. А мне уж и тем более это нахуй не сдалось. Вон умеешь клепать на андройде и иосе - и норм. Если андройд закроется - просто перекатишься в иос и потом подучишь дарт (если это конечно же будет очень важно) и все.
>>1274916 Не будет, не думаю что kotlin-native успеет и не думаю что гугл будет добавлять jvm в дистрибутив как бы весь поинт как раз слезть с jvm
И даже если kotlin-native успеет, то он будет ограничен своим текущим синтаксисом, создаваемым по сути для jvm и IDE. Что выглядит все больше как фикс-джавы, чем полноценный native язык.
Другая проблема, которая в корне зарешает, это то, как вообще обучать народ котлину, если предварительно человека надо вкатить в джаву, в его инфраструктуру и прочее - это мега оверхед
Я бы ставки делал на js, может даже dart, в край ts.
>>1279808 Но не скрою, поддув от котлина сильный, даже народ сердечки рисует что конечно пиздец и вызывает только испанский стыд, но заливают его хорошо что лично у меня вызывает больше остороженность к хайпу
Что вообще котлинконф годного принес в этом году? На радио-т что-то ржали про анонс целой веб-странички, а реально какие-то движения есть?
Нужно провернуть такой кейс: есть переменная play = true. Когда у нас происходит изменение конфигурации(поворот экрана) эта переменная должна оставаться в том же значении. Когда активность приостановлена и не в фокусе, то переменная принимает значение play = false. Что пробовал сделать и почему мне нужно реализовать первый кейс: когда в onPause выставляю значение переменной play = false, а при возврате в активное состояние в onResume true, то при повороте экрана идет небольшая задержка и звук приостанавливается, пока повторно не вызовется метод onResume.
>>1274738 >вон дауны котлин учат Зачем учить котлин, если до этого писал на джаве, а тем более на 8 с ее элементами ФП? 400 страничной книги от разрабов языка хватает, чтобы вкатиться.
>>1274700 >Фуксия скоро убьет андроид Так скоро это когда? Мне 3 года сидеть на жопе и ждать ее релиза, вместо того, чтобы перекатиться с андроида? Ты дурак?
>>1279959 Причем тут флаттер, флаттер это второсортный фреймворк для ведра и айоси. Или под эту вашу фуксию будет тот же флаттер? Есть разница между конкретно флаттер и дарт.
>>1279970 Новая ОС может и не взлететь, а Андроид так просто не уйдет - всякие самсунги и хуявеи так просто свою дойную корову на колбасу не пустят и вполне могут продолжить разработку. А вообще, жс всех переживет, конечно.
Короче, на стартовом экране есть список созданных документов. Мне нужно, чтобы помимо списка была маленькая кнопочка, которая открывает меню настроек.
Абсолютно все туториалы/примеры/документация рассказывают, как прилепить на экран здоровенную конскую ебанину по типу той, что слева на пикрелейтед. Она мне нахуй не упёрлась, от неё мне нужна только маленькая кнопочка.
Короче, нужно сделать как справа. Как это делается лучше всего?
Делать тулбар прозрачным нельзя - мне нужно, чтобы элементы списка оставались кликабельными и не перекрывались тулбаром. Плюс мне нужно, чтобы иконка была на фоне кружочка, а не висела в воздухе просто так. Делать кнопку через FloatingActionButton нельзя - гайды по материал дизайну советуют помещать только одну такую кнопку на экран (а одна такая кнопка у меня уже есть, в правом нижнем углу).
Решил вкатиться в программирование с Flutter'a, пилил проекты в надежде на небольшой доход для поддержания жизни, не взлетели. Попытался найти фриланс - тут то я и обосрался. 2-3 проекта в день на апворке с охуевшими требованиями, ±0 проектов в месяц на РУ биржах. Не повторяйте мою ошибку, учите джаву или котлин.
Что-то не выкупаю как простую штуку на rx замутить. Нужен такой Observable который при каждом следующем запросе на эмит либо возвращает уже существующий успешный результат запроса, либо делает запрос, запоминает его результат (успех или ошибка) и пробрасывает дальше. То есть состояния такие: initial (I) - начально состояние error (E) - была ошибка, придется провести запрос еще раз success (S) - збс, запрос завершился успешно, впредь всегдва возвращаем только это значение.
Я в принципе вижу как это можно сделать на Observable::generate, но ведь там внутри generate нужно все синхронно провести, а я хочу воспользоваться обсерваблом из ретрофита.
>>1280226 Для начала давай определимся что такое нормальное приложение. Делал например приложение с аудиокнигами - наебался всласть с плеером. пофиксить никак, на джаве же всё блять. Прикрутил туда фаербейз, какую-то анимацию, адмоб. Короче пытался скил немного прокачать. Делал проекты по заказам от знакомых - простые контентные, где-то json спарсить, где-то прикрутить формы. Короче ничего сверхъестественного, но обратного я и не утверждал.
>>1280492 Сколько раз говорить одно и тоже. Если ты разрабатываешь все что угодно под андройд - ты подписываешься на бесплатность. Сколько раз еще можно это говорить? Все андройдеры бомжи, не имеющие деньги. Бомжоящере. Бомжы!
Весь доход идет с иос и только с него, ибо там привыкли жрать говно!
>>1280492 >>1280506 Просто нужно понять, что разрабатывать приложения под андроид - это один скилл. А создавать прибыльные продукты - это совершенно другой навык. И они никак не связаны. Умеешь делать первое - найди работу и спокойно пиши код за деньги, не парься над продвижением, законами, бухгалтерией, налогами. Умеешь делать второе - найми разработчика и не еби никому мозг.
>>1280508 Ну вот насколько реальный сценарий: допустим я пишу оч удобное приложения для будильника, или погоды, похуй. Естественно я ориантируюсь на западный рынок, но в моем приложении будет кнопочка, где я расписал пасту, которая вызывает скудную слезу у клиентов и они могут придонатить мне 1-5 доллара-евро за бесплатность приложения, такое имеет право на жизнь?
>>1280512 >кнопочка, где я расписал пасту, которая вызывает скудную слезу у клиентов и они могут придонатить мне 1-5 доллара-евро за бесплатность приложения Ты 1-5 долларов и получишь. Суммарно.
Лучше воткнуть рекламу и/или премиум версию замутить и не изобретать велосипед. >я пишу оч удобное приложения для будильника, или погоды, похуй. За время написания и отладки "оч удобного будильника" можно разгрузкой вагонов заработать в 50 больше чем ты поднимешь с маркета.
А с учетом что будильников или погодных виджетов там миллионы, то ты либо выкладываешься в продвижение и уходишь в минуса, либо имеешь 15 скачиваний в неделю.
>>1280524 >Даже конченный дебил клепает простейшие игры для дошкольников/офисного планктона и зарабатывает 500$/наносек. На последнем Гугел ИО говорили, что только 30% всех игр в маркете приносят прибыль. 70% лежит мертвым грузом.
>>1280360 Не, а зачем мне вообще делать это профессионально?
Мне понадобился инструмент для решения определённых задач и я решил его написать. То же самое происходило и в 2016, и в 2014. В перерывах между этими этапами мне никакие инструменты нужны не были. Проблемы?
Хочу запилить панель поиска как в 2гис или ГуглМапс. Есть главный экран с моей картой/картинкой, наверху поверх картинки - тулбар. При клике на тулбар открывается searchView, но при этом открывается новый фрагмент с предложениями или сохраненками, полностью перекрывающий картинку. А при вводе запроса открывается список предложений. Это действительно открывается новый фрагмент каждый раз? В таком случае как наладить общение между searchView и фрагментом (по вводу запроса фильтровать suggestions)? Или это кастомная вьюха и не стоит вскрывать эту тему?
>>1270595 (OP) Cкладывается ощущение, что шапка написана джава-ублюдками. Почему то про ламповые PhoneGap и Angular, на которых делать приложение намного проще и быстрее не упоминаются вообще.
>>1281135 >Посоны, сколько в среднем по времени потребуется перекатиться из вэба в андройд? 3 месяца по 8 часов в день.
>>1280974 >Почему то про ламповые PhoneGap и Angular, на которых делать приложение намного проще и быстрее не упоминаются вообще. Первый раз слышу. А кто-то еще разрабатывает приложения исключая андройд студию? Земля вам пухом.
Друзья мои, занимаюсь веб-макакингом шарп два года, хочется попробовать что-то новое, а именно Андроид. Проблема в том, что я аутист, и у меня совершенно нет идей что именно делать. Подскажите пожалуйста.
Господа. Почему-то AVD крашится и в логе пишет вот это: https://pastebin.com/DDmRy3hr - в чем может быть проблема? Пытался запустить эмулятор Pixel 2 API 28 через Hardware. Остальные устройства на которых можно выставить Software эмуляцию работают нормально и без каких-либо проблем.
Процессор: i7 3770k В биосе включена виртуализация На команду kmv-ok выдает: INFO: /dev/kvm exists KVM acceleration can be used
т.е все нормально. Добавил своего пользователя в группу kvm (а также в еще какую-то, не помню), как просил установщик. Для установки kvm вводил вот такую команду: $ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils ia32-libs-multiarch
Сап програмач. Кто разбирался с правилами гуглплея, есть какой-нибудь краткий вариант того что можно а что нельзя? Ясен хуй нельзя прон и контент нарушающий авторские права. А что ещё? Что говорит про азартные игры? А про лотереи?
Ебаный рот этого казино! Решил вчера поиграться с альфой sqldelight, еле подключил, по ходу дела поставил влагин котлина с rc версией. Сегодня утром отвалилась половина зависимостей (в основном androidx, но тимбер и rxjava2 тоже, наверняка еще много другого не заметил), студия в упор подчеркивате их красным, мол от них только R файл есть, но собирается все нормально, удалил студию, постарался все от нее удалить - хуй там после переустановки воз и ныне там.
Попробую пока в идее поработать, может кто сталкивался с похожей проблемой?
>>1281602 Ну я конечно в ваш вопрос не вникал, я мимо крокодил, но будь так любезен пояснить, почему я дурачок и что тебе не понравилось в сочитании amd64+i7?
>>1282034 Там о разных вещах идет речь. Я добавил другой плагин к сборке, а не самый основной для ведра, потом убрал, но все похуевилось так что даже переустановка не помогает. Причем после тех же манипуляций в IDEA все норм.
>>1281580 Бамп, проблема все еще не решена. Может ли быть причина в том, что используемая мной видеокарта это GTX 9800 +, которая не поддерживает DirectX 11? Или в этом деле видеокарта вообще не задействуется?
Давно пользуюсь даггером, но сейчас на одном проекте предыдущая комнада несколько оверинжинирнулась и на каждый фрагмент - компонента с одним модулем, причем все под копирку. Из-за дагера это весьма долго собирается, потому решил глянуть на альтернативы? Как вижу на первый взгляд koin чисто андроидовсая тема, это meh, но он похоже пиздец простой/легковесный - это +.
Kodein же вроде как везде для котлина сойдет, но какой-то более навороченный, но вроде не навороченней даггера.
>>1282470 Ну на винде я даже боюсь что-либо тестировать, ибо эта хуйня скорее всего еще хуже будет там работать. Но вообще попробую, спасибо что напомнил.
Есть Room точенный. Есть primaryKeys в описании Entity дроченном. Как прописать autoGenerate в эту хуйню? Чувствую себя говноедом-хипстером с этими ебучими ORMами, честно говоря. Год уже этому Room, и до сих пор нельзя пользоваться INSERT, ну охуеть вообще
>>1282528 Точнее, мне нужно сгенерировать уникальный айди для сущности. А primaryKeys мне нужен, чтобы сделать несколько столбцов уникальными (возможности сделать это по-человечески, как в sql query при создании таблицы - я так и не нашел). И вот через аннотацию @PrimaryKey(autoGenerate=true) я могу это сделать, но ВОТ ЭТО ПОВОРОТ - она может быть только одна на сущность. И никак не одновременно с primaryKeys.
1) Как установить Samsung Browser в AVD на Nexus5X или Pixel2 (любой девайс с Play Marker) ? Пишет мол это приложение не поддерживается на устройстве, хотя вроде бы на физических девайсах установить можно, но могу ошибаться.
2) Как происходит обработка при Hardware эмуляции? Вся нагрузка идет на процессор или какую-то часть на себя берет видеокарта компа? Потому что сейчас чувствую подлагивания возможно из-за того, что видюха у меня GTX 9800+ (512mb), а процессор i7 3770k (и 16gb озу).
3) Как правильно установить кастомное приложение на эмулируемый девайс? Например если мне нужно потестить Samsung Browser на Android 7, в папке девайса лишь лишь img образ sd-карты.
Наткнулся на множество реализаций в серсисах. IntentService, JobSchedule, WorkManager и так далее. Как их и в каких наиболее частых случаях их используют?
>>1282530 Я плохо помню теорию реляционных баз, но ты уверен что то что ты хочешь ей соответствует? Типа ты хочешь primaryKey не autoIncrement, а какой-то свой, и еще одно поле для обеспечения какой-то дополнительной уникальности? Но ведь у тебя есть primaryKey, зачем еще что-то?
Приведи пример может из пары таблиц.
>>1282493 В 2.18 завезли инкрементальную сборку: https://twitter.com/gradle/status/1053387932260679680?s=12, попробуйте. Ну и dagger более продвинутая штука, думаю. Покрывает больше кейсов, которые могут возникнуть, более стабилен. Зачем менять проверенную тему на хайповую?
>>1282911 >>1282911 IntentService это древняя хуйня. По сути сервис который позволяет исполнять задачи в параллельном потоке. Хз зачем он может понадобиться в текущих реалиях, когда твои сервисы убивают нахуй по любому чиху ради экономии батарейки.
JobScheduler это не сервис. JobService -- сервис. Доступен с Android 5 и выше Я точно не помню как это выглядит в API, но суть сводится к тому, что твои джобы будут запускаться не сразу как только ты их задал, а тогда система решит что ее стоит запустить. Ты можешь конфигурировать джобу, например так, чтобы она запустилась только когда появится соединеине с интернетом. Или задать максимальное количество времени, на которое ее можно отложить.
WorkManager это какой-то новый суперкостыль для того чтобы удобно запускать таски вне зависимости от версии ведра на которой в данный момент работает приложение. Если это 5+, то может использоваться JobScheduler. Если меньше 5, то, например, AlarmManager.
Из всего этого, думаю, тебе лучше всего использовать WorkManager, даже несмотря на то, что ты можешь поддерживать только девайсы с 5+. Тебе самому удобнее будет. Потому что мало ли что там будет дальше. Если появится новый велосипед, то он скорее всего тоже будет поддержан этим методом и тебе ничего не придется дописывать.
А вообще посмотри в строну корутин или rxjava, если у тебя стоит задача просто запустить поток параллельно и не нужно что-то делать прям в фоне, типа прослушивания музыки, загрузки какой-нибудь хуйни или еще каких-нибудь gps трекеров.
Не знаю по адресу я или нет? В общем хочу задать вопрос про кроссплатформенность разработку, вот сейчас модно разрабатывать на reaсt native по тихой народ присматривается к flutter. Но подскажите, по чему не взлетел QML вообще не слышал чтоб кто-то на нем что либо писал? Покурив и реакт нейтив и флаттер и qml могу сказать, что реакт нейтив выглядит совсем уж костылем. Флаттер относительно не плох, но бесконечно вложенные параметры раздаражают. А вот qml тоже яваскрипт подобный синтаксис, если не хватает его возможностей, можно писать сложные части на c++/qt шустр, билд значительно меньше чем у конкурентов.
Вообще стоит им обманываться? Если мне понравилось с ним работать? Какие по вашему перспективы? И всеже почему никто им не пользуется?
Сначала блядь должен разобраться в jdk, jre, jvm, sdk, mdk, pnh, gradle, maven, huyaven Потом выпилить всю хуйню из интерфейса которая высрана по всем краям, отключить все лампочки, выделения, подчеркивания, стрелочки Потом эта хуйня начинает тупить и лагать, когда ты еще даже ничего сделать и разработка на макпуке не представляется возможной
К слову в ios все работает изкоробки, интерфейс упорядочен и никакая хуйня не мозолить глаза, так сильно не тормозит даже большом проекте
>>1283076 >Итс 2К18 - уже ни кто не пользуется сипипи дак дело в том, что это и не цпп, а некая смесь яваскрипта с цсс, в цпп можно даже не лезть если нет особой нужды
>>1283223 Объяснить? максимум оправдаться. У икскода тоже есть косяки, но по сравнению с этой парашей они вообще не заметны. Я просто физически не могу работать за ноутом на котором икскод летает, что тут можно говорить
>>1283228 Что за ноут? У меня древнющий pro late 13. Особых лагов в жетрбейноподелках нет. Икскод конечно тоже не лагает, но устраивает постоянные приколы в духе миграции кода, который уже мигрировали, и от того нельзя мигрировать лол (версии свифта). Иногда хуй знает от чего нет разрешения на файл потому проект билдится но не запускается, "призрачные ошибки" (ее уже исправили но она всеравно светится). Никакующий автокомплит. Недавно еще выловил классный баг, но это навернео компилятор свифта, из-за которого в 4 из 5 случаев один и тот же валидный код не компилился.
>>1283245 У меня 13" 2012 ссд и 16гб, хорошо хоть игральный комп есть чтобы поиграться в андроид на максималках. Все, что ты описал кроме автокомплита случается раз в 100лет и то не точно. И чтобы все это ощутить надо еще постараться, а тут на меня сразу кучу говна вылили и думаю дальше будет только интересней.
>>1283264 > у меня 8 гб. Призрачные ошибки/варнинги и никакующий автокомплит лично меня уже убивает, У меня 8 гб. Все работает идеально. Просто не понимаю как можно жаловаться и на студию, и на хкоде. Хотя хкоде по части хот кейс просто ужасен.
студия 3.2, пытаюсь собрать опенкамеру. При открытии не может найти support-v4 (хотя я на сайте мавена его нашёл, хз, где он ищет) При сборке вообще какую-то ебалу не может загрузить. Что ему надо, где ему почесать, чтобы заработало? бля, как вы вообще пользуетесь этим говном
>>1283322 Покажи какие репозитории подключены. Возможно там проект говно мамонта и не через гугловский репозиторий подключались, а локально через sdk tools. Хуйни в buildscript и allprojects: repositories { mavenCentral() google() jcenter() // все остальное }
>>1270595 (OP) Какие вообще best practices по обновлению элементов в RecyclerView. Например, есть плиточка со скачиваемыми элементами: нажимаешь на айтем и начинается скачивание, на элементе показывается процесс в процентах. Есть очевидные notifyItemChanged, но не будет ли нагрузка большая на перерисовку, если дергать часто и разные элементы? Или лучше каким-то хитрым образм во вью холдеры инжектить сущность, которая будет сообщать о изменении прогресса загрузки и ручками обновлять прогресс во вьюшке?
>>1283329 Самый простой вариант и при этом не очень муторный - DiffUtil с changePayload. Можешь руками дергать notifyItemChanged, главное дергать его с пэйлоадом. Когда дергаешь с пэйлоадом другой метод адаптера вызвается и ты можешь не полностью вьюхолдер переделывать, будет норм. Есть Epoxy, может там чето внутри по-лучше. Хотя можно и инжектить во вьюхолдер, но он тогда пожирнеет, возможно лучше для в таком случае сделать свой презентер, главное его цеплять в onBind, а onRecycled отцеплять.
>>1283334 >, главное его цеплять в onBind, а onRecycled отцеплять. ну вот я сейчас так и делаю, но хочется красивее. Наверное буду на >notifyItemChanged, главное дергать его с пэйлоадом. переписывать.
>>1283345 Иду в сосноль через gradlew, там не находит aapt2-proto сука, ну почему?. В репе, где он ищет, внезапно только pom файлик. А ты ж блять, а на мавене jar есть! Как заставить эту gradle-ссанину юзать мавеновский репозиторий? Или любой другой, где нужный стафф есть? вообще хуею с этой недоинфраструктуры, какая-то ебаная помойка
>>1283372 Раз в год берусь потрогать ведроид и каждый раз какая-нить залупа. Удалил jcenter и посинкалось - а на хрена тогда там вообще несколько реп, если он автоматом не перескакивает на дополнительные?
>>1283334 > Хотя можно и инжектить во вьюхолдер, но он тогда пожирнеет, возможно лучше для в таком случае сделать свой презентер, главное его цеплять в onBind, а onRecycled отцеплять. Это кусок говна, не надо так делать. Ты потом будешь туда накидывать все больше и больше и охуеешь поддерживать. DiffUtil с пейлоадами идеальный вариант.
Когда одна таска не проходила нормально нажал на предложение проганть таску с --debug, теперь она каждый раз гоняется с этой опцией, как ее (опцию) отцепить от этой таски?
>>1283374 Потому что ты ньюфак и не знаешь про мой "invalidate caches and restart". Когда студия тупит - тут же инвалидируешь всё к хуям и ребилдишь проект.
>Failed to allocate a 8 byte allocation with 0 free bytes and 4GB until OOM >OutOfMemoryError thrown while trying to throw OutOfMemoryError; no stack trace available Как?
>>Notice: The Fabric iOS and Android mobile apps will be sunset on November 30, 2018. After this date, you will not be able to log into the apps. как же я ненавижу гугл, всем сердцем прям, всей душой (но все равно меньше чем apple)
>>1283900 У тебя репорты на почту валятся, тот же самый пуш, что и фабрик дает в приложение. А стактрейсы в нем смотреть я ебал, проще через веб, чтобы сразу если что копипастнуть нормально.
Какое же андроид говно, я ебал. Пердолево с плашками занимает больше времени, чем написание бизнес-логики. Ну какому мудиле в голову может прийти, что фрагмент Б, который был вызван фрагментом А (например, диалог о добавлении записи в список) - будет привязан к активити, а не к создавшему фрагменту? Какого хуя, чтобы получить результаты диалога - нужно создавать вермишель из хуйни, перекидывать результат по цепочке? Поэтому и архитектура в виде одной базовой активити и кучи сменяемых фрагментов - это БОЛЬ И УНИЖЕНИЕ. Не говоря уже о архиуебищном способе инициализации фрагментов через bundle, который ебет все ООП в рот.
>>1284512 Не особо. onAttach и тд все равно будут привязаны к активити. А вместо использования обратного вызова в строк 5 - нужно нахуярить не меньше 20 с onActivityResult и тем же bundle, в который не все положишь, а тронешь в одном месте - отвалится в другом. Не говоря уже о том, что выглядит это все, как нечитаемое и неявное говно с какими-то непонятными кодами.
>>1284527 Хотя, может, можно будет избежать этой вермишели, если просто дергать корневой фрагмент через getTargetFragment(), приводить к listener, и вызывать его методы напрямую.
>>1284531 > дергать фрагмент через getTargetFragment(), приводить к listener, и вызывать его методы напрямую Я это и подразумевал. Вообще сейчас это решается через общую модель, но ты видимо еще до этого не добрался.
>>1284510 А ты через какой менеджер фрагментов его добавлял? Обычный саппортный, или через child. Просто в первом случае так и задумано что он к активити прицепится.
>>1284510 Ну если ты сам не способен в ведроид и не знаешь о разных фрагмент менеджерах, то не выебывайся. Это как танцор, который пиздит на танец, не выучив все па.
>>1284510 >нужно создавать вермишель из хуйни, перекидывать результат по цепочке? Для этого можно использовать или rx или какой-нибудь bus. Твой гнев не обоснован, школьник. В году так 13-14 была боль и унижение.
>>1284935 Ну возьми и напиши всё с нуля правильно. Займёт это лет 5 и никому нужно не будет. Сколько уже можно ныть про одно и то же? Да, при разработке было допущено много ошибок, причём до того, как гугл купил ос. Если бы гугл каждый раз ломал совместимость, то ты бы сейчас под андроид не писал, и 70% рынка у него бы не было.
>>1284510 Ну а хуле ты хотел. Андроид это одно большое легаси. И он такой не один. Я не знаю как там на самом деле с JS, но вот >>1285094 говорит что все тоже хуево. Любой старый проект обрастает костылями со временем. Посмотри на какой-нибудь Си с функциями типа "__do_something()", которые так выглядят потому что "_do_something()" и "do_something()" уже deprecated, но легаси код, опять же, никуда не делся.
Сейчас задача разработчика состоит в том числе в том чтобы знать такие костыли и знать как с ними работать и как инкапсулировать все это говно с помощью архитектуры.
Конкретно твой кейс с диалогами мы у себя порешали через лайвдаты. Есть единый метод в BaseFragment, который позволяет показать диалогФрагмент. В нем же происходит подписка на лайвдату, которая лежит в этом диалогФрагменте. Ну и по тычку на "ок" передается эвент, который может в себя включать текст введеный на диалоге/дату из datePicker/любое другое дерьмо. Никаких проблем с лайфцайклом/утечками и тд нет.
Снова нужна помощь с не очевидным крашем, возникает только на huawei гаджетах и только на androdi 5. Гугл молчит, ну или я не умею им пользоваться. Кто-нибудь фиксил такое?
Снова нужна помощь с неочевидным крашем, возникает только на huawei гаджетах и только на android 5. Гугл молчит, ну или я не умею им пользоваться. У кого-нибудь опыт фикса того есть?
>>1285373 Нет, я это дерьмо даже палочкой не трогал, не то что у себя использовал. Это внутри прошики хуйавеной что-то сыпется, но проблема распространенная, у меня в консоли дофига крашей фиксирует от счастливых пользователей девайсов от huawei
Хочу запилить следующею игрушку под андроид: AR-садик. Садишь деревья и растения у себя дома, смотришь, как они растут в реальном времени. Поливаешь их, плоды собираешь, вся хуйня. Вопрос: насколько сложно это реализовать? AR-приложения ещё никогда не писал. Реально в этом дерьме самому разобраться? И на чём их пишут? На Java?
>>1285842 Во-первых, про ARcore я уже читал. Во-вторых, если бы ты вместо того, что бы выпендриваться, сам бы почитал, что кидаешь, то ты бы заметил, что этот самый ARcore работает на крайне узком круге моделей и, увы, у меня нет под рукой Samsung Galaxy S8. У ARcore рили охуенный функционал, но игру, построенную на нём, смогут запустить два с половиной пользователя. Есть ещё Vuforia, но она работает онли с маркерами, а хотелось всё таки обойтись без них.
>>1285849 Ты, черствый дурачок, думаешь блять запускать свою нахуй никому не нужную игру на 5.0 +? Ты ебанулся что ли? Большинство андройд устройств, даже говнокитайские поделки за 3-4к уже продаются с системой 7.0+ как минимум. ВСЕ ИГРЫ С АР сделаны от маршлелоу. Сука, иди нахуй блять. Вкатывальщик хуев. Ставлю 1к на то, что нихуя у тебя не получится и ты все забросишь.
>>1285851 Да что с тобой не так то? Для ARCore нужен не просто мобильник с андроидом 7.0, а мобильник определённой модели. Есть, блядь, даже список моделей, которые поддерживают его. Алсо, сейчас на своём андроиде 6.0 запустил пару AR-приложений, и все они работали, токсик ёбанный.
Есть субкомпоненты дагера, лениво создаются по требованию, ну то есть создалась активити/фрагмент и дернула апликейшн, и тот создал субкомпоненту для логического скойпа. А когда ее (субкомпоненту) грохать? Не вижу какого-то прямого выхода кроме как во всех точках возврата из логического скоупа грохать субкомпоненту, но выглядит как-то совсем неудобно.
Если бы у меня была сингл активити было бы чуть проще, следил бы за фаргментаи/контролелрами/или что там вместо них было бы. Но у меня 3х летнее легаси которое разваливается, и пока отдельные большие логические скоупы живут в своих активитях.
Сначала подумал можно было бы в onCleared ViewModelи ассоциированной с активити убивать субкомпоненту, но что если я из этой активити перейду вниз по скоупу? Тогда onCleared вызовется, но грохать активити еще не нужно.
Есть субкомпоненты дагера, лениво создаются по требованию, ну то есть создалась активити/фрагмент и дернула апликейшн, и тот создал субкомпоненту для логического скойпа. А когда ее (субкомпоненту) грохать? Не вижу какого-то прямого выхода кроме как во всех точках возврата из логического скоупа грохать субкомпоненту, но выглядит как-то совсем неудобно.
Если бы у меня была сингл активити было бы чуть проще, следил бы за фаргментаи/контролелрами/или что там вместо них было бы. Но у меня 3х летнее легаси которое разваливается, и пока отдельные большие логические скоупы живут в своих активитях.
Сначала подумал можно было бы в onCleared ViewModelи ассоциированной с активити убивать субкомпоненту, но что если я из этой активити перейду вниз по скоупу? Тогда onCleared вызовется, но грохать скоуп еще не нужно.
Гуглил и удивился, что никто ничего не писал по данному случаю. Понадобилось иметь одинаковые отступы в RecyclerView перед первым элементом, между элементами и после последнего. Margin и padding у самого листа не подходят, поскольку он будет скроллиться под пару пустых пикселей, а не под другую вьюху ил край экрана. Задал все отступы кроме верхнего в item.xml, а верхний реализовал через ItemDecoration.getItemOffsets у первого элемента. Всё нормально отрисовывается, но теперь при обновлении списка (чистка через notifyItemRangeRemoved) список сначала прыгает вверх (пусть и на пару пикселей) и только потом удаляет элементы. Как я понимаю, сначала удаляется offset и это нормальное поведение. Но выглядит это всё не оче... Кто-нибудь сталкивался с таким и как решил?
>>1285926 Лол, пару тредов назад это обсуждали, я разошелся во мнение с другим чуваком, он предложил использовать дополнитетельные элементы в списке, которые представляют из себя отступы. Я написал себе декоратор который работает с LinearLayoutManagerом и GridLayoutManagerом (даже с кастомным SpanSizeLookup'ом), но что бы не было описанной тобой проблемы приходится в итем включать его позицию в списке и в DiffUtil.Callbackе либо DiffUtil.ItemCallbackе счиать это одним и тем же элементом, но с изменением и передавать в качестве payloadа сигнал об изменении позиции, тогда DiffUtil нормально выкупит и не просто пересчитает getItemOffsets, но и применит их новые значения. Сделал маленький проект где показывал эту проблему на примере списка и как оно себе ведет при разных вариантах (notifyItemChanged для всех с заменой списка, swapAdapter, DiffUtil) если меняется порядок. Самое странное что без всяких суррогатных позиций в данных методы декорации вызываются, но не применяются. Так и не дошли руки никуда отправить вопрос баг ли это, уже недельки две как прошло.
>>1286022 В принципе, терпимый варифнт. Очко делало жим-жим при мысли, что переводчик (особенно, левый) забудет закрыть непонятный тег или вообще сотрет его, и это распидорасит функционал. Но студия ругается на корявые скобки даже кастомных тегов.
>>1285929 Блять, ну пиздец. >пару тредов назад это обсуждали Странно, как-то не обратил внимания. Пропустить не мог - читаю этот тред уже год точно. >использовать дополнитетельные элементы в списке, которые представляют из себя отступы Это конечно самый простой вариант (и очень даже в духе программирования под андроид), но и так же пять типов элементов для списка с одной моделью. >приходится в итем включать его позицию в списке и в DiffUtil.Callbackе либо DiffUtil.ItemCallbackе счиать это одним и тем же элементом, но с изменением и передавать в качестве payloadа сигнал об изменении позиции >Самое странное что без всяких суррогатных позиций в данных методы декорации вызываются, но не применяются. Не совсем понял идею. Где-нибудь можно глянуть код?
>>1286189 >Не совсем понял идею. Было в списке так напрмиер: sealed class FeedItem(val id: Long) { class Image(id: Long, val url: String) : FeedItem(id) class Text(id: Long, val text: String) : FeedItem(id) }
стало: sealed class FeedItem(val id: Long, val order: Int) { class Image(id: Long, order: Int, val url: String) : FeedItem(id, order) class Text(id: Long, order: Int, val text: String) : FeedItem(id, order) }
Аноны, подскажите, что предпочтительнее в андроид-проектах в плане архитектуры - MVP или MVVM и почему? Сам более года юзал MVP, в ус не дул, все выглядело идеально и логично в плане распределений в коде, но все чаще слышу об MVVM, а в инетике никто толковых аргументов о плюсах и минусах так и не расписал. Стоит ли вообще копать в сторону МВВМ или это юзлесс херня? Через что (какие библиотеки) она реализовывается и можно ли сделать связку с DI?
>>1287134 >Аноны, подскажите, что предпочтительнее в андроид-проектах в плане архитектуры - MVP или MVVM и почему? >>1287234 Это просто общение вью с презентером и все. Читай про клин архитектуру вместе с инжектингом. Статья в шапке есть, можешь скакать оттуда.
Я бы подождал пока гугол не выкатит нормальные релизы своей мввм, а не багнутые вещи, которые они сейчас пропагандируют.
>>1287134 >эмвепэ >эмвевеэм Лол, почему сразу не на голом NDK? Не тормози, делай TEA на React-Native + Redux + Redux-Loop. По крайней мере пацанам во дворе не стыдно будет показать.
То есть при наводке камеры на руку детектились нужные части и как-то дорисовывались. Куда хоть копать - в сторону AR или в сторону Firebase Machine Learning?
Синьоры и мамкины 300к\с. Есть проблема с Media Player. Делаю пока проигрывание во фрагменте, а не в сервисе и возник баг. Если я начинаю проигрывать трек, потом поворачиваю экран то все нормально, фрагмент пересоздается, из savedState берется текущее время проигрывания и звук с небольшой задержкой продолжает проигрываться с того же места. Однако если перед поворотом я поставлю на паузу, то после поворота meida player выдает отрицательное значение duration. Хотя вызываю его в коллбеке onPrepared(mediaPlayer). Код фрагмента тут: https://pastebin.com/cKcdm9aH Лайвсайкл в обоих случаях одинаковый в логах. (прикрил 1 и пикрил 2) В чем может быть проблема?
Аноны, важный вопрос пилю приложение на реакт нейтиве, и добавил в него нативный модуль, для логина через ВК. Он открывает либо приложение вк, либо создаёт новую активити с вебвьюхой. Так вот у этой активити странный баг, ее трясет вверх вниз пока не активирую один из инпутов. Как можно пофиксить?
>>1285929 Ещё проверил: добавил после первых нескольких элементов отступ через ItemDecoration.getItemOffsets. И теперь, при очистке списка этот отступ сначала применяется ко всем элементам.
>>1287717 Вообще изначальная проблема: >Понадобилось иметь одинаковые отступы в RecyclerView перед первым элементом, между элементами и после последнего
>Я написал себе декоратор который работает с LinearLayoutManagerом и GridLayoutManagerом (даже с кастомным SpanSizeLookup'ом), но что бы не было описанной тобой проблемы приходится в итем включать его позицию в списке и в DiffUtil.Callbackе либо DiffUtil.ItemCallbackе счиать это одним и тем же элементом, но с изменением и передавать в качестве payloadа сигнал об изменении позиции, тогда DiffUtil нормально выкупит и не просто пересчитает getItemOffsets, но и применит их новые значения. Зачем так сложно? Зачем так усложнять? Ты просто создаешь ячейку, допустим, с 60дп, и делаешь высоту еще 60, в итоге у тебя 60 + 60 = 120. Первый и последний это другой вью холдер.
>>1287753 > Первый и последний это другой вью холдер Охуенно. У тебя список из 5 элементов. Последний - другой вьюхолдер с отступом. Докидываешь еще один, диффутила дает тебе только notifyItemAdded. Поздравляю, у тебя 2 элемента с отступом в конце.
>>1287809 >диффутила дает тебе только notifyItemAdded. Поздравляю, у тебя 2 элемента с отступом в конце. Какая нахуй дифутила? Ты о чем вообще? Ебнул два списка, Set и List
при апдейте ебашишь Set addAll, потом клинишь лист и адд алл так же. У меня проекты не на уровне параши, где заботишься о глобал перфомансе.
регулярно случаются ситуации, что из базы выдергивается значение до того, как оно будет записано в нее на старте. Есть какой-то способ заблокировать создание базы, пока все значение в нее не будут записаны?
>>1287883 Залупа ебаная, нихуя не придумал лучшего, чем самому писать query прямо в бд, которая дается через метод Callback'a public void onCreate(@NonNull SupportSQLiteDatabase db) {} и вставлять запись ручками, без ебли с неглавными потоками.
>>1287824 >Какой интересный эфемизм для хеллоувордов. Эфемизм? На прошлой работе я спиздел 6 репозиториев и тщательно проанализировал. Ни у одного списка не была реализована дифутила.
Хотя я мб опять прочитаю про нее и попробую. Один хуй ничего не поменяется.
СУКА ГОРИТ ПИЗДЕЦ У МЕНЯ РОТ ЕБАЛ Оказывается ебучий Bundle сам по себе сука сохраняет объект и похуй ему на твои реализации Parceable То есть сохранил я такой в Bundle свой класс:
И действительно достал. ТОЛЬКО БЛЯТЬ ЭТО ТОТ ЖЕ ОБЪЕКТ НАХУЙ. НИХУЯ ТАМ ПОД КАПОТОМ НЕ СЕРИАЛИЗОВАЛОСЬ/ДЕСЕРИАЛИЗОВАЛОСЬ BUNDLE СУКА САМ ВСЕ ПОЛЯ ОБЪЕКТА РЕФЛЕКСИЕЙ СОХРАНЯЕТ/ДОСТАЕТ, РОТ ШАТАЛ ОН ТВОЙ PARCELABLE ВСЕ ПОЛЯ СОХРАНЯЕТ БЛЯТЬ ДА ЖЕ ТЕ ЧТО НЕ ПРОСИЛ
>>1288536 > ТОЛЬКО БЛЯТЬ ЭТО ТОТ ЖЕ ОБЪЕКТ НАХУЙ Ну да, он так и работает. Он серализует/десериализует только при IPC или смерти процесса. Оптимизации, сэр.
>>1288646 > никто в бандле не сохраняет классы Именно поэтому он поддерживает Parcelable, Serializable. Я вот только сегодня Uri передавал через него. Надо было к строке приводить? Или разбирать идентифицирующий объект из трех полей в 3 строки вместо того, чтобы студией сгенерить реализацию парселебла и не ебать себе мозгии?
>>1288710 >Надо было к строке приводить? Или разбирать идентифицирующий объект из трех полей в 3 строки вместо того, чтобы студией сгенерить реализацию парселебла и не ебать себе мозгии? Не знаю. Во всех проектах пихаю в презентер важную инфу. Вьюшки тупо рисую и все.
>>1288752 У тебя бандл только в сейв инстансе используется? Абсолютно такое же поведение при передаче в интентах и аргументах, и к нему нужно быть готовым.
>>1288763 >тебя бандл только в сейв инстансе используется? В сейв инстансе ничего не использую. Ну бандл иногда, я же написал, по большей части с презентера на презентер кидаю.
>>1289299 >>1289290 Хуй знает, у меня такой проблемы не было, можнт тебе надо билдтулзы той версии скачать? А лучше поставить в скрипте сборке ту версию что у тебя есть.
>>1289299 >он настолько бета? Да нет, я слышал там в америке запилили апп для театра какого-то на нем. Но всякая кросплфт параша же. Лучше с андройда начинай, а потом и иос выучишь как я.
>>1289307 > Но всякая кросплфт параша же На вид сделали хорошо не трогал. Это же не реактивпараша, которая множит свои баги на баги платформы. Полностью собственная отрисовка и обработка компонентов. >>1289290 Там скорей всего google() в репозитории билд скрипта не вписался.
>>1289424 Проблема любой кроссплатформенной параши в том, что для того чтобы написать любое более-менее качественное для 2к18 года приложение нужно будет все равно погружаться в особенности платформы. В итоге тебе все равно нужно знать платформы, на которых пишешь + всю ту хуйню, с текущими как суки абстракциями, которыую нахуевертели в фремворке для кроссплатформенной разработки.
Получаем что вместо 2 вещей тебе надо знать 3 + бонусом получаешь снижение производительности из-за многоступенчатой ебли-переебли твоих кроссплатформенных хуиток.
На таком говне хорошо только всякие хеллоуворды и тудулисты выглядят, которыми ее обычно и рекламируют. А когда твоему приложению нужно использовать многопоточку, сеть, анимации, какие-то нестрандартные графические вещи, бд тут сразу твоя кроссплатформа начинает насасывать и ты пишешь еще больше кода, чем если бы написал нативно, на каждую платформу.
Уже блять были Phone Gap, Xamarin, React Native, Appcelerator и куча менее известной параши + всякое пистоно-руби-jsо-говноо для ухода от obj-с/java. Но необучаемые все равно думают что вот сейчас-то очередная параша взлетит ее же гугль делает и всe будут писать на кроссплатформе
>>1289600 Анон, спасибо тебе и лучшей добра. Поведай мне, что кроме Java и Kotlin мне можно понюхать для вката на ведроид? Цель: достаточно простые приложения под собственный же сервак, грубо говоря есть 50-150 человек со своими телефонами которые могут посылать некие команды на сервер, получать своё состояние с сервера, возможно как-то взаимодействовать с окружением типа считать QR код.
>>1289626 >Нахуй нужен inflater? я просто добавляю вьюхи через addview? инфлатер же раздувает целый леяут и преобразует в класс один вью, а адд вью ты вынужден писать много раз + перентов еще заебешься включать.
>>1289618 Ну собственно то кроме java и kotlin + документация я бы ничего больше и не советовал. Можешь сразу с котлина начинать, если знаешь какой-то другой язык на приличном уровне. Не знаю, даже для простых приложений я бы советовал начинать сразу с нативной разработки т.е. java или kotlin + фреймворк андроида. Для простых приложений это не сложнее чем какой-нибудь кроссплатформенный йоба фреймворк, а потом гемора будет намного меньше.
>>1289644 Короче буду игнорить эти надуватели пока не столкнусь с тем что ты описал
>>1289646 Не юзаю xmlы, сразу все в коде накидываю. Такая привычка еще с айоса, там кстати нет разных типов layoutа, вы жонглируете этими relative/constraint/linear? попытаюсь все через constraint пилить
>>1289898 Ну StackView в айосе это тот же LinearLayout, так что разные типы и там появляются. А так да, в ведре ConstraintLayout появился не так давно и это закос под систему констрейнтов в айосе. До этого был RelativeLayout с меньшим количеством возможностей, а до него все еще хуже(впрочем как и в яблоке до автолейаута).
Считай что xml макет это .xib. А inflater это аналог Bundle.loadNib который превращает твой xml во view.
>>1289917 Щас бы телегу как пример хорошего кода приводить. >>1289898 > Такая привычка еще с айоса Ну блять охуенная привычка. Ты о других то подумай, им потом твое говно разгребать. И че у тебя там по стилям, как с атрибутами темы работаешь?
>>1289933 >Щас бы телегу как пример хорошего кода приводить. Не хороший код. Они там все рисуют на канвасе. Достойно уважения, но это пиздец. Я кстати задумался, рили так делают в других топовых компаниях?
Как набрать скачиваний? Вроде приложение не хуже конкурентов, а загрузок почти нет. 4 шт Как работает индексация в гугл плее? Почему при смене иконки изменилась вкладка с похожими приложениями?
>>1289898 Тогда попробуй anko, так хоть выглядеть будет чуть лучше. Я тоже в ios вьюхи кодом хуярю, но это из-за ублюдочного сториборда, но в андроиде оно жирнее получится как мне кажется + можно xml вручную рас-рас-рас.
Анон, я ебучий ньюфаг в андроид разработке, так что задам тупой вопрос: Как можно реализовать в приложении подключение через прокси? Не самой среды и эмулятора, а чтобы пользователь смог в самих настройках приложения, например, все прописать? Да, например как в телеге реализовано. В какую степь копать?
Аноны, помогите. У меня на телефоне прога работает нормально. На эмуляторе нормально. А у друга не вызывается метод onrestart после нажатия стрелочки назад. То есть вот переходим с 2 экрана на 3 и возвращаемся назад. У меня вызывается onstop и при возврате onrestart в котором я говорю finish и заново открываю эту активити. Вызывается еще один onstop. У друга onstop при переходе на 3 экран и еще один onstop при возврате на 2, при этом onrestart не вызывается и хз откуда и почему вызывается onstop вместе orestart. В моем случае понятно, что при закрытии активити и ее переоткрытии. Что делать, помогите.
Нужна помощь с сенсорами. Надо определять так называемый pitch, т.е. угол между плоскостью земли шалом шароебам и осью Y девайса.
Легче всего это сделать через задепрекейченный сенсор TYPE_ORIENTATION, там просто сразу этот угол у приходящего в коллбек SensorEvent'а есть. Но он на то и задепрекейчен.
Проблема с 2 и 3 вариантами в том, что искомый угол они выдают как на пикрелейтед. Закрашенный прямоугольник - девайс, стрелка - куда его верхушка смотрит. Вроде бы нормально, но мне нужно именно чтоб было отличие по знаку или хоть как угла в I четверти от угла в IV четверти.
Для собственноручной ебли с векторами, матрицами и кватернионами я туповат. Может кто знает, как можно решить вопрос?
>>1289933 >Ну блять охуенная привычка. Ты о других то подумай, им потом твое говно разгребать. И че у тебя там по стилям, как с атрибутами темы работаешь?
Кому им то, кому им? Я один здесь и под ios, и под android. Сегодня понял, что до некоторых вещей через код просто не достучаться, вот и с инфлятором разобрался
Аноны, поясните, вот я пишу ламповый код с архитектурой MVP, код работает идеально, разделение логики во вью и презентере просто перфект. Какого хуя на собеседованиях говорят смотреть в сторону ебучего MVVM, который во-первых усложняет дико всю логику и увеличивает код, а во-вторых вообще юзлесс из-за нечитабельности, в сравнении с тем же mvp.
>>1290691 >Это не архитектура Архитектура. И заебало, что в каждом андроид-треде находится "умник", который только при виде аббривеатур MVC, MVP и т.д. врывется со словами: "Это не архитектура, я скозал, ну не архитектура, ну мааам!"
>Поди еще переворота нет Есть, чего ж нет.
>Для общего развития норм. Для общего мейби, а для развития как программиста юзлесс.
Сап, андроиды! Подскажите плез, по поводу работы удалённо с андроидом, реально ли джуном? Я сейчас вкатываюсь в андроид по-фану, леплю лапшичку, разукрашиваю градиентики - вьюшки, всё нравится. Но вот мой кореш - он же сенсей, говорит что лучше всего в офисе поработать годик - другой, а я последние 3 года на удалёнке работал, уже отвык от офисной педарасни и привыкать назад совсем не хочется. Может быть есть истории успеха, полностью без личных контактов тру хиккарей?
Тред для тех, кто пытается вкатиться в андройд разработку или что-то похожее. По возможности стараемся угощать ньюфагов чаем и поливать друг друга радугой.
> Хочу вкатиться в разработку под Android! С чего начать?
С видеокурсов от Udacity. Они бесплатны и затрагивают основы разработки даже если не умеешь писать на Java.
https://www.udacity.com/course/android-development-for-beginners--ud837
Для тех, кто не хочет учиться по юдасити существует скучный кат от гугла: http://developer.android.com/training/index.html
Так же есть книга, которая затрагивает основы разработки и имеет 2-е издание с 2017 года: https://www.amazon.com/Head-First-Android-Development-Brain-Friendly/dp/1491974052
Большинство приложений написано на Java, необходимо понимать что ты пишешь, в уме достаточно знать базовый Core т.к. 90% времени придется тыкаться в Android SDK. Полезные обучалки от анона:
https://habr.com/company/golovachcourses/blog/215275/ - смотри Головача
https://www.amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208 - книжка для ньюфагов. Хорошо заходит.
https://www.amazon.com/Thinking-Java-4th-Bruce-Eckel/dp/0131872486
Неплохим вариантом для изучивших джава будет книга https://www.amazon.com/Effective-Java-3rd-Joshua-Bloch/dp/0134685997
Алсо можешь читануть паттерны, рано или поздно все равно базовое знание понадобиться https://www.amazon.com/Head-First-Design-Patterns-Brain-Friendly/dp/0596007124
Существует два текстовых ресурса для закрепления андройда на русском. Первый - несмотря на старость описывает базовые вещи, на которых построены мощные либы, второй - продавшийся говноед с котиками http://startandroid.ru/ и http://developer.alexanderklimov.ru/android/
https://commonsware.com/Android/ - толстая книга для гиков.
Так же можешь смотреть видосики от Mail.Ru
https://habr.com/company/mailru/blog/345252/
https://github.com/ybereza/technotrack-resources - ресурсы к лекциям
Или от Яндекса. В некоторых моментах спикеры рассказывают важные детали, которые кроются в мелочах:
https://www.youtube.com/watch?v=5EvxWifIgro&list=PLQC2_0cDcSKBNCR8UWeElzCUuFkXASduz
В дальнейшем потребуется базовое знание SQL, понимание XML и JSON.
> Я прошел курсы Udasity, а дальше что?
После прохождения курсов у тебя должно сложиться базовое представление о создании приложения; жизненные циклы Activity/Fragments, AsynsTask, Http, Json, SQLite.
Дальше закрепляешь знания путем просмотра видосов выше +
Написание парочку приложений на свой вкус. Так же стоит уделить внимание BroadcastReceiver, IntentService, поиграться с Loader's, хендлерами, Contest providers и прочее.
>Хочу изучать популярные либы и не быть говноедом!
Если ты сразу после курсов переползаешь сюда - будь готов, что ты не будешь знать как это делается под капотом.
Retrofit - стандарт для взаимодействия с сетью. Вместе с ней можешь изучать либу okhttp3. Так же для справки можешь гуглить volley.
RxJava - тяжеловесная либа. Одно из решений для выполнения кода в бекраунде.
[YouTube] KotlinConf 2017 - RX Java with Kotlin in Baby Steps by Annyce Davis - rxJava с нуля
[YouTube] RxJava доставляет Артём Зиннатуллин - на русском
[YouTube] Managing State with RxJava by Jake Wharton - rxJava
[YouTube] Making Retrofit Work For You by Jake Wharton - retrofit
Неплохо было бы и изучить MVP. Для самообразования можно написать его голыми руками или прогуглить, как это делается.
https://github.com/ArturVasilov/AndroidSchool - здесь рассматривается архитектура, и как ее ели с 2011 года.
MVP:
https://javarush.ru/groups/posts/505-mvp-v-android-dlja-samihkh-malenjhkikh - для понимания
https://github.com/Arello-Mobile/Moxy - плюшка для поворотов экрана
https://github.com/sockeqwe/mosby - англоязычная плюшка
MVVM - костыли от гугла:
Для нормального понимания желательно знать AAC.
https://startandroid.ru/ru/courses/architecture-components.html - свежие уроки от Димона
https://proandroiddev.com/the-missing-google-sample-of-android-architecture-components-guide-c7d6e7306b8f - для продвинутых
Пример MVVM
https://github.com/ericmaxwell2003/MvvmTipCalculator
Это всего лишь обертки, чтобы вынести логику из views. Для более углубленно изучения можно попробовать почитать
this: https://habr.com/company/mobileup/blog/335382/
Пример на котлине:
https://github.com/hitherejoe/GithubTrending
> Хочу анимировать мои говноподелки!
https://www.youtube.com/watch?v=dzB-1VlHJW8
Онли теория. Первые двадцать минут покрывают больше половины статей, которые можно найти на медиуме и т.д.
Здесь побольше практики на любой вкус: https://labs.ribot.co.uk/exploring-meaningful-motion-on-android-1cd95a4bc61d
Так же можно подробно почитать про смены сцен: https://blog.prototypr.io/applying-meaningful-motion-on-android-a271a873bd78
> Не хочу писать на Java!
- Kotlin — JVM-совместимый язык от JetBrains. Есть лямбды, стримы и делегаты. С 17.05.2017 поддерживается официально.
[YouTube] Лекция 1. Kotlin 101[РАСКРЫТЬ] - свежие лекции на русском
https://www.amazon.com/Kotlin-Action-Dmitry-Jemerov/dp/1617293296 - библия
https://kupdf.com/download/kotlin-for-android-developers_59a05e2ddc0d60992a18496b_pdf - Kotlin for Android
https://www.udacity.com/course/kotlin-for-android-developers--ud888 - курсы Udacity
> Есть что-то кроме нативных приложений на Java/Kotlin?
- Flutter - кросс-платформенный фреймворк от Google. Js с аля строгой типизацией. Если совсем поехавший можешь начинать с него.
https://flutter.io/docs/ - документация
https://www.udacity.com/course/build-native-mobile-apps-with-flutter--ud905 - курсы от Udacity
Остальные:
ReactNative — мочаскрипт во всей красе.
- PhoneGap/Ionic/Titanium — имя им мочаскрипт-младшие, принципы у них разные, первые три попытка в кроссплатформенность одного кода. Популярность у них разная как и размер комьюнити. Вопросы по ним — в js-тред.
- Qt — кросс-платформенный фреймворк на C++. Используется в основном для игры и для приложений с высокими требованиями к производительности (обработка изображений, звука, ГИС-системы). Спрашивать в C++ треде.
- Xamarin — кросс-платформенный фреймворк на C#. Представляет из себя обёртку над Android API. Куплено Microsoft. Теперь есть бесплатная версия. Спрашивать в C#-треде.
- BugVM — кросс-платформенный фреймворк, написанный на Java. Форк невинно убиенного RoboVM.
> Хочу писать игры!
LibGDX - слишком медленная параша для больших проектов, но познакомится можешь. Unity - для адекватных, Corona SDK, LOVE, Defold и другие. Спрашивать в /gd/.
> Что нужно, чтобы взяли джуниором? Что учить в первую очередь?
Нужно хорошее знание Java, понимание базовых принципов Android (жизненный цикл activity/fragment, что такое Context, intents, services, UI thread, support library и ее версии, shared preferences, SQLite, Handlers, Executors, Content-Providers), знание популярных библиотек типа Retrofit + Glide/Picasso + RxJava2 + Dagger2(по обстоятельствам), понимания СОЛИД и других паттернов проектирования. И хотя бы несколько готовых приложений.
Полезные ссылки:
https://www.youtube.com/channel/UCSwuCetC3YlO1Y7bqVW5GHg - канадский челик, поясняет за архитектуру и отвечает на разные вопросы на стримах.
https://github.com/toddmotto/public-apis - бесплатные API для создания приложений.
https://github.com/AlexeyZatsepin/Android-ORM-benchmark - бенчмарки на вопросы о том, какую БД выбирать.