Видео : «Политэкономия мобильных приложений» часть первая
Сходил на запись к товарищам, канал называется «Андроид в лицах».
Говорили о политэкономии мобильных приложений.
Вот первая часть
Сходил на запись к товарищам, канал называется «Андроид в лицах».
Говорили о политэкономии мобильных приложений.
Вот первая часть
Очень часто приходится отвечать на вопросы о версиях и названиях операционной системы Android.
Каждая версия Android имеет свой номер, имя и версию sdk.
С недавнего времени компания 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" />
После не продолжительной индексации, гугл будет знать, что с такой-то страницей связано приложение. При поиске, система сама предложит пользователю запустить нужное приложение.
Недавно получил тестовое задание для трудоустройства от компании Infotecs.
Спешу им поделиться с дорогими читателями.
Необходимо разработать клиент-серверное приложение, работающее по следующему сценарию:
- Клиент после запуска ожидает ввода пользователя.
- Пользователь вводит число в клиент.
- Клиент отправляет число в сервер при помощи протокола TCP и ожидает ввода пользователя.
- Сервер раскладывает число на простые множители и отправляет клиенту ответ.
- Клиент сообщает результат пользователю.
Приложение должно удовлетворять следующим требованиям:
- Клиент должен быть Android-приложением.
- Пользователь может ввести в клиенте несколько чисел, не дожидаясь получения ответов от сервера.
- Сервер должен поддерживать одновременное обслуживание нескольких клиентов.
- Исходный код должен быть хорошо оформлен и иметь комментарии (т.е. должен быть написан так, как вы его пишете всегда).
- Желательно снабдить приложение модульными тестами.
- Сервер должен быть написан в виде Android-сервиса.
- Клиент и сервер должны быть отдельными apk.
Вот ссылка на итоговый проект https://github.com/petrovichtim/InfotecsTestTask
В проекте реализовано 2 модуля клиент (обычная Activity) и сервер (IntentService).
Экран работы клиента:
При работе с беспроводным подключением устройства, часто приходится запускать 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 файл?
Это просто архив с ресурсами и кодом приложения.
Если, например, картинки и файлы 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 нечто похожее на 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 скажет, что у нас есть конфликт с другой горячей клавишей, но мы его переопределим.
Вот и всё, так можно и в магазине стенку убрать, если постараться)
В данной статье я расскажу, как подключить для отладки устройство Sony SmartWatch 3, на борту которых используется операционная система Android Wear.
Для открытия меню разработчиков перейдите в раздел Настройки — >Об устройстве и кликните несколько раз по пункту Номер сборки.
После этого перейдите в меню Для разработчиков и включите отладку.
Можно включить отладку по Bluetooth, но на моей практике она работает очень плохо, поэтому подключаю через кабель.
Далее нам нужно настроить драйвер в нашей ОС Windows7.
Никакого специального родного драйвера от Sony я не нашел, поэтому буду использовать стандартный гугловский драйвер.
Зайдем в Диспетчер устройств.
Нажмем Обновление/Установка драйвера.
Нажмем Выбрать драйвер из списка уже установленных.
Выберем Android Device.
Выберем Android ADB Interface.Нажмем Да
Теперь все хорошо.
Перепроверим.
При подключении к ПК нужно будет в всплывающем окне на смартфоне дать разрешение на отладку.
Теперь ищем устройство в DDMS.