Это копия, сохраненная 15 октября 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Обсуждаем разработку под Android, ждём выхода новых Нексусов, смеёмся над седьмым гейфоном.
FAQ
> Хочу вкатиться в разработку под Android!
Большинство приложений написано на Java, выучить её на хорошем уровне — это первое, что необходимо сделать. Рекомендуемую литературу см. в Java-треде.
После этого можно открыть официальную документацию http://developer.android.com/training/index.html и попробовать создать по туториалам своё первое приложение.
В дальнейшем потребуется базовое знание SQL, понимание XML и JSON.
> IDE и инструменты?
Android Studio — основной инструмент разработчика. Кроме неё потребуется Android SDK (устанавливается вместе со студией).
> Мануалы?
- Официальная документация: http://developer.android.com/
- Полезный гайд для начинающих и продвинутых: http://guides.thecodepath.com/android
- Бесплатный видеокурс от Google для новичков: https://www.udacity.com/course/android-development-for-beginners--ud837
- Два ресурса, главный (и единственный) плюс которых — русский язык: http://startandroid.ru/ и http://developer.alexanderklimov.ru/android/
- Классика, способная дать ответ на почти любой вопрос "Как сделать xyz?": http://stackoverflow.com/
> Альтернативы Java?
- Kotlin — JVM-совместимый язык от JetBrains. Есть лямбды, стримы и делегаты. Можно использовать в проекте вместе с кодом на Java.
- Xamarin — кросс-платформенный фремворк на C#. Представляет из себя обёртку над Android API. Куплено Microsoft. Теперь есть бесплатная версия.
- PhoneGap/Ionic/Titanium/ReactNative — имя им javascript, принципы у них разные, первые три попытка в кроссплатформенность одного кода, ReactNative проповедует другой подход, а именно написание разного кода но на одном языке. Популярность у них разная как и размер комьюнити. Вопросы по ним — в js-тред.
- BugVM — кросс-платформенный фреймворк, написанный на Java. Форк невинно убиенного RoboVM.
Предыдущий тред: https://2ch.hk/pr/res/829054.html (М)
>отсутствие крашей
Возьми молоток с собой на проверку и отбивай проверяющим по пальцу за каждый не-нексус. А лучше — отрезай ножницами по металлу.
>code-style от Google
Какой бля code-style от Google? Тем более оно, сука, всё равно в одинаковый байт-код соберётся, лишь бы читать можно было.
Напридумают хуйни всякой, а потом ебут друг друга в жопы.
Удвою, планшеты на андроиде нахуй не сдались, это рынок винды и iOS.
Ты старый ОП?
Ты что с шапкой сделал уебан?
Нет, я старый оп.
Проебали нумерацию, какое-то говно в шапке на три строки.
>Альтернатива джаве
>Xamarin
>PhoneGap/Ionic/Titanium/ReactNative
Какой даун.
Да хуя с два. В ебало вам плюнул, больше не дам шапки делать.
>Нет, я старый оп.
Ну и ладно, ты тут держись и не бугурти особо, твои пункты 1-10 тоже не очень были.
Старперам вроде тебя с ~1.5 годом опыта пора на пенсию, даешь дорогу молодым.
Думаю через пару тредов вообще шапку перекатим на Kotlin.
Понятно, школота заселила тред.
>gson или jackson ?
ProtoBuf
Как говорит Робер М.: "лучшее техническое решение - это отложенное решение".
Какая нах## разница какую брать бибилиотеку, это все third-party components.
Вынеси сериализацию в отдельный модуль, так что ее можно было менять в будущем.
У меня блядский AppCompatEditText, мне нужно поменять цвет подчеркивания.
colorControlNormal/Activated/Highlight в стиле темы - хуй
colorControlNorma/Activated/Highlightl в отдельно стиле для theme элемента - хуй
colorPrimary и др - хуй
В итоге сижу любуюсь охуенной белой линией едиттекста на белом фоне.
И проблема только на 21+. Ниже цвета применяются нормально.
Последняя.
Сынок, это я тебя буду собеседовать, раз уж ты с такими тупыми вопросами приходишь.
Шесть-лет-в-андроид-деве
>>838921
>Шесть-лет-в-андроид-деве
>Пятнадцать-лет-в-андроид-деве
Поссал на вас обоих.
70 лет в андроид деве
ахах, мне этот вопрос на собесе как раз задал чел, который начал разрабатывать с самых первых ведроидов
Помню, когда то это и для меня было действительно важно.
Мы гоняли огромные JSON на телефоны с 16 MB оперативы.
GSON тогда был версии (по моему) 1.X и как-то неудачно написан что проигрывал Jaskon в разы.
Немного посже вышла весрия 2.0 в которой они сильно проапргредили скропрость парсинга.
Сейчас, после стольких лет оптимизаций этих библиотек и появления 4-х ядерных смартфонов,
я бы скорее выбирал парсер по критерию "может ли он работать с иммутабельными объектами".
6-лет в разработке
Норм. Сегодня офигенный стрим написал для пробега по дереву.
Всё хочу освоить андроид, а времени нет.
Сейчас уже выбрал в магистратуру кафедру веб проги, а там для поступленя нужен матан, так что изучение андроида опять откладывается.
А у тебя?
Все горит, нужно натянуть текстурки в игре, а они не натягиваются, движок говнона самом деле проблемы во мне. Нужно подтереть сопли джунам, что бы делали заебись, а не говно. Нужно вправить мозг бекендщику, короче завал.
То же самое. В общем, да, ебанутый.
Так строку или столбцы? Если строку, то selection, если столбцы, то projection.
И причём тут Android? Тебе в sql-тред с такими вопросами.
Неча всякое индиговно рекламировать за бесплатно.
Хули ты такой? Ты задал аргументы для квери. Тебе выплюнуло курсор. На каждой позиции курсора ты можешь достать имя котика по индексу 0, номер на 1 и возраст на 2. Очень вероятно что котик по твоим критериям в базе не один, значит там несколько строк. У тебя не аппендится в текствью потому что ты мудаксама идея туда апендить пока ты идешь по курсору тупа до невозможности. Если ты хочешь ток одного кота, ну блять возьми и верни из этого метода new Cat(name, phone, age), после первой итерации цикла, только курсор закрой. Если твоя блядская проблема в том, что ничего не выводится, так это вероятно потому что курсор пустой, тебе так сложно логнуть его размер?
Для собственно завершения некой операции?
> Ну если не войдешь в айос,
то сюда у него тем более не получится "войти", если он даже айос не осилит
>Стоит ли перекатываться к вам из разработки под винфон?
Однозначно стоит перекатываться в кросплатформу.
Попробуй Xamarin.Form будешь как дома (C# + XAML).
На иос денег нет.
>От шарпа уже подташнивать начинает, наебался я с ним.
В принципе я тебя понимаю, сам сижу на Kotlin, он даже по сравнению с C# местами по круче
primary constructor, flow-sensitive typing, var для полей, функции без классов, более удобные extension методы (ну бомба: адекватные переносы для { и методы с мал. буквы).
Но ты еще Java не пробовал, это как C# 2.0 (особенно учитывая что надо юзать 1.6 или с костылями мятся)
Да, котлин я пробовал, понравился. Вот думаю в ведро вкатиться и сразу на нем писать.
P.S.
> (ну бомба: адекватные переносы для { и методы с мал. буквы)
Дико двачую, бесит паскаль кейс и фигурные скобки на новой строке в шарпе.
> Попробуй Xamarin.Form будешь как дома (C# + XAML).
Я даже не знаю, что вообще есть хуже связки Xamarin + C#. Меня даже от js не так сильно воротит, как от неё.
другой анон
>Ты жопой читаешь, даун мелкобуквенный? Я js для сравнения привёл.
ты червь-пидар, запомни нет ничего хуже JS
Null null null дерни себя, пес, за анал.
Сделай стиль для 21 и туда пихни android:colorControlNormal
Не на маках. Мы же не ёбнутые.
Я на прошел 13года, нормально себя чувствую. Джунгли на эре 15го, там 4 гига, а не 8, но ему тоже норм если пользоваться девайсом, а не эмулятором.
Прошке*
Блять, ебаная автозамена.
Я на прошке 13года, нормально себя чувствую. Джун на эйре 15го, там 4 гига, а не 8, но ему тоже норм, если пользоваться девайсом, а не эмулятором
У тебя видимо мак недавно, все мои знакомые отключали автозамену в первые месяцы.
Главное SSD, 4 гб для mac os мало.
Решил вкатиться, иду по туториалу, пока все нравится больше, чем в увп.
Я с ведра писал.
И в чем проблема вписывания в джаву? Куча мелких объектов для сборщика?
что требуют от джуна на ведре? сколько приложений в портфолио и какой сложности?
Нужно хорошее знание Java, понимание базовых принципов Android (жизненный цикл activity/fragment, что такое Context, intents, services, UI thread, support library, shared preferences, SQLite), знание популярных библиотек типа Retrofit + Glide/Picasso.
Чем больше портфолио — тем лучше. Для начала хватит чего-то типа этого >>838621
Хорошая аргументация, молодец. Иди пиши AsyncTask'и дальше, тебе некогда в треде сидеть.
Говно какое-то, а не задание. В чём смысл дрочева на материал десигн? А трёхстрочных анимаций переходов между двумя (!!!) активити, и появления аж трёх элементов на экране? Что вообще они хотят проверить этой околодизайнерской поеботой?
Вангую мухосранскую студию с охуенными требованиями и раздутым ЧСВ.
Как считаете, стоит их напрямую сохранять, как прямые сущности для базы? Или лучше пилить отдельные сущности, которые будут идентичны?
Если ты потом будешь использовать их с методами vksdk, или тебе нужны прям все их поля то сохраняй их. Но если тебе потребуется потом только часть инфы, нет смысла хранить их целиком. Тем более свои объекты для абстракции могут быть лучше.
Что за объекты-то?
А вот и ретрограды-говноеды подъехали. Нахуй дизайн, нахуй UX, а потом плачут в треде, что у них полтора скачивания в месяц.
Ты вообще понимаешь, что такое тестовое задание? Ты должен показать, что ты умеешь и можешь. Если ты анимации между двумя объектами сделать не в состоянии, то и более сложные сценарии тебе не по зубам будут.
> ты про лямбды на джаве не слышал
Не, не слышал на 7 жабе. Только костыли. И как будто лямбды спасут это уебище.
Нормальные костыли. То что котлин это костыли на 6 джаве тебя видимо не смущает?
>>840056
>Самый востребованный и широкоприменяемый язык
>Спасет
От чего спасет-то? Альтернатив джаве нет, нормальных альтернатив, а не хипстерского говна, которое сегодня есть, а завтра все забыли о нем.
>float -> byte[]
ByteBuffer.allocate(4).putFloat(value).array();
>insert byte[] into byte[]
void insert(byte[] where, byte[] what, int pos) {
____System.arraycopy(what, 0, where, pos, what.length);
}
Уж не из-за этого ли гениального языка ведро хоронит сам Гугл?
Такой манямирок, что уже сами Гугл сливают новости о новой ОС? Ради фана пилят там что-то?
Ссылочку пожалста.давно пора эту парашу закрыть
>>840078
А хули ты хотел, принцесса? Можно первую чатсь и по другому, но не будет учтен порядок байтов и вся хуйня. А второй способ лучший если ты хочешь скопировать откуда-нибудь куда-нибудь.
Как же вы заебали, долбоебы.
И как это сигнализирует о смерти андроида? Там вообще еще ничего не ясно, даже если прямо сейчас Гугл заявит о новой оси, еще сто лет пройдет пока все переедут с андроида на новую ось и вообще не факт, что это ось для смартфонов.
Сначала принеси пруфы что она позиционируется как замена, в статьях сказано что она просто есть.
А мы кодим на еще более уёбищном говне. Гугл вообще думает что-нибудь выкатить против Свифта?
Ядро линукса на С, а проблемы в структуре приложений с бесконечным количеством колбеков и хуков.
Чем джава плоха?
Свифт вообще говно без задач под анальным контролем педиков, а на базе jvm ты можешь писать на чем угодно, если тебе не нравится джава, хоть на скале, хоть на кложуре, а под гейось только свифт
https://github.com/android
Сравни кол-во хуиток на си и плюсах с явовыми. А лучше ещё выкинь оттуда все встроенные гуевые приложульки. Спойлер: соотношение 50:1 не в пользу явы.
Тебе не хватает инструментов для байтоебства в джаве? Ну извини это не ее задачи.
Ни одного, кроме кроссплатформенности. Даже таскать JRE за собой - уже говно хуже дотнета.
У нас тут любитель сигфолтов подкатил. Иди дрочи NativeActivity.
И поэтому разработчики борятся с наследием легасиговна с самой первой версии. ПОэтому появились dalvik и art. Блять, знай разработчики андроида что их купит гугл и проблем со спонсированием не будет - сделали бы собственную вм без родовых травм.
Сейчас не язык обсуждали. Но в сравнении с явой даже говно собаки хорошее и не пахнет.
Ну что тебе именно написать? Задавай наводящие вопросы, лень расписывать все сотый раз.
Наброшу - ява многословное говнишко, тянущее кучу кривых абстракций, с бесполезной системой типов и синтаксисом для любителей лапши на 4 экрана в ширину. Про уёбищность реализации дженериков и пр фишки из "новинок" писать смысла нет - сюда их еще не завезли.
Мне не хватает инструментов для комфортного кодинга. Или это тоже не её задачи? Если исключить еблю с памятью, то кодинг на жабе и крестах - дрочево одного уровня. Причем в C++14 уже даже комфортнее будет.
Ладно минусы есть базара нет, какие альтернативы? Си шарп на голову лучше или кресты? Что сейчас есть, чем можно заменить джаву и , что не будет иметь всех этих недостатков?
>кодинг на жабе и крестах - дрочево одного уровня
Наркоман или дальше хелоувордов не заходил?
Что значит кривые абстракции и бесполезная система типов? Как ты предлагаешь сократить синтаксис? Что не так с дженереками? Такое ощущение, что у тебя какие-то личные комплексы, которые ты проецируешь на язык.
Как раз таки заходил. Когда пришел на жабу7, подумал не попал ли в прошлое лет так на 10. Простейшие задачи из крестов выполняются в столько же или даже больше ебли.
Хуй знает, как ты программируешь, что у тебя джава = кресты по ебле. Вообще-то это не так.
Он тебе вроде как ясно написал >>840142
>Если исключить еблю с памятью
То да, кресты уже давно обогнали яву по фичастости синтаксиса еще в 11 стандарте что не отменяет того факта, что наговнокодить на них легче, не отрицаю.
>>840143
Любой современный жвм язык инб4: КОКОКО ХИПСТАПАРАША, хотя в таком случае уткнёмся в изначальную проблему что по прежнему тащим с собой убогую жвм, а на поприще нативных языков - ты сам знаешь что есть.
> Как ты предлагаешь сократить синтаксис?
В жабе: Кококо кудах = new Кококо();
В котлине: кудах = Кококо()
Зато в джаве сразу видно тип объекта. Это все вкусовщина на самом деле, реальных проблем у языка нет, таких, что вот пиздец нужен новый, это все нытье.
Точнее val кудах = Кококо()
Его тип видно в любом случае, а так же она позволяет много где сокращать код кроме объявления переменных (хотя бы при итерации по коллекции и тд).
Добавили вывод типов в шарпе - все писались от радости.
Добавили вывод типов в плюсах - все писались от радости.
Хотят добавить его в яве - явиндусы начали пронзитель визжать "НЕ УБИВАИТИ МАЙУ УТИНУЙУ ТИПЕЗАЦЕЮ!!!". Я ахуеваю - насколько же люди готовы жрать говно. Тут вообще стоило пошутить о том, нахуя вам знать этот самый тим - жвм всё равно потрет))) все це Object)))))
>>840157
Хуй знает как у тебя голова вообще работает.
Val и var в девятой джаве появятся
>Добавили вывод типов в шарпе - все жрали говно и причмокивали
>Добавили вывод типов в плюсах - все жрали говно и причмокивали
>Хотят добавить его в яве - яваиндусы не захотели жрать говно
Ну хз
Точнее Collection<Pair<Bitmap, BitmapFactory.Options>> bitmaps = new Collection<Pair<Bitmap, BitmapFactory.Options>>();
Взял наугад пару имен классов из спринга:
>AbstractSingletonProxyFactoryBean abstractSingletonProxyFactoryBean1 = AbstractSingletonProxyFactoryBean<AbstractServiceLoaderBasedFactoryBean>( abstractServiceLoaderBasedFactoryBean1);
Ну да. Нинужна. инб4: выйдет ява9 и ты будешь тоже причмокивать))
Алсо, я ещё порофлю если в 9-ке не введут дедукцию как в плюсах и такой код получится уменьшить только на 20 буковок))).
Ну так хуле кукарекаешь говно или не говно var/val?
Ладно это пиздец.
Ну-ка быстро кинул пруф на JEP или пиздабол.
В java 9 давно уже фичафриз произошел, ничего, кроме того что там уже сделано, не добавится.
Кинул тебе за щеку. Проверяй.
ф
*
Да-да, джава говно, гугл прекращает разработку Андроида. Съеби уже из треда "мёртвой платформы".
Это можно делать с помощью задания бордера? Или только пилить кастомную вьюху?
Нарисуй схематично. Если я правильно понял, можно просто поверх итем слева наложить drawable с впуклой границей, а картинку поверх него.
в чем преймущества и какой дистрибутив юзаете?
Manjaro. Полёт нормальный
Хотел бы попробовать сделать вменяемую архитектуру без всяких библиотек и костылей, чтобы знать хотя бы какие проблемы эти библиотеки решают и как без них обходиться. Тем более что приложения у меня очень простые.
Просмотрел testing guide от google codelabs, но там уже всё за тебя написано и объяняется мало, я так нихуя и не понял как организовать уровень Model.
Есть ли ещё какие-то годные гайды и стоит ли вообще с этим заморачиваться?
Один хуй написал на форуме, что не нужно слишком выёбываться библиотеками когда делаешь проекты для показа работодателям, и лучше всё писать на голой джаве + SDK хотя бы в одном проекте, чтобы было видно что ты владеешь базой.
2. Есть ли места где можно скинуть свой проект чтобы его покритиковали другие разработчики?
#android-dev похож больше на чат с вопросами, в /r/androiddev ни разу не видел чтобы спрашивали такое, да и вообще всратое место, codereview на stackexchange для объемных проектов с кучей файлов не подходит, там надо код сразу постить в тело поста.
https://github.com/googlesamples/android-architecture
там куча вариантов от plain MVP и Clean Architecture до Rx и прочего
Паттерны с голой SDK почти не совместимы.
У тебя Android API использует God Object - Context. Его нужно как-то внедрять в различные части архитектуры. И это только начало проблем.
Можешь сделать какой-нибудь MVP, но только ради разделения логики.
>Один хуй написал на форуме, что не нужно слишком выёбываться библиотеками когда делаешь проекты для показа работодателям, и лучше всё писать на голой джаве + SDK хотя бы в одном проекте
Посмотри по вакансиям, в половине случаев будут нужны сторонние либы. На собесе можно наверное и на словах пояснить роль некоторых компонентов SDK, их преимущества и недостатки
Анончики мне тут письмо счастья от гугля пришло - has been removed from Google Play because it violates our device and network abuse policy and section 4.4 of the Developer Distribution Agreement
И я нихуя не могу понять в чем тут дело т.к. это простая покупалка за рекламу вконтактовских голосов. Ну не делает оно ничего из расстрельного списка гугла. В их техподдержку тикет уже отправил но может быть тут кто-то с подобной хуетой сталкивался?
У меня было приложение, которое не проигрывало музыку из вк напрямую на смартфоне - забанили за мимикрию под оф. приложение.
Я вижу 2 проблемы
1) Ты накручиваешь рекламу, заставляя пользователей просматривать рекламу
2) Ты "продаешь" товары других магазинов
Нет, на оба варианта. Реклама у меня одна - от тапджоя. Это такая сеть мотивированного трафика. Грубо говоря пользователи имеют офферволл с задачами типа просмотра видео и получают за их выполнения фантики. На эти фантики они могут заиметь себе голосов. Там нечего накручивать и я ничего не продаю тащемта. Плюс подобных приложений(с голосами и не только) в маркете хуева гора, некоторые очень старые
Да и мотивация в этом самом пункте соглашения тоже не связана с контентом или продажами:
4.4 Запрещенные действия. Вы обязуетесь не совершать в Магазине действий (включая разработку и распространение Продуктов), которые нарушают или прерывают работу устройств, серверов, сетей и других объектов и сервисов третьих сторон, включая пользователей Android, компанию Google и операторов мобильной связи, а также наносят им другой ущерб. Запрещается использовать информацию о покупателях, полученную в Магазине, для продажи или распространения Продуктов вне Магазина.
>некоторые очень старые
Это не аргумент, мое личное приложение пролежало 2 года, а дропнули его после того как я инфу о нем обновил.
> Продажа офферов
Не знаю как др. приложения попали в GP, но моя компания занималась перепродажей офферов профессионально.
Для этого мы просто сделали мобильный сайт без приложения, что бы сразу на Android/iOS.
Налили рекламу, развивали пол год и выкинул это нахуй, тк денег приносит меньше чем затраты на рекламу.
> libgdx
К сожалению, он HTML5 поддерживает только для Java.
Kotlin, при том что он сам может конвертироваться в JS, юзать пока нельзя.
*что
>А то там с kotlin?
Да норм все, под android/ios/destop можешь уже сейчас писать на libGDX + Kotlin
Но если хочешь еще на HTML5, то только Java.
Компилятор Kotlin(1.0.3)->JS уже рабочий, сейчас добавляют поддержку Kotlin 1.1
Так же работают над компилятором Kotlin->LLVM, возможно через год можно уже будет писать нативные приложения без JVM.
GWT всеравно говно.
Я чего-то не понимаю, если есть компиляция в js, то почему бы не пихнуть полученный js на сайт?
Потому что есть еще библиотеки фреймворка, которые должны быть написаны под каждую конкретную реализацию (бэкенд).
Никто не хочет сам писать всю нативную часть (WebGL, HTML5 Canvas, IO, события, асинхронность).
Спасибо, анончик, откуда ты все вообще все это знаете.
Ну я-то без рекламы и на коленке, ничего не скажу. Просто приятная прибавка к зп, надеюсь не была
двачую
Пиздит инфу с бд и отображает ее в виде "юзер - длина члена - место в рейтинге "
Как её правильно и красиво сделать, какие вью использовать? Отображать будет как часть списка, так и одного юзера.
ListView в 2016, мда
Пофиксил, добавил булевый флаг isPaused и filter на !isPaused в chain
RecyclerView ?) В к-ве layout-а для viewHolder-а запили LinearLayout orientation=horizontal, поставь весы и будет тебе счастье
Последняя x64Ubuntu. Потому что мой нэтбук 7-летней давности обкакается тянуть студию на маздае. он и с убунтой то на бреющем полёте, хуево быть днищебродом
Сервис. При его завершении сохраняешь всё в бд (если твой запрос ещё не выполнился)
так как мне понять, что запрос заново не надо отправлять, при открытие активити?
То есть, перед началом такого запроса надо чистить эту таблицу? А сервис же должен быть с android:process=":remote", да?
> #android-dev похож больше на чат с вопросами
Это что и где? Slack какой-то или что? Доставьте ссылку
Вывод списка ёбырей твоей мамаши-шлюхи. При клике на элемент списка должна выводится информация о последней ебле, список поз, количество проглоченной спермы и список твоих братьев и сестер.
во втором посте есть.
а так ничего сверхсложного просить не будут. приложение написать на самом собеседовании вряд ли заставят делать.
по дефолту теор опрос(ООП, джава, лайфциклы, треды и тд) и еще могут попросить sql запросы пописать
лол, что орнул)
ээ, а в чем проблема ? Пока они не становятся вложенными, все работает эффективно...
Спасибо
Ок, но это будет недели через 2 в лучшем случае. Кстати за какое время предполагается реализация такого рода заданий?
Обычно на подобные задания недели две (реже - три) и дают. Не потому, что две недели действительно необходимы для такого задания, но чтобы у кандидата было время всё сделать, на случай, если он ещё работает в другом месте.
Xamarin Forms - если знаешь XAML то наговнокодить приложуху под Android (и сразу iOS) сможешь очень быстро.
А теперь брысь с такими тупыми вопросами.
Не ньюфаг-вкатывальщик, но понятие архитектуры в голове весьма размытое.
Как грамотнее это сделать? Пока думаю записывать дорожку, конвертировать ее в массив байтов, отправлять массив, на получателе конвертировать массив обратно.
Хуевая идея или сойдёт?
Хуевая.
Сервер есть? Почему бы не записывать туда mp3 файл. И при получении самому поигрывать MediaPlayer'ом или AudioTrack'ом? Первый даже по урлу умеет играть.
Деды не умели бороться с крэшами, но это не помешало им дойти до Берлина.
Есть. Попробую и так
unreal engine
Блядь, написал простое приложение, скачал на телефон, установилось без проблем, но блядь открыть его тупо нельзя, после установки только "готово", а открыть нельзя, лол. Где я проебался?
Алсо, шаблон для приложение выбрал пустой, может в этом проблема?
Правильно я понимаю, что это будет более легковесно, чем broadcast слать, где постоянно память выделяется?
Бамп, гуру архитектуры, где вы?
>Норм ли сохранять данные в презентере (он у меня находится в ретеин фрагменте) и если данные не нулл, то отдавать их, не делая запрос?
Если тебе нормально делать "Fat Ugly Presenter", то все OK.
При этом ты конечно нарушаешь Single Responsibility Principle
По хорошему презентер должен быть тонкой прослоечкой между View и Model
А хранить во вью ViewState и если данные загрузились складывать их во в ViewState, лучше?
Если у тебя обычный сервис то он и так в юи треде дергаться будет. Также можно использовать Messenger.
Отвязывай бизнес логику от Android лайф-сайкл-костылей.
Разрушается твой презентер вместе с активити - это нормально.
Делай кэширование данных по времени на уровне модели.
>>842487
>А где тогда вся бизнес-логика по-твоему будет?
В модели конечно и тесты конечно должны быть на нее.
Лучше вообще делать чистые JavaSE модели и быстро тестировать их на десктопе.
Ознакомься:
https://ru.wikipedia.org/wiki/Model-View-Presenter
https://youtu.be/Nsjsiz2A9mg
Нахрен тебе синглетоны, у тебя же база данных есть - это единственный синглетон который нужен.
Анончики, у меня есть две активити, в этих активити фрагменты, как мне сделать переход с shared elements из одной активити в другую, если эти shared elements находятся во фрагментах в разных активити?
Окей, допустим у меня есть презентер CityPresenter, должен показывать имя города и фотку.
У презентера срабатывает допустим onShow()
У меня есть cityId и myView, значит я стучусь в базу прошу самую свежую инфу про данный город, получаю:
а) ничего, показываем прогрессбар с заглушкой, запускаем запрос на получение города
б) что-то протухшее, показываем с помощью myView.setCity(city) myView - платформо-независимый интерфейс для вьюхи, запускаем запрос на получение города
в) не протухшие минуту назад получили данные, показываем как ив предыдущем пункте
Во-всех пунктах подписываемся на оповещения об изменения города, после получения которых отображаем новую инфу.
Все верно?
Google motherfucker do you use it?
http://stackoverflow.com/questions/27524674/shared-element-transition-among-fragments-that-belong-to-different-activities-in
> В модели конечно и тесты конечно должны быть на нее.
> Лучше вообще делать чистые JavaSE модели и быстро тестировать их на десктопе.
Как ты чистые JavaSE модели на андроиде сделаешь?
Это презентеры должны быть свободными от ведройдовских зависимостей и тестироваться на JVM.
Думаешь, ссылаясь на дядю Боба, ты выглядишь умнее? А вот хуй, ты знатно обосрался.
Да вроде норм.
Можешь еще через какой-нибудь okhttp юзать встроенное HTTP кэширование.
И постарайся не облажаться с утечками активити.
>Как ты чистые JavaSE модели на андроиде сделаешь?
1. Создаешь отдельный "Module" в AS или IDEA,
2. выбираешь Gradle/Kotlin
3. В Android build.gralde добавляешь в dependencies
compile project(':core')
>Это презентеры должны... тестироваться на JVM.
Если презентеры тонки, то в принципе там и тестировать то нечего
>Думаешь, ссылаясь на дядю Боба, ты выглядишь умнее?
А ты думаешь, что ни на кого не сослался и кто-то должен верить твоему пиздоболию?
Для меня Боб и его архитектура важнее чем Java или Android-костыли,
потому что его подходы не зависят от языка спокойно юзаю их с Kotlin.
Для некоторые здесь, ну просто НЕ преодолимая :3
Понятно. Иди нахуй.
Для меня Боб и его архитектура важнее чем такие мелочи.
Какой нахуй кэш, когда у тебя запрос еще не выполнился? Ты вообще не понимаешь, что несешь?
> Открывает окно
> Начинает как бешеный врящать окно
Дядя, ты нормальный (не отвечая, я уже понял что нет)?
В любом случае, после пятого твоего безумного поворота в дело уже пойдет кэш
А запросы на сервер так же отправлять будешь? "Похуй, что запрос уже идёт, отправим еще раз?"
В случае с Rx можно хранить в синглтоне/ретеней фрагменте обзервеблы с кешем, тогда можно будет подписаться на уже идущий запрос. Или главным подписчиком должна быть бд, тогда можно хранить начатые, но не законченные запросы в key-value хранилище или таблице, или даже в аллахе, и в презентере смотреть идет ли интересующий нас запрос, в таком случае не будет нужды совершать новый, а нужно просто подождать пока нам придет нотификация от бд.
> В случае с Rx можно хранить в синглтоне обзервеблы с кешем, тогда можно будет подписаться на уже идущий запрос
Есть какой-нибудь пример кода, как это организовано?
Мы тут говорим про идемпотентные запросы (коих 90%), которые отлично кэшируются и на стороне сервера.
Но если ты такой любитель вращать телефон, то сделай отдельный отнопоточный пул для web запросов.
а вот как нормально хранить начатые запросы в бд, какой ключ должен быть? Использовать время начала запроса? Можешь поподробнее про это, пожалуйста?
Да любой, блять, главное чтоб уникальный, и о нём знали твои презентеры.
Смотри:
1) Пилишь синглтон, где лежит мапа с обсёрваблами и их Id.
2) Презентеры знаю айди обсёрваблов, и как-нибудь смотрят на их состяние.
Правда, данный велосипед был реализован гуглом 3 года назад. Называется Loader.
Так что RX-дауны таки соснули.
А потому Google сам завелосипедил RX для своего Google.Music
и потом заопенсорил его на github (лень ссылку искать).
И была так только одна issue "нахуй он нужен если есть RxJava?"
Забанят обязательно.
Суть проста: вызвал метод bt.readChar(device, callback(){)) и получил вызов метода коллбека - onComplete и onError.
Чтение может выполняться долго, пользователь закроет к хуям к этому времени активити, потом обратно развернет - и не поймет что происходит - ведь мы и коллбек проебали и состояние интерфейса (читаются данные, ждите бля)
Собсна, как быть с этим? Как обычно такие вещи делают?
>Как обычно такие вещи делают?
На Android - обычно кучей костылей и хранение состояния в каком-нибудь permanent storage.
Если так подумать - то это пиздец задача.
Нужно:
1) Где-то держать коллбеки
2) Где-то хранить состояние
Единственный вариант - это перенести коллбеки в сервис, где хранить состояние и модифицировать его через эти коллбеки.
В UI синхронизировать состояние и следить за его изменением.
Т.е. получается нужна еще одна прослойка между BT API и собственно UI.
Индусы ебанулись?
Потому же как и для получения MAC адреса.
Это теперь приватные данные пользователя (его идентификация),
а отдельные пермишены для bluetooth/mac-address не стали плодить.
IRC
В основном пишет ошибки импорта, их там тысячи.
> у тебя норм все после последнего обновления билд тулзов?
Во-первых, спасибо что напомнил обновится.
Во-вторых, сейчас обновил build.gradle и перебилдел - все норм.
Да в котлин slack никаких новостей, что у всех все сломалось.
> Error:(3, 12) Unresolved reference: json
> Error:(4, 8) Unresolved reference: java
> Error:(7, 45) Unresolved reference: HashMap
> Error:(10, 25) Unresolved reference: JSONObject
И так со всеми классами андроид сдк.
А какая у тебя версия плагина стоит (я кстати в чистой IDEA сижу) и что прописано в ext.kotlin_version?
Можешь кстати задать вопрос сюда:
https://discuss.kotlinlang.org
http://kotlinlang.slack.com/(инвайт тут http://kotlinslackin.herokuapp.com/)
>>842937
>>842935
Починил. Он с android gradle plugin 2.1.3 в студии 2.2 не собирается, при этом java проекты с этой версией в этой студии нормально собираются.
Блять. Жму после gradle sync "build apk" - билдится, появляется апк. Жму make project или debug selected configuration- ошибки. В прошлый раз при make project ошибок хотя бы не было.
Взяли на стажировку?
Это release candidat как бы.
>>843067
Блядский скроллинг сколвью в дизайнере и встроенный лэйаут испектор, теперь ту отдельную ебалу запускать не надо.
>встроенный лэйаут испектор, теперь ту отдельную ебалу запускать не надо.
Это тот который меряет производительность? Тогда ваще ништяк.
Сам код мессендежра
https://github.com/siacs/Conversations
Методы отправки сообщений лежат в классах ConversationFragment и ConversationActivity по ключу CHOOSE_FILE.
Помогите, у кого найдется полчаса для стажора. Спасибо
пиздец ты ебанутый, ты мог хотябы нерабочий свой код куда-то отдельно залить? какой нормальный человек будет разбираться в вашем говне из 3к строк? темболее за нихуя. охуеть блять
Это не мой код, это исходники на основе которых мы делаем и я в душе не ебу что именно у меня не работает. Код не читабелен. Может кому-то еще не повезло с этим работать
Ты не пробовал, ну я не знаю, ПОДКЛЮЧИТСЯ ДЕБАГЕРОМ И ПРОШЕЛКАТЬ ПО БРЕЙКПОИНТАМ?
И да, вопрос - если у меня не очень быстро летает студия на винде(4 гига оперативки, 2.3GHz) то есть ли смысл накатить убунту и на неё студию?
У меня некоторое время была убунта с AS. Вроде пошустрее винды запускалась. Но я там не успел ничего сделать, нужно было переустановить винду.
Потому что она чистая была.
Есть один вопросец.
Каждый сталкивался с тем что есть какой-то список и по тапу на элемент пушится страничка с деталями.
Но вот если ты нажмешь двумя пальцами на 2 разных элемента, или аки сумасшедший будешь тыкать тыщу раз в сек на один и тот же элемент - запушится больше чем 1 страничка.
Но походу это не единственный случай.
Например есть 2 кнопки одна из которых открывает свой попап. Если кликнуть их вместе опять получу хуету.
Ну и т.п.
Короче, есть ли какой-то общих подход. Может есть что-то в Андроиде встроеное? Или всё же нужно писать всякие IsBusy и прочее говно?
Сам вкатился с веба, потому наверное задаю глупые вопросы.
Встроенного нет, я использую Rx с байндингами для вьюшек. Тогда можно легко сделать через debounce, а если нужно показать что вьюшка некоторое время неактивна:
clicks()
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(event -> v.setEnabled(false))
.observeOn(<SCHEDULER>)
<OTHER STUFF>
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(result -> v.setEnabled(true))
.subscribe();
ыыы.
то есть всё равно каждый отдельный случай надо вручную хэндлить. Спасибо.
А не знаешь, почему не запилят какое0нибудь глобальное решение? Ведь каждая прилага сталкивается с этим.
А те не похуй на это? Если юзер хочет так делать, пусть делает, google сам забивает хуй на это в своих приложениях
>>843269
Conversations распространяется под GPL. Следовательно, ваш производный код тоже должен быть доступен.
Так что, выкладывай исходники или иди нахуй.
чойта? называю не так? Так что такого? :)
хер знает. думал что не очень хорошо чтобы было так.
Проблема актуальна только для ограничения частоты следования запросов на сервер, встречается это в основном в формах поиска и автодополнения.
Когда-то я это делал встроенными средствами языка и андроида для формы поиска: очередь запросов и собственно ЭКЗЕКУТОР.
Лист с итемами, при удалении итема он не сразу пропадает из списка, а становится полупрозрачным и поверх него появляется надпись удалено. Хз как такое реализовать без космической ебли, надеюсь на помощь анона.
Делаешь вьюхолдер, в onBindViewHolder, если состояние = удалено, делаешь текст видимым, а бэкграунда вьюхолдера меняешь цвет.
У меня боязнь больших скоплений людей, ну нах.
Не, как создать текст поверх другой вьюхи? Надпись должна быть именно поверх другой вьюхи, типа как в фш со слоями.
Нахрен нужны конференции конкретно про android/ios, если они не от Google/Apple?
В который раз будут пережевывать android-костыли и рассказывать про свои велосипеды.
Может быть из JB кто-нибудь придет рассказать как делать hello-world на Kotlin.
Конференции JUG.ru и то интереснее для android разработчиков.
П.с первый день
Ну просто в туторе гугла было вот это
>Note: The XML layout generated by previous versions of Android Studio might not include the android:id attribute. The call findViewById() will fail if the layout does not have the android:id attribute. If this is the case, open activity_display_message.xml and add the attribute android:id="@+id/activity_display_message" to the layout element.
А у меня последняя версия, по идее должно было добавляться
Да добавил я, просто думал, что можно как-то настроить, чтобы по умолчанию cоздавался id, ну да ладно, это не принципиально.
все правильно делаю?
>не очень быстро летает студия на винде(4 гига оперативки, 2.3GHz) то есть ли смысл накатить убунту и на неё студию?
имеет, но не надейся на существенный прирост производительности
Имеетсмысл SSD поставить и озу до 8 гб.
1. Kotlin + RxJava
2. Retrofit
Мне нужно написать модуль для существующего приложения.
Для разнообразия решил написать его на котлине.
Этот модуль - фрагмент c некоторым функционалом (карты гугла, загрузка данных с сервера, кеширование). Насколько сложно будет встроить его в приложение на Java?
Посоветуйте, как это лучше сделать.
Подумал и решил таким образом: на сервере храниться xml/json с данными(вид пиццы: маргарита; цена: 200 рублей). Приложение стягивает xml с сервера, затем строит layout.
Получаем список пицц на экране пользователя. Юзер кладет пиццу в корзину, выбирает количество, рассчитывается цена. Покупку можно сделать путем отправки письма на емеил доставки пиццывидел такую фишку в одной аппликухе.
Посоветуйте, это годная идея для первого проекта?
Может, уже есть готовые велосипеды?
Советую отсюда https://github.com/streamsupport/streamsupport
взять CompletableFuture и юзать их везде где нужны асинхронные операции.
Ибо они гораздо проще (нет сайд эффектов на подписывание и они "горячие" по умолчанию"),
но при этом их можно так же удобно чейнить и с async/await они лучше совместимы.
А RxJava нужно использовать только там где реально нужен реактивный-поток-данных,
те когда заведомо известно что будет несколько результатов.
Не понял, коллбэки они и есть коллбэки, единственное, что на мой взгляд здесь можно сделать - вынести их создание в отдельный CallbackManager какой-нибудь и просто инстансы получать...
Правильно я понимаю, что поняв суть CompletableFuture станет ясна и суть RxJava?
При подписывании на обсервабл у него по дефолту срабатывает onSubscribe, в котором например начинается запрос в сеть. Если ты подпишешься, отпишешься и снова подпишешься на него при условии что запрос еще не отработал, то будет два запроса вместо одного.
Ну а "горячий" подпишет тебя на запрос который в процессе, если такой есть.
бамп вопросу
Да, точно. RxJava мне абсолютно не нужна для этой задачи.
>Что значит "горячие по умолчанию"?
Это значит что "по умолчанию" метод который возвращает CompletableFuture будет выполняться сразу,
в отличие от возвращающего Observable, у которого надо с начало вызвать subscribe(...), даже если тебе не нужны результаты.
те если у тебя есть класс с методом
addUser(user: User):Observable<*>
то просто вызов service.addUser(User()) - не сделает ничего,
а нужно делать service.addUser(User()).subscribe({}, {})
>Правильно я понимаю, что поняв суть CompletableFuture станет ясна и суть RxJava?
CompletableFuture - это промисы https://ru.wikipedia.org/wiki/Futures_and_promises
RxJava - это специфичная реализация идеи https://ru.wikipedia.org/wiki/Реактивное_программирование
Нельзя сказать что-то лучше, они для разных целей.
В Oracle это поняли и в той же Java 9, завезли Flow (это RX от JVM)
хз, может будильники не тру
Ничего.
Сейчас после обновления SDK Platform Tools до 24.0.3 нихуя не работает компиляция на Windows XP (тупо не запускается adb), откатил до 24.0.1, все нормально.
И Support Package Library версии 38 нихуя не содержит библиотеки поддержки как проекты Эклипс. Раньше можно было использовать те же recyclerview, appcomat и cardview, теперь их тупо не привяжешь к Андроиду.
Т.е. теперь расклад такой: если хочешь писать под Андроид в Windows XP - не обновляй Platform Tools.
Если семерка и выше, но юзаешь эклипс (как у меня, нетбук 2010 года тянет Андроид Студию, но с большими тормозами), не обновляй Support Package Library или вообще не юзай библиотеку поддержки.
Бери консольку и конкпелируй из нее, че ты не как этот. Подсветку из саблайма/атома/вима/емакса.
Loaders/RxJava/бекспорты CompletableFuture
итак возникло пару вопросов:
1) куда устанавливается АС, джава сдк, андроид сдк в линуксе? есть ссд 120 гб, разбит на разделы по канонам линукса(убунты). интересует хватит ли мне места если у меня есть 2 раздела по 55гб(/home, /)
2)посоветуйте тему диплома на андроид. могу в простое клиент-серверное с использованием интентов, потоков, хттп реквестов. на нулевой не отвечают
Ты в xml собрался данные хранить или разметку, если второе то нахуя, ты еще поебешься с тем как это сделать. Это не веб где хтмлки туда-сюда гоняют.
Есть даже бага на багтрекере, даже не одна. Студия не определяет статические методы, если нет переменной в xml
1) Как-то проверять после bindView, что есть результат и обновлять View
2) Перезапустить запросы при перевороте, но это не вариант, зачем 2 раза запросы слать?
Ты про кастомные атрибуты? Ну у меня везде есть переменные.
Кодирую сейчас задание на стажировку из шапки и охуеваю от раздувания кода при добавлении кусочков функционала и все это становиться сильно связано и smells bad, чувствую что с такой минималочкой(события, инжектор, орм) количество кода и быдломеханик сократится в разы, или такие тестовые лучше писать на голяке?
Запрашивать каждый раз это вариант.
А вообще вероятность того, что айпишнег поменяется внезапно крайне мала.
Мне кажется, в задании из двух активити нахуй не нужно забивать проект либами. Не та это задача, где они что-то сделают проще/красивее.
Важнее, чтобы ты мог в разделение логики (mvc там). Ну и солид, инверсия контроля, никакой сильной связи. Очень странно, что у тебя там что-то раздувается вообще
Нихуя подобного, юзер может переключиться с wi-fi на мобильный интернет, к примеру.
Это вот это?
http://hannesdorfmann.com/mosby/viewstate/
Но здесь нет решения этой проблемы.
Только сохранения состояния View после поворота экрана.
Мне то другое нужно.
Тебе нужна связка presenter -> viewstate -> view. Viewstate привязан к циклу preneter'a и зеркалирует все вызовы view. Если view существует и привязана, то viewstate сохраняет у себя последнее состояние и отправляет его во view. Если view не существует, то просто сохраняет состояние. В момент привязки view к presenter, состояние из viewstate применяется к view.
Ага! Все понятно. Пока существует презентер - храним состояние View в прослойке между реальным View и Presenter.
Как только View забиндили - синхронизируем всё к хуям.
Просто и логично.
это картошка через шайбу проросла
Ведь и тот и тот в другом потоке задачу выполняют и возвращают результат в main thread?
Посмотри конструктор View. Андроид костылерожденный.
Мне сразу стало интересно - а как подобные уебки хранят презентер? Неужели у них постоянно висит армия синглтонов?
Презентер у тебя либо ретеинфрагмент, либо привязан к активити и уничтожается если активность isFinishing.
Но я конечно уебок, ага.
Test
[/code]
[code lang=c]
Test
[/code]
[code lang="c"]
Test
[/code]
>нетбук 2010 года тянет Андроид Студию, но с большими тормозами
такая же ситуация, только я пересел на убунту еще в позапрошлом году, а то вында бы от студии вообще обкакалась
скробблинг на ластик
автор mosby делает все в ретеин фрагментах, т.е. твой презентер всегда висит в твоем фрагменте, только нужно занулять эллементы ui в onDestroy
Очко у тебя куцее
Самый минимум: Retrofit
Для продвинутых (если знаешь, что это и зачем): Dagger 2, RxJava
Butternife - по сути синтаксический сахар. Хочешь, используй, не хочешь - не используй.
В тестовых заданиях обычно просят по минимуму использовать сторонние либы тк:
1) От тебя требуется показать знание Android SDK и общую сообразительность
2) Ты один фиг не умеешь их готовить и только увеличишь кол-во макарон в своем коде, в котором мне придется разбираться
3) На работе все равно будут использовать др библиотеки
Каким образом вызываются методы из другой apk?
https://github.com/Mishiranu/Dashchan-Extensions/wiki/Extension-devepment-tutorial
Скорее-всего, просто кидают друг-другу интенты.
Там нет RxJava, нет Retrofit и при этом прекрасно всё работает.
Распространения чего? Если твоё приложение использует более одного человека, это уже распространение.
Всё прекрасно работает != качественный код
Там многие вещи — велосипеды. HttpResponse, HttpClient, AsyncManager, почти всё на AsyncTask'ах, довольно громоздкие сервисы.
Но приложение действительно работает хорошо, из имеющихся клиентов самое лучшее. Но я уверен, если бы автор писал Dashchan сейчас с нуля, то он получился бы еще лучше.
Я до конца не понимаю как там некоторые вещи работают - почему по время переворота экрана ничего не уебывается, ведь он не использует retain fragment?
>>845670
Еще вот что - там при Destroy происходит остановка AsyncTask'ов, но как я не пытался при повороте девайса данные всегда корректно загружались. Что это за магия такая?
А он вроде как его один и использует. Просто за советом для себя пришёл.
Фрагментов у него вообще нет, только активити (код старый).
Есть лишь один статичный фрагмент (это говнокод и почти гарантированная утечка), в котором он, видимо, хранит состояние. Ну и вообще, там по большей части WebView используется.
В общем, код Даши как пример для подражания и хороший архитектуры — явно плохая идея.
Что-то не похоже:
> Это не мой код, это исходники на основе которых мы делаем
Плюс, в прошлом треде он что-то похожее про передачу файлов по xmpp спрашивал, говоря, что сроки горят.
Самописный AsyncManager и LruCache. AsyncTask отдает результаты не в активити (которой уже может не быть), а в сервис/свой синглтон.
Ну и если он просто сам для себя пишет, тогда точно не понимаю, почему бы просто не выложить свой форк на Гитхаб.
Ну, между ними код вполне открыт. В паблик ничего не выкладывали. А когда выложат — уже нужно требовать.
Ну да, это верное замечание. Правда, что-то я сильно сомневаюсь, что они потом его откроют.
А в каких случаях эта активити открывается, ты смотрел?
>>845692
>>845683
>>845683
WebView там нигде не используется. За месяц каждодневного пользования Дашей я ни разу его не видел.
Алсо, Dashchan пример того, как имея прямые извилины штатными средствами (без доп. библиотек для хипстеров) сделать хороший продукт.
Это навязанные Западам чуждые нам стереотипы! Обколются своими СОЛИДами и тестируют друг друга в юниты.
все, разобрался
проорал
Мне кажется, правильная идея - игнорировать к хуям SearchView из основной библиотеки.
Ебанутейшая инициализация, костылинг велосипедов для сохранения истории поиска. На старых версиях меняется цвет текста в окошке, цвет кнопочек и всего-всего - и главное, что это никак не пофиксить.
В приложении ютуба сделан свой SearchView, который гораздо удобнее хуйни, вылезающей по середине тулбара.
WebView с поиском Гугла
Да, извини, еще такой вопрос:
Если локализации твоего региона нету то используется дефолтная. А что если локализация твоего региона частичная, тоесть некоторых стрингов просто нету. Тогда будут использоваться дефолтные стринги, которых нету в локализации, или вся локализация будет дефолтной?
Ну я имел ввиду, могу ли я написать аналог System.out.println() и чекнуть что-то?
Ну тогда в принципе норм.
>Ты тупой
>из жс-треда
Зачем или если фразы эквивалентны?
Сижут тут давно, что такое картошка в душе не ебу. Думаю анон посоветует годную библиотечку для логгинга, а ты хуйню всякую пишешь.
Охуеть какая годная. У нее есть большая проблема, которую выдают за преимущество - собственный принтер эксепшонов, а именно полного стактрейса, из-за чего принтуется она около 16 мс целый фреим.
В итоге я ее костылил, чтобы она в отдельном потоке срала логами, беря их из блокирующей очереди.
А, у нее еще все под одним тэгом выводится. Так что нужно руками еще тэг дописывать, либо писать обертку, которая будет его дописывать.
Она не будет ничего принтить-форматить если ты не добавишь дерева, ферштейн? А андроидовскому логгеру ты кроме того, что цеплять String.format должен, так еще и в if (BuildConfig.DEBUG) оборачивать должен. Проблема тимбера в том что у него minSdk = 16, непонятно чем это вызвано.
Тебе крашлитика и так логи всунет по всем тредам. Тимбер только позволяет ее красиво в дерево спрятать.
> в if (BuildConfig.DEBUG) оборачивать должен
Ёбнутый что ли?
-assumenosideeffects class android.util.Log {
public static d(...);
public static v(...);
}
> Проблема тимбера в том что у него minSdk = 16
Проблема проблем.
знаю немного теорию vcs
Ага, и сам автор ответа предложил использовать Timber из-за более удобного api.
Опять же если я хочу что-то форматировать, то с дефолтным логером даже если его отключить произойдет создание строки и тд.
А в чем разница между битбакетом и гитхабом, или это просто конкурирущие репозитории?
>>846908
благодарю
Какого нахуй ответа?
В чем более удобное апи?
> Опять же если я хочу что-то форматировать, то с дефолтным логером даже если его отключить произойдет создание строки и тд.
Што?
>Какого нахуй ответа?
http://stackoverflow.com/questions/2446248/remove-all-debug-logging-calls-before-publishing-are-there-tools-to-do-this
>В чем более удобное апи?
Вместо того что бы ебать прогвард с изменением стектрейса можно настроить лог как тебе удобно, посадить несколько деревьев, для крашлитики, другое для аналитики например, опять же в зависимости от билдтайпа.
>Што?
Ты там через плюсик логаешь, да?
Если ты не хочешь через конкатенацию складывать строки для лога, то в дефолтном логере ты делаешь:
Log.d(TAG, String.format("xyi: %s, pizda: %s", xyi, pizda));
Timber.d("xyi: %s, pizda: %s", xyi, pizda);
В случае деффлтного логера произойдет создание строки в куче для нахуй не нужного лога.
В тимбере до ненужного формата просто не дойдет, если ты правильно его настроил.
Ну вообщем-то да. Гитхаб только для гита, на битбакете интеграция с асаной, можно и меркуриал использовать. Опять же 5 репозиториев приватных бесплатно.
> В тимбере до ненужного формата просто не дойдет, если ты правильно его настроил
> Она не будет ничего принтить-форматить если ты не добавишь дерева, ферштейн
А, ну да. Дерево логов краш репорт сервиса мы не подключаем. Я говорю, что тимбер очень долго собирает стактрейс, и это хуево.
>>846896
> логи всунет по всем тредам
Нет, только стактрейс.
> В случае деффлтного логера произойдет создание строки в куче для нахуй не нужного лога.
Так какая нахуй разница? Если ты им дебажишь, то тебе похуй на создание строки. В релизи всё равно вырезается логгирование прогардом
>А, ну да. Дерево логов краш репорт сервиса мы не подключаем
Почему же не подключаем? Подключаем, но логать будем только errorы, ну и warnинги, если сильно хочется.
>Опять же 5 репозиториев приватных бесплатно.
5 человек в группу бесплатно, кол-во приватных репозиториев не ограничено.
Перепутал.¯\_(ツ)_/¯
Когда закончились аргументы. Тебя вообще ебет что я использую для логирования?
Мне поебать
Прогвард не вырежет создание строки, вот пруф:
http://pastebin.com/i3HnQ3Dt
Каждый раз когда лог будет вызываться, будет происходить вызов toString объекта, если бы там был тимбер, то этого бы не происходило, так как не было бы посажено дерево для уровня debug.
Я уже написал: >>846935
Создание строги ему жалко, сука. А потом будут про оптимизацию еще кудахтать.
Спор был о сайд эффектах и отключении логгинга в продакшене. Дефолтный логер нужно оборачивать в if (BuildConfig.DEBUG).
Логгинг нужен что бы не сидеть с дебагером выковыривая значения какой-нибдуь хуйни. Посмотреть данные по запросу-ответу, проверить на лету что вызвалось нужное событие и тд.
Из того же ответа:
> Log.d(TAG, String.format("xyi: %s, pizda: %s", xyi, pizda));
>Timber.d("xyi: %s, pizda: %s", xyi, pizda);
Нахуя писать значения переменных в лог, когда у тебя есть дебаггер? В случае крэша неверное значение будет в эксепшене.
ПЕРЕКАТ https://2ch.hk/pr/res/846976.html (М)
ПЕРЕКАТ https://2ch.hk/pr/res/846976.html (М)
ПЕРЕКАТ https://2ch.hk/pr/res/846976.html (М)
Папка твой деб. Не словленные эксепшны она сама собирает. Те которые словил, ну те да конечно самому надо логнуть.
>Ты понимаешь разницу между логами и стактрейсом?
Конечно понимаю. Но как ты крашлитике логируешь эксепшн? Правильно - через log. Туда же записываешь связанные со сломавшимся функционалом данные.
Ёбнутый штоле?
> Туда же записываешь связанные со сломавшимся функционалом данные
Ты ограничен тем, что ты запихнешь в карту при logException, а я же получаю более полную картину действий пользователя и данных, с которыми он оперировал.
не знал что есть на русском, спасибо, а то на ангельском осилил уже больше половины
Это копия, сохраненная 15 октября 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.