• Безопасность мобильного OAuth 2.0
    0
    Не совсем правильную ссылку нашел. Кажется вот эта вернее:
    bugs.chromium.org/p/chromium/issues/detail?id=170880

    Тестирования в двух компаниях где я работал стабильно находило этот баг:(
  • Безопасность мобильного OAuth 2.0
    0
    Есть браузеры которые custom uri schema не поддерживают: они не открывают приложение, подписанное на такие схемы. link

    К сожалению, они могут быть достаточно популярны. Что делать в этом случае?
  • Про Flutter, кратко: Основы
    0
    Про релизную сборку вопрос открыт — в статье описано, почему дебажная сборка может лагать.

    Про версию системы я не корректно выразился. Я хотел узнать про версию Android\ios. Слышал, что на 4 Android может лагать.

    Сам я на эмуляторе с 8 Android, на ios симуляторах, на реальном устройстве с 8 Android лагов не встречал даже на дебажной сборке.
  • Про Flutter, кратко: Основы
    0
    В релизной сборке? И на какой версии системы?
  • Больше всех пахала лошадь, но председателем колхоза так и не стала
    0
    В сравнении реализации списков какая-то не полная картина:
    В android нужно делать create + bind, а в flutter только create, т.к. виджеты flutter легковеснее android views. Что несколько упрощает разработку.
  • Лицензия на вождение болида, или почему приложения должны быть Single-Activity
    0
    Как узнать высоту клавиатуры, если приложение запущено в split screen?)
  • Пять причин проникнуться симпатией к Flutter
    0
    А откуда берутся тормоза?
  • Реализация поиска с использованием RxJava
    0
    Мне почему-то кажется что прав kpcb.
    subscribeOn указывает поток в котором будет происходить подписка. И во время подписки вы создаете слушатель.
    Слушатель в UI потоке будет дергать subject.onNext(). и возвращаемый observable будет тоже получать событие в UI потоке.
    Но дальше у вас идет метод debounce. Это особенный метод, который возвращает observable, события которого будут производиться в computation sheduler. (Scheduler можно изменить — посмотрите перегрузку метода debounce).
  • Библиотека Reamp: обезболивающее для ваших Android-приложений
    0
    Код становится более тестируемым. В действительности, нам даже не нужны Instrumentation-тесты, т.к. достаточно протестировать презентер и убедиться, что после каждой операции наш LoginState имеет правильный набор данных


    У вас в примере очень необычный тест: вы вызываете login(), а потом сами же в тесте processLoginResult.
    Т.е. если вы забудете реализовать функцию login — то тест все равно будет проходить. Это нормально?

    Поэтому у меня вопрос — так а как именно дождаться в тесте когда ваш стэйт обновится (если это обновление асинхронное)?
  • Новая архитектура Android-приложений — пробуем на практике
    0
    Как с LiveData обрабатывать и показывать ошибки? Заводить отдельный объект LiveData для хранения последних ошибок? И так для каждого действия на экране?

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

    Проблему с поворотом Activity более менее я понял как LiveData решает. А что с убийством Activity при сворачивании приложения?
  • Шишки и грабли Android-разработчика за 2 года
    +8
    В 13 пункте имеется ввиду все же фрагментация, а не фрагменты.

    По поводу 1 пункта, выскажу, возможно, не популярное мнение, но по-моему оно имеет смысл. Если вы только начинаете программировать и пишете приложение «для себя», то, наоборот, постарайтесь не использовать библиотек. Используйте для запросов UrlConnection, парсите json стандартным api андроида, напишите свою «вьюху», вместо того, что бы спереть ее с Android Arsenal. Изобретите свой MVP, orm.
    И только потом начинайте использовать библиотеки. В этом случае, при использовании библиотек будет намного проще найти причину, по которой что-то идет не так.
  • Вводим текст красиво
    0
    Выглядит не плохо. Если решите вопрос с различным форматированием телефонных номеров в зависимости от кода страны, то будет очень полезной либой.

  • Несколько Gradle фишек для вашего Android приложения
    0
    В статье, ссылку на которую я дал в начале как раз и используют такой подход, как вы написали.

    it.extensions в данном примере действительно избыточен, он полезен тогда, когда необходимо указать тип добавляемого расширения.
  • Несколько Gradle фишек для вашего Android приложения
    0
    Спасибо, не знал об этом новом разделе. К сожалению, я не настолько уверен в своем английском, что бы писать англоязычные статьи.
  • Анонс Rambler.Android #4
    0
    Трансляция будет. Позднее будет update к посту со ссылкой на трансляцию.
  • Сложный квест для хабравчан: 25 уровней
    0
    online photoshop затащил)
  • MVP на стероидах: заставляем робота писать код за вас
    +1
    Да, пакет base.
    Можно раскладывать так, что в одном пакете может быть только 1 view (+ его fragment, presenter). Если в каком-то фрагменте могут содержаться другие фрагменты, то каждый из дочерних фрагментов (+ его view, presenter) лежит в пакете одного уровня с первым фрагментом. Т.е. группировать не по «темам», а по конкретным вьюхам.
  • MVP на стероидах: заставляем робота писать код за вас
    +3
    Так ли нужна концепция разнесения классов по пакетам в соответствии с тем, чем является тот или иной класс? Т.е. вот в вашем примере, не проще ли положить CarView, CarPresenter, CarActivity в один пакет car. Ведь чаще всего их редактировать нужно вместе. Я понимаю, что есть рекомендации гугла по именованию пакетов, да и вообще «всегда так было». Но если бы их не было, то как ответите на мой вопрос?
  • В Москве и области в Роkémon Go играет более 180 000 человек. Ежедневный рост 30%
    +3
    Журналисты с первого канала то и ничего не делали. Вообще ничего. Они взяли новость из интернета, которая гуляла как шутка, поверили в нее и выдали за правду, не удосужившись проверить.
  • Microsoft по-партизански настраивает ПК пользователей на автоматическое обновление до Windows 10
    –1
    А я уже и не против бы обновиться. Но несколько месяцев назад так надежно запретил уведомления обновления до 10, что сейчас не могу вспомнить как вернуть их обратно)
  • Рецепты под Android: IoC со вкусом Gradle
    0
    Еще добавим один минус: тестируемость.

    А теперь найдем решение, которое лишено приведенных недостатков:

    Разобьем приложение на несколько модулей:
    1. Модуль с интерфейсами пратформозависимых сервисов
    2. N модулей с реализациями интерфейсов + тесты для каждой из платформы.
    3. Главное приложение с N флаворами (аналогично тому, как это сделано у вас), где в dependencies прописываем требуемые реализации для каждого из флаворов (prodCompile project(":android_services"))

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

    Оставлю открытым вопрос по инициализации зависимостей. Эту проблему можно решить так же как у вас: одинаково называть реализации интерфейсов в разных модулях. Либо как-то более интересно:)
  • Доступна preview Android Studio 2.0: две убер-фичи
    +5
    Релиз и превью немного разные вещи android-developers.blogspot.ru/2015/11/android-studio-20-preview.html
  • Nexus Imprint: дактилоскопическая идентификация для Nexus
    +2
    У моего телефона датчик отпечатков находится там же где и у нексусов. Если взять телефон в руку, то указательный палец оказывается как раз над сканером.
  • Анимируем изменения размеров компонента в Android
    0
    Ну еще добавить изменение padding у LineraLayout. И будет совсем точь в точь)

    Конечно, если потребуется более сложное поведение, то без customviewgroup не обойтись.
  • Анимируем изменения размеров компонента в Android
    0
    Самый простой способ: LinearLayout + android:layout_weight=1
  • Анимируем изменения размеров компонента в Android
    +4
    Такого эффекта как на последнем видео я добился следующим образом:
    1. В layout, который содержит EditText и Button добавил android:animateLayoutChanges=«true»
    2. В слушателе setOnFocusChangeListener изменяю visibility кнопки.

  • Небезопасные разрешения в Android-приложениях
    +2
    android.permission.INSTALL_PACKAGES

    Не вводите в заблуждение людей — это разрешение доступно только системным приложениям. Что бы приложение стало системным — надо еще помучиться.

    Вот его объявление:

    <permission android:name=«android.permission.INSTALL_PACKAGES»
    android:label="@string/permlab_installPackages"
    android:description="@string/permdesc_installPackages"
    android:protectionLevel=«signature|system» />


    android.permission.KILL_BACKGROUND_PROCESSES

    Опять же убьет не все приложения. А только те, которые работают в фоне (За исключением foreground service).

    android.permission.SEND_SMS

    Информация немного неактуальна. Сейчас отправлять смс могут не все подрят приложения, а только выбранные в качестве смс мэнеджера. Если я не путаю ничего)

  • Android архитектура клиент-серверного приложения
    +1
    Мы пойдем по более простому пути...

    А жаль, про то как организовывать работу с RxJava было бы интересно почитать. Причем, интересует именно вопрос хранения данных при повороте экрана. В loader'ах об это думает система, а в RxAndroid обычно советуют cache() + какое-нибудь статическое хранилище для обсерверов. А как вы храните их?)
  • Введение в новый CoordinatorLayout
    0
    Когда увидел, что вместе с 23 SDK добавили еще несколько support библиотек, то о том же подумал.
  • Библиотека Fresco от Facebook
    +1
    Разве формат у ivy и maven репозиторием одинаковый? Я почему спрашиваю — в gradle можно подключить и те и те репозитории, но необходимо отдельно указывать формат — ivy это или maven. Поэтому возникает предположение, что они разные.
    docs.gradle.org/current/dsl/org.gradle.api.artifacts.repositories.IvyArtifactRepository.html
    docs.gradle.org/current/javadoc/org/gradle/api/artifacts/repositories/MavenArtifactRepository.html
  • Работа с архивами Zip и 7z
    0
    Android Stuodio сама скачает библиотеки, а если они устарели, то подскажет о наличии обновления.

    Не совсем верно. Android Studio проверяет обновления только определенных библиотек.
    Тут подробнее: stackoverflow.com/questions/31502189/how-does-android-studio-know-about-new-dependency-versions/31635666#31635666
    Для того, что бы проверить актуальность библиотек можно воспользоваться плагином: github.com/ben-manes/gradle-versions-plugin
  • Табы сверху? Развитие нового интерфейса Яндекс.Браузера
    +4
    Немного оффтоп.
    Единственной проблемой из-за которой я сменил хром на яндекс браузер для меня стала невозможность в хроме задать собственные плитки закладок на странице новой вкладки. А недавно нашел удобный и красивый плагин, который это позволяет делать, так что можно было бы и не переходить. Смешное тут то, что этот плагин — разработка яндекса:)
  • Щупаем Kotlin (и чуть-чуть Gradle) на примере Отправлялки-длинных-твитов (открытые исходники)
    +1
    Возможно ли использовать Kotlin Android Extensions поиска вьюх в элементе списка? Или же все равно придется вспоминать о findViewById? Кстати, есть github.com/JakeWharton/kotterknife — аналог ButterKnife для котлин.
  • Простая и очевидная замена android.util.Log
    +1
    4. Я пользовался Thread.currentThread().getStackTrace(). Вряд ли это быстрее, но выглядит красивее.
  • Передовой опыт Android-разработки
    0
    Если принять во внимание, что ваш проект в дальнейшем будут поддерживать другие Android разработчики, то Gradle предпочтительнее, чем что либо еще, т.к. в последнее время является чуть ли не стандартом для сборки Android приложений. Даже если вы лучше разбираетесь с Maven, заставлять это других делать не вижу смысла.

    Возможно я не прав, но приложение, после обфускации с помощью ProGuard должно работать быстрее: названия методов становятся короче -> поиск по ним становится быстрее. Использовать DexGuard во всех подрят приложениях не вижу смысла.

    А вообще, вы можете сделать Pull Request в оригинальную статью на github со своими комментариями;)
  • XMPP отстой
    0
    Жаль про выбор клиентов про мобильные мало)
    Мы в свое время выбрали libjingle, аргументировав это тем, что используется в Google Talk и может собираться для iOS и Android.
    Потом libjingle стала частью webrtc и ради нескольких мегобайт полезного кода библиотеки приходилось собирать половину хромиума.
    А некоторые баги, на которые заведены таски несколько лет назад так и не пофикшены (с pull requests у гугла не очень хорошо).

    Использовать существующие реализации XMPP на мобильных, наверное, не очень разумно. В последнее время рекомендуется делать доставку сообщений до клиента через что-то типо GCM, а не держать постоянное соединение с сервером.
  • Конференция Google I/O 2015 началась (обновляется). День 1
    0
    Apps Links — как я понял, добавилась возможность проверки на сервере с помощью какого именно приложения открывать данный url.
  • Архитектура приложения малой кровью
    0
    Судя по последнему абзацу так и было задумано.
  • Исследование андроид-вируса
    0
    теоретически нет. Примерный кейс:
    Получаем рут права.
    Добавляем в систему свой бинарник для рута.
    Удаляем данные у SuperSu (или аналога).
  • Как настроить проект LibGDX с Gradle, Google Play Services
    0
    Сталкивался с аналогичной проблемой и решение было на первой же строчке гугла:
    stackoverflow.com/a/17157227/1173794