«Android Marshmallow — будь готов». Денис Неклюдов

32
Android Marshmallow будь готов! Неклюдов Денис

Transcript of «Android Marshmallow — будь готов». Денис Неклюдов

Page 1: «Android Marshmallow — будь готов». Денис Неклюдов

Android Marshmallow будь готов!

Неклюдов Денис

Page 2: «Android Marshmallow — будь готов». Денис Неклюдов

target_sdk = 23

Page 3: «Android Marshmallow — будь готов». Денис Неклюдов

Auto Backup

Лимит в 25 Mb на одно приложение в шифрованной части Drive(не затрагивает пользовательскую квоту)

Бэкап осуществляется каждые 24 часа, при зарядке, когда устройством не пользуются, и оно подключено к Wi-Fi

Page 5: «Android Marshmallow — будь готов». Денис Неклюдов

Auto Backup

<android:fullBackupContent="@xml/mybackupscheme"><full-backup-content>

<[exclude, include] domain=["file" | "database" | "sharedpref"| "external" | "root"] path="string”>

</full-backup-content>

! не бекапить данные аккаунтов, токены в т.ч. GCM

@OverrideonRestoreFinished()

Page 6: «Android Marshmallow — будь готов». Денис Неклюдов

Apache Client Deprecation

Если осталась необходимость использовать HttpClient:

android {

useLibrary 'org.apache.http.legacy'

}

Page 7: «Android Marshmallow — будь готов». Денис Неклюдов

Other Deprecations

libcrypto.so и libssl.so из OpenSSLзаменены на BoringSSL

notification.setLatestEventInfo() удаленВместо него: Notification.Builder

Page 8: «Android Marshmallow — будь готов». Денис Неклюдов

Adoptable storage

Context methods:

getFilesDir()

getCacheDir()

getCodeCacheDir()

getDatabasePath()

getDir()

getNoBackupFilesDir()

getFileStreamPath()

getPackageCodePath()

getPackageResourcePa

th()

ApplicationInfo fields:

dataDir

sourceDir

nativeLibraryDir

publicSourceDir

splitSourceDirs

splitPublicSourceDirs

Page 9: «Android Marshmallow — будь готов». Денис Неклюдов

Five more changes

Android Keystore Changes (упразднениe DSA)

Wi-Fi and Networking Changes (управление соединениями,

мультисоединение всегда)

Camera Service Changes (приоритеты, несколько

приложений для нескольких камер)

Runtime(багфиксы в ART)

Access to Hardware Identifier (нет доступа к макадресам из

сети, новые права доступа)

Page 10: «Android Marshmallow — будь готов». Денис Неклюдов

The cat goes idle

Page 11: «Android Marshmallow — будь готов». Денис Неклюдов

Idle

Doze Mode and App Standby

Page 12: «Android Marshmallow — будь готов». Денис Неклюдов

Doze mode

● Доступ приложению к сети отключен, пока приложение не получит high-priority GCM-push.

● Система игнорирует Wake lock’и.

● Alarm’ы запланированные в AlarmManager не будут вызываться, кроме тех, которые будут обновлены с помощью setAndAllowWhileIdle().

● Система не производит поиска сетей Wi-Fi.

Page 13: «Android Marshmallow — будь готов». Денис Неклюдов

Doze mode

● NetworkPolicyManagerService Пропускает только приложения из белого списка.

● JobSchedulerService Все текущие задачи отменяются. Новые откладываются до пробуждения.

● SyncManager Все текущие отменяются, новые откладываются до пробуждения.

● PowerManagerService Только задачи приложений из белого списка вызовутся.

Page 14: «Android Marshmallow — будь готов». Денис Неклюдов

Doze mode: step by step

Page 15: «Android Marshmallow — будь готов». Денис Неклюдов

Doze mode: step by step

DeviceIdleController:

ACTIVE - Устройство используется или на зарядке

INACTIVE - Устройство недавно вышло из активного режима

(пользователь выключил экран, выдернул зарядку и т.п.)

...30 минут

IDLE_PENDING - Устройство готовится перейти в режим ожидания

...30 минут

IDLE - Устройство в режиме бездействия

IDLE_MAINTENANCE - Открыто короткое окно, чтобы приложения

выполнили свою работу

Page 16: «Android Marshmallow — будь готов». Денис Неклюдов

Doze mode: exclusions

setAndAllowWhileIdle()- у обработчика есть 10 секунд, затем уходит в IdleОстальные алармы - в бездействии, пока активен Doze Mode

