1page.title=测试指南 2page.image=images/cards/card-n-guide_2x.png 3meta.tags="preview", "testing" 4page.tags="preview", "developer preview" 5 6@jd:body 7 8<div id="qv-wrapper"> 9 <div id="qv"> 10 <h2>本文内容</h2> 11 <ol> 12 <li><a href="#runtime-permissions">测试权限</a></li> 13 <li><a href="#doze-standby">测试低电耗模式和应用待机模式</a></li> 14 <li><a href="#ids">自动备份和设备标识符</a></li> 15 </ol> 16 </div> 17</div> 18 19<p> 20 利用 Android N,您有机会确保应用可使用下一平台版本。 21如 <a href="{@docRoot}preview/api-overview.html">API 概览</a>和<a href="{@docRoot}preview/behavior-changes.html">行为变更</a>中所述,该 Preview 包括大量 API 和可能影响应用的行为变更。 22 23使用 Preview 测试应用时,您应重点关注一些特定的系统变更,确保用户拥有愉悦的体验。 24 25 26</p> 27 28<p> 29 本指南介绍可使用您的应用测试 Preview 的哪些功能以及如何测试。您应确定优先测试以下特定 Preview 功能,因为它们可能会对应用行为产生较大影响。 30 31 32</p> 33 34<ul> 35 <li><a href="#runtime-permissions">权限</a> 36 </li> 37 <li><a href="#doze-standby">低电耗模式和应用待机模式</a> 38 </li> 39 <li><a href="#ids">自动备份和设备标识符</a></li> 40</ul> 41 42<p> 43 如需了解有关如何使用 Preview 系统映像设置设备或虚拟设备以进行测试的详细信息,请参阅<a href="{@docRoot}preview/setup-sdk.html">设置 Android N SDK</a>。 44 45 46</p> 47 48 49<h2 id="runtime-permissions">测试权限</h2> 50 51<p> 52 新<a href="{@docRoot}preview/features/runtime-permissions.html">权限</a>模型改变了用户向您的应用分配权限的方式。 53您的应用必须在运行时要求用户提供各项权限,而不是在安装过程中要求授予所有权限。 54 55对于用户而言,此行为有助于他们更精细地控制每个应用的 Activity,并更深入地了解应用为何请求提供特定权限的上下文信息。 56用户可以随时向应用授予某项权限或撤销其某项权限。 57预览版的这种功能最有可能会对应用行为产生影响,而且可能会阻止某些应用功能运行或只能在降级状态中运行。 58 59 60</p> 61 62<p class="caution"> 63 这一变更会影响在新平台上运行的所有应用,即便这些应用并非面向新平台版本开发亦是如此。 64该平台为旧版应用提供有限的兼容性行为,但您现在应当开始计划将应用迁移到新权限模型,以便在官方平台启动时发布更新的应用版本。 65 66 67</p> 68 69 70<h3 id="permission-test-tips">测试提示</h3> 71 72<p> 73 使用以下测试提示有助于您计划并通过新权限行为执行应用测试。 74 75</p> 76 77<ul> 78 <li>识别应用的当前权限和相关的代码路径</li> 79 <li>跨受权限保护的服务和数据测试用户流程</li> 80 <li>使用授予/撤销权限的各种组合进行测试</li> 81 <li>使用 {@code adb} 工具从命令行管理权限: 82 <ul> 83 <li>按组列出权限和状态: 84 <pre>adb shell pm list permissions -d -g</pre> 85 </li> 86 <li>使用以下语法授予或撤销一项或多项权限:<br> 87 <pre>adb shell pm [grant|revoke] <permission.name> ...</pre> 88 </li> 89 </ul> 90 </li> 91 <li>针对使用权限的服务对应用进行分析</li> 92</ul> 93 94<h3 id="permission-test-strategy">测试策略</h3> 95 96<p> 97 权限更改会影响应用的结构和设计,以及您为用户提供的用户体验和流程。 98您应评估应用的当前权限使用情况并开始计划要提供的新流程。 99平台的正式版本提供兼容性行为,但您应计划更新应用,而不是依赖于这些行为。 100 101 102</p> 103 104<p> 105 确定应用实际需要和使用的权限,然后找出各种使用受权限保护的服务的代码路径。 106您可通过结合使用新平台测试和代码分析完成此操作。 107在测试中,您应通过将应用的 {@code targetSdkVersion} 更改为预览版,重点关注选择运行时权限。 108如需了解详细信息,请参阅<a href="{@docRoot}preview/setup-sdk.html#">设置 Android N SDK</a>。 109 110 111</p> 112 113<p> 114 使用已撤销和已添加权限的各种组合进行测试,突出显示依赖于权限的用户流程。 115如果依赖关系不明显或不符合逻辑,则您应考虑重构或划分该流程,以消除依赖关系或阐明需要权限的原因。 116 117 118</p> 119 120<p> 121 如需了解有关运行时权限行为、测试和最佳做法的详细信息,请参阅<a href="{@docRoot}preview/features/runtime-permissions.html">权限</a>开发者预览版页面。 122 123 124</p> 125 126 127<h2 id="doze-standby">测试低电耗模式和应用待机模式</h2> 128 129<p> 130 当设备处于空闲状态或应用未聚焦时,低电耗模式和应用待机模式的节能功能将限制应用可执行的后台处理工作量。 131系统可对应用实施的限制包括:限制或禁止访问网络、暂停后台任务、暂停通知、忽略唤醒请求和闹铃。 132 133要确保应用在完成这些节能优化后正常运行,您应通过模拟这些低功耗状态对应用进行测试。 134 135 136</p> 137 138<h4 id="doze">在低电耗模式下测试您的应用</h4> 139 140<p>要在低电耗模式下测试您的应用,请执行以下操作:</p> 141 142<ol> 143<li>使用 Android N 系统映像配置硬件设备或虚拟设备</li> 144<li>将设备连接到开发计算机并安装应用</li> 145<li>运行应用并使其保持活动状态</li> 146<li>通过运行以下命令,模拟进入低电耗模式的设备: 147 148<pre> 149$ adb shell dumpsys battery unplug 150$ adb shell dumpsys deviceidle step 151$ adb shell dumpsys deviceidle -h 152</pre> 153 154 </li> 155 <li>观察重新激活设备时的应用行为。确保应用在设备退出低电耗模式时正常恢复 156</li> 157</ol> 158 159 160<h4 id="standby">在应用待机模式下测试您的应用</h4> 161 162<p>要在应用待机模式下测试您的应用,请执行以下操作:</p> 163 164<ol> 165 <li>使用 Android N 系统映像配置硬件设备或虚拟设备</li> 166 <li>将设备连接到开发计算机并安装应用</li> 167 <li>运行应用并使其保持活动状态</li> 168 <li>通过运行以下命令,模拟进入待机模式的应用: 169 170<pre> 171$ adb shell am broadcast -a android.os.action.DISCHARGING 172$ adb shell am set-idle <packageName> true 173</pre> 174 175 </li> 176 <li>使用以下命令模拟如何唤醒应用: 177 <pre>$ adb shell am set-idle <packageName> false</pre> 178 </li> 179 <li>观察唤醒后的应用行为。确保应用从待机模式中正常恢复。 180特别地,您应检查应用的通知和后台作业是否按预期继续运行 181</li> 182</ol> 183 184<h2 id="ids">自动备份应用和设备特定的标识符</h2> 185 186<p>如果应用坚持在内部存储中使用任何设备特定的标识符,如 Google 云消息传递注册 ID,请确保遵循最佳做法将存储位置从自动备份中排除,如<a href="{@docRoot}preview/backup/index.html">自动备份应用</a>中所述。 187 188 189 190 </p> 191