Доклад старшего Android-разработчика Mobile Dimension Игоря Цеглевского "Взгляд практика на Android 6.0 Marshmallow" на отраслевой конференции "GDG DevFest Nizhny Novgorod 2015"
Android 6.0 "Marshmallow" is a version of the Android mobile operating system. First unveiled in May 2015 at Google I/O under the code name "Android 'M'", it was officially released in October 2015.
Android M - Runtime Permissions | Getting ready for MarshmallowUmair Vatao
Android M (Marshmallow) introduced new granular permissions, where application can request for permissions at runtime. Here I presented basics about this new permission model and what does it mean for UX designers and developers.
Do you want to crack android interview?
These are the most frequently asked Android Interview questions for experienced and entry level android programmers.
Android 6.0 "Marshmallow" is a version of the Android mobile operating system. First unveiled in May 2015 at Google I/O under the code name "Android 'M'", it was officially released in October 2015.
Android M - Runtime Permissions | Getting ready for MarshmallowUmair Vatao
Android M (Marshmallow) introduced new granular permissions, where application can request for permissions at runtime. Here I presented basics about this new permission model and what does it mean for UX designers and developers.
Do you want to crack android interview?
These are the most frequently asked Android Interview questions for experienced and entry level android programmers.
Have a look Google next operating system update : Android MarshmallowMike Taylor
In the era of Mobile world, Google launch the Latest featured rich the next operating system Android 6.0 Marshmallow. Watch the latest features of Android M.
Particle physicist Tara Shears shares the latest findings from the Large Hadron Collider.
The Large Hadron Collider (LHC) at CERN is the most powerful particle collider ever built and has been described as the world's biggest science experiment.
Designed to answer the unknowns in particle physics, including the reason for so little antimatter in the universe and the exact locations of dark matter and the missing Higgs particle, the LHC is capable of recreating the conditions that were in existence one fraction of a second after the Big Bang.
Dr Tara Shears takes the stage at The Royal Institution to reveal what has been discovered at the LHC since its first year of operation.
This event took place at the Ri on Wednesday 19 October 2011.
View the event video here: http://richannel.org/uncovering-the-universe-latest-news-from-the-lhc
QA-конференция heisenbug.ru
ChromeDriver Jailbreak, Александр Баяндин (Badoo)
Chrome DevTools — один из наиболее полезных инструментов веб-разработчика. Он позволяет получать исчерпывающую информацию о странице и запросах и эмулировать мобильные браузеры на медленных устройствах. ChromeDriver использует тот же Chrome Debugging Protocol, что и DevTools для реализации Selenium JSON Wire Protocol взаимодействия с браузером. Этот протокол описывает самый базовый набор методов для взаимодействия со страницей, который несомненно уже всего набора методов, доступных в DevTools. В своём докладе Александр расскажет о том, как можно использовать (почти) всю мощь DevTools в Selenium-тестах и как сделать их отладку наиболее удобной.
Мы рассмотрим область применения, архитектуру и основные особенности такой известной операционной системы как Android. Также расскажем о процессе создания мобильного приложения TulaDev, о проблемах с которыми мы столкнулись и о способах их решения. Вы можете найти приложение для Android <a>на Google Play</a>
Have a look Google next operating system update : Android MarshmallowMike Taylor
In the era of Mobile world, Google launch the Latest featured rich the next operating system Android 6.0 Marshmallow. Watch the latest features of Android M.
Particle physicist Tara Shears shares the latest findings from the Large Hadron Collider.
The Large Hadron Collider (LHC) at CERN is the most powerful particle collider ever built and has been described as the world's biggest science experiment.
Designed to answer the unknowns in particle physics, including the reason for so little antimatter in the universe and the exact locations of dark matter and the missing Higgs particle, the LHC is capable of recreating the conditions that were in existence one fraction of a second after the Big Bang.
Dr Tara Shears takes the stage at The Royal Institution to reveal what has been discovered at the LHC since its first year of operation.
This event took place at the Ri on Wednesday 19 October 2011.
View the event video here: http://richannel.org/uncovering-the-universe-latest-news-from-the-lhc
QA-конференция heisenbug.ru
ChromeDriver Jailbreak, Александр Баяндин (Badoo)
Chrome DevTools — один из наиболее полезных инструментов веб-разработчика. Он позволяет получать исчерпывающую информацию о странице и запросах и эмулировать мобильные браузеры на медленных устройствах. ChromeDriver использует тот же Chrome Debugging Protocol, что и DevTools для реализации Selenium JSON Wire Protocol взаимодействия с браузером. Этот протокол описывает самый базовый набор методов для взаимодействия со страницей, который несомненно уже всего набора методов, доступных в DevTools. В своём докладе Александр расскажет о том, как можно использовать (почти) всю мощь DevTools в Selenium-тестах и как сделать их отладку наиболее удобной.
Мы рассмотрим область применения, архитектуру и основные особенности такой известной операционной системы как Android. Также расскажем о процессе создания мобильного приложения TulaDev, о проблемах с которыми мы столкнулись и о способах их решения. Вы можете найти приложение для Android <a>на Google Play</a>
Мир мобильных телефонов очень сильно изменил нашу жизнь. В наше время невозможно представить современного человека, без этого чудо устройства. На рынке появляется все больше устройств и приложений. И чтобы удобнее пользоваться этими приложениями пользователи выбирают “умные” телефоны, или как их еще принято называть смартфоны. В своем докладе я хочу поделиться своим опытом автоматизации приложений под Android и iOS. Я расскажу о том, какие инструменты автоматизации я использовал. Поговорим о недостатках этих инструментов и какие из них стоит использовать у себя на проекте.
Михаил Давыдов "Масштабируемые JavaScript-приложения"Yandex
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Я.Субботник в Челябинске в рамках конференции UWDC
О докладе:
О чем нужно подумать во время проектирования архитектуры. Какую архитектуру нужно заложить, чтобы приложение могло безболезненно развиваться.
Similar to Игорь Цеглевский: Взгляд практика на Android 6.0 Marshmallow (20)
2. Давайте познакомимся…
Mobile Dimension LLC
Старший Android Разработчик
Учебный центр «Jolly Droid»
Основатель и преподаватель
Igor.tseglevskiy@gmail.com
Игорь Цеглевский
http://mobiledimension.ru
http://jollydroid.ru
5. Permissions
• targetSdkVersion=22
– Permissions (права доступа) работают как прежде:
разрешено всё, что описано в манифесте
– Пользователь может в настройках отозвать любое
из прав!
• Андроид предупреждает, что это может вызвать падение
приложения, но не запрещает
• При изменении списка прав приложение будет
остановлено
– Если пользователь отозвал права, то
соответствующие API вернут 0 или null
6. Permissions
• targetSdkVersion=23
– «Нормальные» права доступа даются
автоматически
– «Опасные» права необходимо запросить явно,
для каждой группы
– «Опасные» права пользователь может отозвать
в настройках приложения. Приложение должно
всегда (каждый раз при обращении к
соответствующим API) проверять наличие прав
13. ID наши
• WiFi MAC, Bluetooth MAC:
– всегда 02:00:00:00:00:00
• Phone number (telephonyManager.getLine1Number()):
требуется:
– READ_PHONE_STATE «Осуществление телефонных
звонков и управление ими»
– или READ_SMS «Отправлять и просматривать SMS-
сообщения»
• IMEI (telephonyManager.getDeviceId()):
– требуется READ_PHONE_STATE
• Попробуйте Settings.Secure.ANDROID_ID
14. ID чужие
• Доступ к данным, содержащим ID
окружающих устройств требует
ACCESS_COARSE_LOCATION
– WifiManager.getScanResults()
– BluetoothDevice.ACTION_FOUND
– BluetoothLeScanner.startScan()
• Note: When a device running Android initiates a
background Wi-Fi or Bluetooth scan, the
operation is visible to external devices as
originating from a randomized MAC address.
16. Doze Mode & App Standby
• Doze Mode – режим, в который устройство
переходит, если находится некоторое время
с залоченным экраном, без движения и
работающее от батарей
• App Standby – лишение ресурсов
приложений, которые давно не
использовались
17. Doze Mode. Ограничения
• AlarmManager – только setAndAllowWhileIdle(),
setExactAndAllowWhileIdle() и setAlarmClock().
Остальные задерживаются до maintenance window.
• JobScheduler – все текущие задачи завершаются, все
отложенные ждут maintenance window
• SyncManager – все синки завершаются
• PowerManager – работают только Wake Lock-и
приложений из белого списка, остальные
игнорируются
• NetworkPolicyManager – для него doze mode тоже
самое, что и idle mode. Т.е. сеть есть только для
приложений из белого списка
18. Doze Mode. Что работает
• AlarmManager
– set[Exact]AndAllowWhileIdle() не чаще раз в 15
минут
– setAlarmClock()
• GCM messages with high priority
• Сеть и Wake Locks, если приложение в белом
списке
• Все приложения получают возможность
выполнить работу в течение Maintenance
window
24. White list
• Приложению из white list доступна сеть и
Wake lock-и
• Пользователь может включить сам:
– Настройки –> Батарея -> Экономия заряда
батареи -> Все приложения -> App -> Не
экономить
– Settings -> Battery -> Battery Optimization
• Можно запросить программно
28. App Standby. Условия
Приложение может быть переведено в
standby только если одновременно:
• Устройство работает от батареи
• Неверно следующее:
– Пользователь явно запустил приложение.
– Приложение имеет foreground процесс
– Есть видимое уведомление (Notification),
созданное приложением.
• Приложение не в белом списке
29. App Standby. Отладка
$ adb shell dumpsys battery unplug
$ adb shell am set-inactive <packageName> true
$ adb shell am set-inactive <packageName> false
$ adb shell am get-inactive <packageName>
32. Notifications
• Notification.setLatestEventInfo() удален.
– Для обновления повторно используйте
Notification.Builder и NotificationManager.notify() c
тем же id.
• adb shell dumpsys notification --noredact
• У NotificationManager появился метод
StatusBarNotification[] getActiveNotifications()
41. Text Selection. Грабли
• Не всё помещается, появляется невидимый скролл
• Порядок задается с помощью android:orderInCategory,
родные нумеруются 1..5
• Менюшка fullscreen input mode не дополняется таким
способом (можно выключить с помощью
android:imeOptions="flagNoExtractUi")
49. Auto Backup
• Auto backup происходит, когда:
– Устройство не используется
– Находится на зарядке
– Подключено к WiFi
– С момента последнего бэкапа прошло более 24
часов
50. Auto Backup
• Не попадут файлы из каталогов
– getCacheDir()
– getCodeCacheDir()
– getNoBackupFilesDir()
• С внешнего стораджа попадут только файлы
из каталога getExternalFilesDir()
• Общий объем не более 25МБ на приложение
– При превышении объема бэкап останавливается,
«в облаке» остается последнее сохраненное
состояние
52. Auto Backup. Config
• domain – указание каталога, в котором искать
файл
– file – /data/data/<package>/files
– database – /data/data/<package>/databases/
– sharedpref – /data/data/<package>/shared_prefs/
– external –
/storage/emulated/0/Android/data/<package>/files/
– root – ссылка на /data/data/<package>/ или аналог
(названия каталогов – условные, они могут меняться
в зависимости от конфигурации)
53. Auto Backup. Config
• path – относительное имя файла
– С расширением! Т.е. если
getSharedPreferences("pref1", MODE_PRIVATE),
то
<exclude domain="sharedpref"
path="pref1.xml"/>
55. Auto Backup. Отладка
• Принудительный запуск бэкапа
adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
adb shell bmgr run
adb shell bmgr fullbackup <package>
• Восстановление из бэкапа
adb shell bmgr restore <package>
• Очистка бэкапа в облаке
adb shell bmgr wipe com.google.android.gms <package>
56. Auto Backup. Грабли
PFTBT : Error -1002 backing up ru.jollydroid.autobackupdemo1
PFTBT : Transport suggested backoff=0
PFTBT : Transport rejected backup of ru.jollydroid.autobackupdemo1, skipping
PFTBT : Full backup completed.
Если бэкап не работает и в логе такое сообщение, возможно:
- Ошибка в конфиге, в результате не найдено ни одного файла для бэкапа
- Слишком много данных (больше 25М)