GCM:

Пуш уведомление с высочайшим

приоритетом дает получившему его

приложению недолгий доступ к сети.

Whitelist:Alarm Manager:

Page 17: «Android Marshmallow — будь готов». Денис Неклюдов

Standby mode

1. Пользователь явно запустил приложение.

2. Приложение имеет процесс, работающий в

данный момент на переднем плане (Activity

или foreground service, или используется

другой activity или foreground service’ом).

3. Приложение создало уведомление, которое

висит в списке уведомлений.

4. Пользователь принудительно добавил

приложение в список исключений

оптимизации в настройках системы.

Page 18: «Android Marshmallow — будь готов». Денис Неклюдов
Page 19: «Android Marshmallow — будь готов». Денис Неклюдов
Page 20: «Android Marshmallow — будь готов». Денис Неклюдов

Permissions

Page 21: «Android Marshmallow — будь готов». Денис Неклюдов

Permissions

SDK < 23

1.Описать все

разрешения в manifest

2.Пользователь

разрешит сразу все

при установке

3.Пользователь может

запретить любое из

разрешений после

установки

SDK >= 23

1.Описать только

PROTECTION_NORMAL

запросы в manifest

2.Пользователь их все

подтвердит при

установке

3.Когда приложению

нужен доступ к

одному или

нескольким

разрешениям из

группы опасных,

Page 22: «Android Marshmallow — будь готов». Денис Неклюдов

Permissions

1. ContextCompat.checkSelfPermission

(Context context, String permission)

2. ActivityCompat.requestPermissions();

3. ActivityCompat.OnRequestPermissionsResultCallback

Page 23: «Android Marshmallow — будь готов». Денис Неклюдов

Permissions

Хорошие практики:• Запрашивать лишь те разрешения, которые

действительно нужны

• Если есть возможность, вместо запроса

воспользоваться внешним Intent

• Запрашивать разрешение, только перед тем, когда оно

понадобится

• Пояснять пользователю, для чего запрашивается

разрешение

Page 24: «Android Marshmallow — будь готов». Денис Неклюдов

Fingerprint

<uses-permission

android:name="android.permission.USE_FINGERPRINT" />

Для использования:

android.hardware.fingerprint.FingerprintManager;

isHardwareDetected();

hasEnrolledFingerprints()

authentificate(...)

Page 25: «Android Marshmallow — будь готов». Денис Неклюдов

Confirm Credential

Для ипользования:

KeyguardManager.isKeyguardSecure()

KeyGenerator.generateKey();

setUserAuthenticationValidityDurationSeconds()

KeyguardManager.createConfirmDeviceCredentialI

ntent()

Page 26: «Android Marshmallow — будь готов». Денис Неклюдов

Text Selection

Для исользования:

startActionMode(Callback, ActionMode.TYPE_FLOATING)

Page 27: «Android Marshmallow — будь готов». Денис Неклюдов

App Linking

<intent-filter android:autoVerify="true">

<action android:name="android.intent.action.VIEW" />

<category

android:name="android.intent.category.DEFAULT" />

<category

android:name="android.intent.category.BROWSABLE" />

<data android:scheme="http"

android:host="www.android.com" />

<data android:scheme="https"

android:host="www.android.com" />

</intent-filter>

Page 28: «Android Marshmallow — будь готов». Денис Неклюдов

App Linking

Положить JSON на свой сайт(https://www.domain1.com/.well-known/assetlinks.json)

[{

"relation": ["delegate_permission/common.handle_all_urls"],

"target": {

"namespace": "android_app",

"package_name": "com.example",

"sha256_cert_fingerprints":

["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:9

6:B2:3F:CF:44:E5"]

}

}]

Page 29: «Android Marshmallow — будь готов». Денис Неклюдов

Direct share

Необходимо создать Service, наследник ChooserTargetService

<serviceandroid:name=".YourChooserTargetService"android:label="@string/yourLabel»

android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"><intent-filter>

<actionandroid:name="android.service.chooser.ChooserTargetService" />

</intent-filter></service>

Page 30: «Android Marshmallow — будь готов». Денис Неклюдов
Page 31: «Android Marshmallow — будь готов». Денис Неклюдов

Voice Iteraction

Проверить доступность:

activity.isVoiceInteraction()

Взаимодействовать припомощи VoiceInteractor

Page 32: «Android Marshmallow — будь готов». Денис Неклюдов

Спасибо за внимание!

Денис Неклюдовplus.google.com/+ДенисНек

[email protected]