Как стать автором
Обновить
9
0

Android Developer

Отправить сообщение
Журналисты с первого канала то и ничего не делали. Вообще ничего. Они взяли новость из интернета, которая гуляла как шутка, поверили в нее и выдали за правду, не удосужившись проверить.
А я уже и не против бы обновиться. Но несколько месяцев назад так надежно запретил уведомления обновления до 10, что сейчас не могу вспомнить как вернуть их обратно)
Еще добавим один минус: тестируемость.

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

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

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

Оставлю открытым вопрос по инициализации зависимостей. Эту проблему можно решить так же как у вас: одинаково называть реализации интерфейсов в разных модулях. Либо как-то более интересно:)
У моего телефона датчик отпечатков находится там же где и у нексусов. Если взять телефон в руку, то указательный палец оказывается как раз над сканером.
Ну еще добавить изменение padding у LineraLayout. И будет совсем точь в точь)

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

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

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

Мы пойдем по более простому пути...

А жаль, про то как организовывать работу с RxJava было бы интересно почитать. Причем, интересует именно вопрос хранения данных при повороте экрана. В loader'ах об это думает система, а в RxAndroid обычно советуют cache() + какое-нибудь статическое хранилище для обсерверов. А как вы храните их?)
Когда увидел, что вместе с 23 SDK добавили еще несколько support библиотек, то о том же подумал.
Разве формат у 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
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
Немного оффтоп.
Единственной проблемой из-за которой я сменил хром на яндекс браузер для меня стала невозможность в хроме задать собственные плитки закладок на странице новой вкладки. А недавно нашел удобный и красивый плагин, который это позволяет делать, так что можно было бы и не переходить. Смешное тут то, что этот плагин — разработка яндекса:)
Возможно ли использовать Kotlin Android Extensions поиска вьюх в элементе списка? Или же все равно придется вспоминать о findViewById? Кстати, есть github.com/JakeWharton/kotterknife — аналог ButterKnife для котлин.
4. Я пользовался Thread.currentThread().getStackTrace(). Вряд ли это быстрее, но выглядит красивее.
Если принять во внимание, что ваш проект в дальнейшем будут поддерживать другие Android разработчики, то Gradle предпочтительнее, чем что либо еще, т.к. в последнее время является чуть ли не стандартом для сборки Android приложений. Даже если вы лучше разбираетесь с Maven, заставлять это других делать не вижу смысла.

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

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

Использовать существующие реализации XMPP на мобильных, наверное, не очень разумно. В последнее время рекомендуется делать доставку сообщений до клиента через что-то типо GCM, а не держать постоянное соединение с сервером.
Apps Links — как я понял, добавилась возможность проверки на сервере с помощью какого именно приложения открывать данный url.
Судя по последнему абзацу так и было задумано.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность