Видео : «Политэкономия мобильных приложений» часть первая

Сходил на запись к товарищам,  канал называется «Андроид в лицах».

Говорили о политэкономии мобильных приложений.

Вот первая часть

Читать на сайте автора.

Правила безопасности в сети

Добрый день дорогие товарищи!

Поздравляю всех с наступающим новым годом!

 

Читать на сайте автора.

Список названий и версий Android

Очень часто приходится отвечать на вопросы о версиях и названиях операционной системы Android.

Каждая версия Android  имеет свой номер, имя и версию sdk.

Читать на сайте автора.

App Indexing для начинающих

С недавнего времени компания Google позволяет связывать содержимое сайтов и мобильные приложения на Android и IOS при помощи технологии App Indexing .

Суть технологии очень простая — если вы ищете что-то на своем устройстве, и в результат выдачи попала веб страница с привязанным к ней приложением, ОС предложит вам сразу запустить это приложение.

Например, вы искали какую-нибудь страничку с интернет банком (рекламное место), а при поиске вам сразу же предложили мобильное приложение этого банка.

Вот тут опубликована отличная документация для веб мастеров (а вот тут для Android  разработчиков).

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

Сказать, что это удобно и помогает решать многие конкретные задачи — это ничего не сказать. На таких технологиях даже построен бизнес отдельных компаний (рекламное место). Одна из них даже обещала (на ангелхаке) стильную, модную , молодежную толстовку за то, что ты применишь их технологию аналитики в своем приложении. (но правда обещанного три года ждут, а сейчас только первый пошел)

Давайте привяжем страницу блога Приложения с напоминателем паролей от Wi-Fi, хотя вернее было бы эту страницу связывать со страницей разработчика , но про такую возможность  ничего пока не знаю.

1. Изменения в приложении.

Для пробрасывания контекста, в приложение есть специальный инструмент App Indexing API .

С его помощью в приложении можно определить, с какой страницы поиска перешел в приложение пользователь.

Мы же реализуем простое связывание страницы с приложением.

Вот измененный код фильтров намерений в начальной активности для добавления в манифест приложения :

<intent-filter android:label="@string/filter_title_viewrusdelphi">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <!-- Accepts URIs that begin with "example://gizmos” -->
    <data android:scheme="rusdelphi"
        android:host="app" />
</intent-filter>

<intent-filter android:label="@string/filter_title_viewrusdelphi">
    <action android:name="android.intent.action.VIEW" />
    <!-- Accepts URIs that begin with "http://example.com/gizmos” -->
    <data
        android:host="rusdelphi.com"
        android:pathPrefix="/app"
        android:scheme="http" />

    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
</intent-filter>

В примере приведен сайт http://example.com/gizmos, а мы его переписали на наш rusdelphi.com/app.

Этих небольших изменений в приложении уже достаточно для связывания.

Проверим наше приложение при помощи команд adb :

adb shell am start -a android.intent.action.VIEW -d "http://rusdelphi.com/app" com.rusdelphi.wifipassword
adb shell am start -a android.intent.action.VIEW -d "rusdelphi://app" com.rusdelphi.wifipassword

Если все сделано верно, то после каждой команды должно запускаться наше приложение.

Снимок

2. Подтверждение сайта в консоли разработчика.

В консоли разработчика нужно подтвердить наш сайт. Для это заходим во вкладку приложения -> Службы и Api -> ИНДЕКСИРОВАНИЕ ПРИЛОЖЕНИЙ GOOGLE ПОИСКОМ

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

3. Размещение ссылок на сайте.

Вот тут все описано подробно, а у нас нужно было просто добавить на сайт одну строчку html кода:

<link rel="alternate" href="android-app://com.rusdelphi.wifipassword/rusdelphi/app" />

После не продолжительной индексации, гугл будет знать, что с  такой-то страницей связано приложение. При поиске, система сама предложит пользователю запустить нужное приложение.

Screenshot_2015-09-29-12-45-32

 

 

Читать на сайте автора.

Тестовое задание от Infoteсs

Недавно получил тестовое задание для трудоустройства от компании Infotecs.

Спешу им поделиться с дорогими читателями.

Необходимо разработать клиент-серверное приложение, работающее по следующему сценарию:

  1. Клиент после запуска ожидает ввода пользователя.
  2. Пользователь вводит число в клиент.
  3. Клиент отправляет число в сервер при помощи протокола TCP и ожидает ввода пользователя.
  4. Сервер раскладывает число на простые множители и отправляет клиенту ответ.
  5. Клиент сообщает результат пользователю.

Приложение должно удовлетворять следующим требованиям:

  1. Клиент должен быть Android-приложением.
  2. Пользователь может ввести в клиенте несколько чисел, не дожидаясь получения ответов от сервера.
  3. Сервер должен поддерживать одновременное обслуживание нескольких клиентов.
  4. Исходный код должен быть хорошо оформлен и иметь комментарии (т.е. должен быть написан так, как вы его пишете всегда).
  5. Желательно снабдить приложение модульными тестами.
  6. Сервер должен быть написан в виде Android-сервиса.
  7. Клиент и сервер должны быть отдельными apk.

Вот  ссылка на итоговый проект https://github.com/petrovichtim/InfotecsTestTask

В проекте реализовано 2 модуля клиент (обычная Activity) и сервер (IntentService).

Экран работы клиента:

Screenshot_2015-06-03-17-40-24

Читать на сайте автора.

Новое приложение «Затмение» для Android

IMG_20150320_123219

IMG_20150320_123203

IMG_20150320_123211

IMG_20150320_122012

IMG_20150320_122014

IMG_20150320_122024

IMG_20150320_122107

IMG_20150320_122138

IMG_20150320_122142

IMG_20150320_122153

Читать на сайте автора.

Запуск сторонних программ в Android Studio

При работе с беспроводным подключением устройства, часто приходится запускать bat файл с командами подключения для adb.
Например таким:

C:Androidsdkplatform-toolsadb connect 192.168.0.10:5555

Чтобы ускорить эту работу, можно добавить запуск bat скрипта прямо в Android Studio.
В этом нам поможет инструмент External Tools.
В нем теоретически можно настроить запуск любой сторонней программы.
Для добавления скрипта идём в File->Settings->Editor->External Tools и нажмем +
Безымянный
Далее все интуитивно понятно.Безымянный
Как сделать свои горячие клавиши, я уже объяснял тут.

Для наглядности приведу окно настройки

БезымянныйCtrl+Shift+Q и устройство подключено (если конечно ip не сменился)

Читать на сайте автора.

Обезжириваем apk

Что из себя представляет apk файл?

Это просто архив с ресурсами и кодом приложения.

Если, например, картинки и файлы xml ужать серьезно не получится, то вот сам код ужать можно.

Возможно, это потому, как в каждом проекте есть не используемые части библиотек.

Наше IDE  по умолчанию соберёт все, что только есть, и конечный apk получится большим.

Стоить заметить , что в старой виртуальной машине есть ограничение Dalvik 65K methods limit, т.е.вы можете ссылаться на очень большое число методов в DEX файле, но вызывать можете только первые 65536, потому что это вся память, которая у вас есть для инструкции вызова метода, львиную долю которых может съесть одна только Google Play Services.
В недавно в неё включили аналитику, которая до этого была отдельной библиотекой.
Поэтому Google Play Services растет, как на дрожжах.
На помощь нам пришла сама Google, т.к.начиная с версии 6.5 сервисы Google Play могут подключаться в виде нескольких небольших клиентских библиотек.
Нам остается только выбрать необходимые модули, а не таскаться со всей пачкой сервисов.

Весь пакет описанных сервисов подключается в файле build.gralde вот так:

dependencies {
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'com.google.android.gms:play-services:+'
}

Библиотеку поддержки appcompat, я не знаю как можно урезать, а вот вторую знаю, мы возьмем только модуль с рекламой (ads) :

dependencies {
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'com.google.android.gms:play-services-ads:+'
}

Знак + обозначает, что нужно брать последнюю версию.
Чтобы обрезать не нужный код, так же был придуман инструмент ProGuard.
Как ясно сказано в документации, он может обрезать, оптимизировать и обфусцировать (сделать не читаемым) наш код.
Для его включения нужно выставить в build.gralde свойство minifyEnabled в true и добавить файл proguard-rules.txt в папку app.

 buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

В этом файле нужно прописать правила для работы proguard.
Как я понял, достаточно указать в нем классы, упомянутые в манифесте.

-keep public class <MainActivity>

И так мы можем обрезать все с помощью proguard, можем взять библиотеку полегче, а можем сделать и то и другое, а потом посмотреть на полученный apk.

Теперь покажу, что получилось после всех этих манипуляций.

СнимокРазница очевидна, удачного обезжиривания!

 

Читать на сайте автора.

Горячие клавиши в Android Studio

В прошлой статье я уже начал изготовлять из Android Studio нечто похожее на Eclipse. Там был выбрана схема клавиш (Keymap)  как в Eclipse.

Теперь разберёмся, как сделать кучу полезных действий при сохранении.

В Eclipse  есть настройка Save Actions, т.е. при сохранении вы ещё какие-то действия производите с кодом.

Находится она по пути Preferenses-Java-Editor-Save Actions

БезымянныйТут я ставлю форматировать код (Ctrl+Shift+F) и подправить все сторонние пакеты в заголовке (Ctrl+Shift+O).

В общем экономим целых два нажатия горячих клавиш!

Как это удобно — не опишешь словами.Лучше один раз попробовать.

А вот теперь поищем такую настройку в Android Studio и не найдем.

Но голь на выдумку хитра и товарищи предложили переопределить сочетание Ctrl+S  на запуск макроса, который всю эту работу быстренько и проделает!

Макрос можно записать не отходя от кассы: Edit — Macros- StartMacroRecording

— делаем форматирование (Ctrl+Shift+F)

— организуем импорты (Ctrl+Shift+O)

— по вкусу добавить свои действия

Как  сделали, что хотели, сохраняем макрос под свои именем (например formatted save).

Теперь идем File-Settings-Keymap-Macros выделяем наш макрос и жмем правой кнопкой мыши по нему в меню Add Keyboard ShortCut.

БезымянныйIDE скажет, что у нас есть конфликт с другой горячей клавишей, но мы его переопределим.

БезымянныйБезымянныйВот и всё, так можно и в магазине стенку убрать, если постараться)

Читать на сайте автора.

Подключение устройств Android Wear

В данной статье я расскажу, как подключить для отладки устройство Sony SmartWatch 3, на борту которых используется операционная система Android Wear.

Для открытия меню разработчиков перейдите в раздел Настройки — >Об устройстве и кликните несколько раз по пункту Номер сборки.

device-2015-01-12-133225     device-2015-01-12-133243

После этого перейдите в меню Для разработчиков и включите отладку.

device-2015-01-12-133315     device-2015-01-12-133330

Можно включить отладку по Bluetooth, но на моей практике она работает очень плохо, поэтому подключаю через кабель.

Далее нам нужно настроить драйвер в нашей ОС Windows7.

Никакого специального родного драйвера от Sony я не нашел, поэтому буду использовать стандартный гугловский драйвер.

Зайдем в Диспетчер устройств.

2015-01-03 23-17-45 Диспетчер устройств
Нажмем Обновление/Установка драйвера.

2015-01-03 23-18-40 Обновление драйверов - SmartWatch 3Нажмем Выбрать драйвер из списка уже установленных.

2015-01-03 23-18-57 Обновление драйверов - SmartWatch 3 Выберем Android Device.2015-01-03 23-19-12 Обновление драйверов - SmartWatch 3
Выберем Android ADB Interface.2015-01-03 23-19-28 Обновление драйверов - SmartWatch 3Нажмем Да

2015-01-03 23-19-40 Предупреждение при обновлении драйвераТеперь все хорошо.2015-01-03 23-19-53 Обновление драйверов - Android ADB Interface
Перепроверим.2015-01-03 23-20-12 Диспетчер устройств

При подключении к ПК нужно будет в всплывающем окне на смартфоне дать разрешение на отладку.

Теперь ищем устройство в DDMS.

Снимок Наконец можно нормально работать.

Читать на сайте автора.