安卓6.0棉花糖的官方开发者SDK已被发布。估计在九月底的Google Developer Event(谷歌开发者活动)上公开新Nexus端后开始投入OTA升级。全新安卓6.0!开发者应该测试什么、注意什么呢?
安卓6.0棉花糖应该进行什么样的测试?
从棉花糖版本的官方SDK的发布已过了十多天。各位开发者有没有测试过APP在安卓6.0的运转能否? 安卓6.0为了使用户更加享受安卓端,使各位开发者提供更加优秀的用户体验,增加了多种新功能。
新增加的功能中,‘运行时间允许模型(Runtime permission model)’、‘打盹儿(Doze)’、‘备用应用(App Standby)’、‘无聊SSL(BoringSSL)’等即可以影响到新开发的APP(应用)有,也可以对原有APP(应用)的执行有所影响。如果还没在安卓6.0上对各位的APP(应用)进行测试,可以先对原有APP(应用)的运转方式可以带来变化的事项进行测试。
运行时间允许模型 (Runtime permission model)
当以安卓6.0为目标SDK而开发的APP(应用)安装在设备上,用户确认APP(应用)的要求的过程将会消失,APP(应用)运转中若需要允许,要根据以下内容要求该允许。
而且,对于已被安装的APP(应用),用户可以‘Setting(设置) > Application (应用)> OOO app (select)[ooo应用(选择)] > app permission(允许应用)’,可以 确认各个APP(应用)在使用的允许,也可以随意赋予允许或删除允许。
特别的是,通过这种方式,不管安卓6.0是否开发为目标SDK,用户可以拥有对APP(应用)的允许权力。所以,大家测试一下当用户任意删除各位在APP(应用)的权力,APP(应用)将会怎么运转。
(译者)常问问题
Q:我的产品是在安卓M(23)以下版本开发的。
那么就不能从安卓6.0的用户得到安装时需要的允许吗?A 不是的。在6.0以下版本开发的应用仍存在在安装时获得权限这一过程。而且,在 'Setting (设置)> App permission(允许应用)'栏目上试着删除特定允许时,也会显示以下弹出窗口并对用户进行导航。(不必担心哦~)
Doze(打盹儿)
设备的电池使用量的确是很重要的问题。为了减少在不使用设备时消耗的电池,安卓6.0新增添了打盹儿模式。当满足以下所有条件,设备进入打盹儿模式。
进入打盹儿模式后,为了减少电池的消耗,除了几个核心应用以外,所有应用对以下功能得以限制。+ + + 通过AlarmManager(闹钟管理)预约的闹钟将会关闭(除通过setAndAllowWhileIdle设置的闹钟以外) + + SyncAdapter与 JobScheduler(日程表) 会延迟。
设备进入打盹儿模式后,各位的应用也不能进行网络链接,有可能通过AlarmManager(闹钟管理)预定的闹钟将会取消。各位开发者需要测试当设备进入打盹儿模式和退出打盹儿模式时,是不是听从各位的操作。特别需要注意的是,像‘闹钟表’应用一样,设备需要在等候状态下进行重要行动的情况下的操作。. 可以通过新增加的adb命令测试打盹儿模式。
1)修改为不通过以下命令进行充电。
2)关闭设备屏幕。
3)通过反复执行以下命令,使设备处于IDLE(空闲)状态。
4)打开画面或动一下设备就会退出打盹儿模式。通过以下命令可以还原充电模式。
5)通过以下命令,可以确认目前设备状态。.
- 修改为不通过以下命令进行充电。
$ adb shell dumpsys battery unplug
- 关闭设备屏幕。
- 通过反复执行以下命令,使设备处于IDLE(空闲)状态。
$ adb shell dumpsys deviceidle step
- 打开画面或动一下设备就会退出打盹儿模式。通过以下命令可以还原充电模式。
$ adb shell dumpsys battery reset
- 通过以下命令,可以确认目前设备状态。.
$ adb shell dumpsys deviceidle
应用等候状态 (App Standby)
应用等候状态:安卓平台认为用户不再使用的应用为闲置(stanby)状态。在一定期限内,没有进行以下任何活动的应用有可能被认为是闲置状态。
用户亲自打开应用。以 Activity(活跃)或 Service(服务)的状态开启该应用。或其他程序中被使用的应用在使用该应用的服务。应用弹出了通知,用户可以通过锁屏画面看到该通知或在notification Tray(通知托盘)中确认通知。设置菜单中,用户已要求该应用被电源最佳设置除外。
若设备不是充电状态,被认为处于闲置状态的应用不能进行网络链接,同步化工作(mobile Sync)也将会停止。当设备处于充电状态,可以进行网络链接,被保留的工作将会重启。若设备长时间处于闲置状态,一天内,闲置应用可以链接网络一次。
若各位的应用与用户没有相互作用,只在后台运行,可能被指定为闲置状态。这种情况需要对应用的主要运转功能进行测试。
1)各位开发者可以通过新添加的adb命令对应用进行等候模式修改。
$ adb shell am broadcast -a android.os.action.DISCHARGING
$ adb shell am set-inactive <packageName> true
2)而且,通过以下命令,可以确认目前应用是否处在等候模式。
$ adb shell am get-inactive <packageName>
3)最后,通过adb命令,可以使特定应用恢复为正常模式。
$ adb shell am set-inactive <packageName> false
(译者添加的内容:) 删除openSSL的安卓6.0中的最大变化之一为BoringSSL完全替代OpenSSL。
若仍使用OpenSSL,可以直接输入在OpenSSL使用的代码,在应用上增添libssl.so , libcrypto.so 等已被开发的数据库(1Mb),或不使用OpenSSL,直接输入Java代码或使用BoringSSL等两种对自己合适的方式进行修改。
OneStore IAP Update(更新)内容∶
OneStore通过进行in-appSDK的安卓6.0对策以及SDK轻量化工作,除掉了与OpenSSL library原有的联动性。相比原有版本(14.01),将发布的15年版本SDK更为轻而快。敬请期待!
How to update new SDK in your app !
- Download the latest version of IAP SDK
- Remove existing so files(libcrypto.so and libssl.so) and replace jar file with new one.
- Declare the following dependency in your Androidmanifest.xml file:.
<!-- API level -->
<meta-data
android:name="iap:api_version"
android:value="3" />
<!-- runtime permission for OneStore -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
Note: You will not upload your app build with the previous version of IAP SDK from Oct.