上上周Android Stuido 2.1正式版的发布,已经可以在上面开发 Android N了,并且去掉了preview。
Android N引入了一个新特性: Direct Boot Mode—— 设备启动后进入的一个新模式,直到用户解锁(unlock)设备此阶段结束。
在此 Direct Boot Mode 下 APP 比较适合做一些:
- Alarm、clock 类的操作
- 需要做重要的或紧急的通知
- 底层服务类
使用场景嘛,我想到一个:比如手机丢了,捡到的人解不开锁,也做不了啥操作,现在任意工作在Direct Boot Mode 下的APP都可以“安全地”跑起来,和服务器建链,更加全方位的和捡手机的人进行沟通。更多的场景还需要更大的脑洞。
APP 要工作在DBM下的话,manifest 中加入:
<activity|provider|receiver|service ...
android:directBootAware=”true”>
APP在进入DBM后会收到系统的广播消息: Intent.ACTION_LOCKED_BOOT_COMPLETED
—— 新增的。
用户解锁手机后,APP会收到另一条: Intent.ACTION_BOOT_COMPLETED
—— 一直都有
DBM下和正常模式下最大的不同是:使用一种新的存储空间:Device protected storage,在正常模式下是看不到这个空间的数据的,这样的话就可以做一些更加完备的安全机制,比如:
把网络连接的Tocken、SSH……放在此独立空间,防止用户平常使用时被其他APP侦听、窃取。
还有一点:DBM模式下的APP只能和同在此模式中的APP通信,貌似是废话哦,这个阶段其他APP也没跑起来呢。
最后一点:一台安装了Android N的设备,第一次使用要创建这个Device protected storage加密分区,方式有:
- 设备的setting中修改:Settings > Developer options > Convert to file encryption
- fastboot中修改:
$ adb reboot-bootloader
$ fastboot --wipe-and-use-fbe