Журналисты с первого канала то и ничего не делали. Вообще ничего. Они взяли новость из интернета, которая гуляла как шутка, поверили в нее и выдали за правду, не удосужившись проверить.
А я уже и не против бы обновиться. Но несколько месяцев назад так надежно запретил уведомления обновления до 10, что сейчас не могу вспомнить как вернуть их обратно)
А теперь найдем решение, которое лишено приведенных недостатков:
Разобьем приложение на несколько модулей:
1. Модуль с интерфейсами пратформозависимых сервисов
2. N модулей с реализациями интерфейсов + тесты для каждой из платформы.
3. Главное приложение с N флаворами (аналогично тому, как это сделано у вас), где в dependencies прописываем требуемые реализации для каждого из флаворов (prodCompile project(":android_services"))
Таким образом мы одновременно можем редактировать все реализации без необходимости переключения флаворов и запускать тесты для этих реализаций.
Оставлю открытым вопрос по инициализации зависимостей. Эту проблему можно решить так же как у вас: одинаково называть реализации интерфейсов в разных модулях. Либо как-то более интересно:)
У моего телефона датчик отпечатков находится там же где и у нексусов. Если взять телефон в руку, то указательный палец оказывается как раз над сканером.
Такого эффекта как на последнем видео я добился следующим образом:
1. В layout, который содержит EditText и Button добавил android:animateLayoutChanges=«true»
2. В слушателе setOnFocusChangeListener изменяю visibility кнопки.
Опять же убьет не все приложения. А только те, которые работают в фоне (За исключением foreground service).
android.permission.SEND_SMS
Информация немного неактуальна. Сейчас отправлять смс могут не все подрят приложения, а только выбранные в качестве смс мэнеджера. Если я не путаю ничего)
А жаль, про то как организовывать работу с RxJava было бы интересно почитать. Причем, интересует именно вопрос хранения данных при повороте экрана. В loader'ах об это думает система, а в RxAndroid обычно советуют cache() + какое-нибудь статическое хранилище для обсерверов. А как вы храните их?)
Немного оффтоп.
Единственной проблемой из-за которой я сменил хром на яндекс браузер для меня стала невозможность в хроме задать собственные плитки закладок на странице новой вкладки. А недавно нашел удобный и красивый плагин, который это позволяет делать, так что можно было бы и не переходить. Смешное тут то, что этот плагин — разработка яндекса:)
Возможно ли использовать Kotlin Android Extensions поиска вьюх в элементе списка? Или же все равно придется вспоминать о findViewById? Кстати, есть github.com/JakeWharton/kotterknife — аналог ButterKnife для котлин.
Если принять во внимание, что ваш проект в дальнейшем будут поддерживать другие Android разработчики, то Gradle предпочтительнее, чем что либо еще, т.к. в последнее время является чуть ли не стандартом для сборки Android приложений. Даже если вы лучше разбираетесь с Maven, заставлять это других делать не вижу смысла.
Возможно я не прав, но приложение, после обфускации с помощью ProGuard должно работать быстрее: названия методов становятся короче -> поиск по ним становится быстрее. Использовать DexGuard во всех подрят приложениях не вижу смысла.
А вообще, вы можете сделать Pull Request в оригинальную статью на github со своими комментариями;)
Жаль про выбор клиентов про мобильные мало)
Мы в свое время выбрали libjingle, аргументировав это тем, что используется в Google Talk и может собираться для iOS и Android.
Потом libjingle стала частью webrtc и ради нескольких мегобайт полезного кода библиотеки приходилось собирать половину хромиума.
А некоторые баги, на которые заведены таски несколько лет назад так и не пофикшены (с pull requests у гугла не очень хорошо).
Использовать существующие реализации XMPP на мобильных, наверное, не очень разумно. В последнее время рекомендуется делать доставку сообщений до клиента через что-то типо GCM, а не держать постоянное соединение с сервером.
А теперь найдем решение, которое лишено приведенных недостатков:
Разобьем приложение на несколько модулей:
1. Модуль с интерфейсами пратформозависимых сервисов
2. N модулей с реализациями интерфейсов + тесты для каждой из платформы.
3. Главное приложение с N флаворами (аналогично тому, как это сделано у вас), где в dependencies прописываем требуемые реализации для каждого из флаворов (prodCompile project(":android_services"))
Таким образом мы одновременно можем редактировать все реализации без необходимости переключения флаворов и запускать тесты для этих реализаций.
Оставлю открытым вопрос по инициализации зависимостей. Эту проблему можно решить так же как у вас: одинаково называть реализации интерфейсов в разных модулях. Либо как-то более интересно:)
Конечно, если потребуется более сложное поведение, то без customviewgroup не обойтись.
1. В layout, который содержит EditText и Button добавил android:animateLayoutChanges=«true»
2. В слушателе setOnFocusChangeListener изменяю visibility кнопки.
Не вводите в заблуждение людей — это разрешение доступно только системным приложениям. Что бы приложение стало системным — надо еще помучиться.
Вот его объявление:
Опять же убьет не все приложения. А только те, которые работают в фоне (За исключением foreground service).
Информация немного неактуальна. Сейчас отправлять смс могут не все подрят приложения, а только выбранные в качестве смс мэнеджера. Если я не путаю ничего)
А жаль, про то как организовывать работу с RxJava было бы интересно почитать. Причем, интересует именно вопрос хранения данных при повороте экрана. В loader'ах об это думает система, а в RxAndroid обычно советуют cache() + какое-нибудь статическое хранилище для обсерверов. А как вы храните их?)
docs.gradle.org/current/dsl/org.gradle.api.artifacts.repositories.IvyArtifactRepository.html
docs.gradle.org/current/javadoc/org/gradle/api/artifacts/repositories/MavenArtifactRepository.html
Не совсем верно. Android Studio проверяет обновления только определенных библиотек.
Тут подробнее: stackoverflow.com/questions/31502189/how-does-android-studio-know-about-new-dependency-versions/31635666#31635666
Для того, что бы проверить актуальность библиотек можно воспользоваться плагином: github.com/ben-manes/gradle-versions-plugin
Единственной проблемой из-за которой я сменил хром на яндекс браузер для меня стала невозможность в хроме задать собственные плитки закладок на странице новой вкладки. А недавно нашел удобный и красивый плагин, который это позволяет делать, так что можно было бы и не переходить. Смешное тут то, что этот плагин — разработка яндекса:)
Возможно я не прав, но приложение, после обфускации с помощью ProGuard должно работать быстрее: названия методов становятся короче -> поиск по ним становится быстрее. Использовать DexGuard во всех подрят приложениях не вижу смысла.
А вообще, вы можете сделать Pull Request в оригинальную статью на github со своими комментариями;)
Мы в свое время выбрали libjingle, аргументировав это тем, что используется в Google Talk и может собираться для iOS и Android.
Потом libjingle стала частью webrtc и ради нескольких мегобайт полезного кода библиотеки приходилось собирать половину хромиума.
А некоторые баги, на которые заведены таски несколько лет назад так и не пофикшены (с pull requests у гугла не очень хорошо).
Использовать существующие реализации XMPP на мобильных, наверное, не очень разумно. В последнее время рекомендуется делать доставку сообщений до клиента через что-то типо GCM, а не держать постоянное соединение с сервером.