12f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedmanpage.title=测试指南
22f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedmanpage.image=images/cards/card-build_16x9_2x.png
32f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedmanpage.keywords=预览资源,androidm,测试,权限
42f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
52f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman@jd:body
62f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
72f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<div id="qv-wrapper">
82f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  <div id="qv">
92f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman    <h2>本文内容</h2>
102f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman      <ol>
112f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman        <li><a href="#runtime-permissions">测试权限</a></li>
122f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman        <li><a href="#doze-standby">测试瞌睡模式和应用待机模式</a></li>
132f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman        <li><a href="#ids">自动备份和设备标识符</a></li>
142f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman      </ol>
152f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  </div>
162f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman</div>
172f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
182f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<p>
192f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  利用 Android M 开发者预览版,您有机会确保应用可使用下一平台版本。
202f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman如 <a href="{@docRoot}preview/api-overview.html">API 概览</a>和<a href="{@docRoot}preview/behavior-changes.html">行为变更</a>中所述,该预览版包括大量 API 和可能影响应用的行为变更。
212f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
222f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman使用预览版测试应用时,您应重点关注一些特定的系统变更,确保用户拥有愉悦的体验。
232f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
242f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
252f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman</p>
262f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
272f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<p>
282f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  本指南介绍可使用您的应用测试预览版的哪些功能以及如何测试。您应确定优先测试以下特定预览版功能,因为它们可能会对应用行为产生较大影响。
292f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
302f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
312f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman</p>
322f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
332f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<ul>
342f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  <li><a href="#runtime-permissions">权限</a>
352f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  </li>
362f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  <li><a href="#doze-standby">瞌睡模式和应用待机模式</a>
372f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  </li>
382f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  <li><a href="#ids">自动备份和设备标识符</a></li>
392f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman</ul>
402f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
412f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<p>
422f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  如需了解有关如何使用预览版系统映像设置设备或虚拟设备以进行测试的详细信息,请参阅<a href="{@docRoot}preview/setup-sdk.html">设置预览版 SDK</a>。
432f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
442f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman</p>
452f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
462f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
472f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<h2 id="runtime-permissions">测试权限</h2>
482f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
492f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<p>
502f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  新<a href="{@docRoot}preview/features/runtime-permissions.html">权限</a>模型改变了用户向您的应用分配权限的方式。
512f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman您的应用必须在运行时要求用户提供各项权限,而不是在安装过程中要求授予所有权限。
522f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
532f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman对于用户而言,此行为有助于他们更精细地控制每个应用的Activity,并更深入地了解应用为何请求提供特定权限的上下文信息。
542f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman用户可以随时向应用授予某项权限或撤销其某项权限。
552f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman预览版的这种功能最有可能会对应用行为产生影响,而且可能会阻止某些应用功能运行或只能在降级状态中运行。
562f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
572f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
582f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman</p>
592f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
602f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<p class="caution">
612f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  这一变更会影响在新平台上运行的所有应用,即便这些应用并非面向新平台版本开发亦是如此。
622f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman该平台为旧版应用提供有限的兼容性行为,但您现在应当开始计划将应用迁移到新权限模型,以便在官方平台启动时发布更新的应用版本。
632f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
642f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
652f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman</p>
662f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
672f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
682f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<h3 id="permission-test-tips">测试提示</h3>
692f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
702f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<p>
712f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  使用以下测试提示有助于您计划并通过新权限行为执行应用测试。
722f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
732f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman</p>
742f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
752f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<ul>
762f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  <li>识别应用的当前权限和相关的代码路径</li>
772f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  <li>跨受权限保护的服务和数据测试用户流程</li>
782f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  <li>使用授予/撤销权限的各种组合进行测试</li>
792f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  <li>使用 {@code adb} 工具从命令行管理权限:
802f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman    <ul>
812f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman      <li>按组列出权限和状态:
822f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman        <pre>adb shell pm list permissions -d -g</pre>
832f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman      </li>
842f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman      <li>使用以下语法授予或撤销一项或多项权限:<br>
852f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman        <pre>adb shell pm [grant|revoke] &lt;permission.name&gt; ...</pre>
862f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman      </li>
872f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman    </ul>
882f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  </li>
892f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  <li>针对使用权限的服务对应用进行分析</li>
902f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman</ul>
912f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
922f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<h3 id="permission-test-strategy">测试策略</h3>
932f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
942f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<p>
952f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  权限更改会影响应用的结构和设计,以及您为用户提供的用户体验和流程。
962f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman您应评估应用的当前权限使用情况并开始计划要提供的新流程。
972f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman平台的正式版本提供兼容性行为,但您应计划更新应用,而不是依赖于这些行为。
982f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
992f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1002f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman</p>
1012f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1022f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<p>
1032f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  确定应用实际需要和使用的权限,然后找出各种使用受权限保护的服务的代码路径。
1042f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman您可通过结合使用新平台测试和代码分析完成此操作。
1052f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman在测试中,您应通过将应用的 {@code targetSdkVersion} 更改为预览版,重点关注选择运行时权限。
1062f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman如需了解详细信息,请参阅<a href="{@docRoot}preview/setup-sdk.html#">设置预览版 SDK</a>。
1072f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1082f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman</p>
1092f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1102f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<p>
1112f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  使用已撤销和已添加权限的各种组合进行测试,突出显示依赖于权限的用户流程。
1122f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman如果依赖关系不明显或不符合逻辑,则您应考虑重构或划分该流程,以消除依赖关系或阐明需要权限的原因。
1132f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1142f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1152f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman</p>
1162f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1172f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<p>
1182f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  如需了解有关运行时权限行为、测试和最佳做法的详细信息,请参阅<a href="{@docRoot}preview/features/runtime-permissions.html">权限</a>开发者预览版页面。
1192f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1202f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1212f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman</p>
1222f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1232f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1242f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<h2 id="doze-standby">测试瞌睡模式和应用待机模式</h2>
1252f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1262f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<p>
1272f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  当设备处于空闲状态或应用未聚焦时,瞌睡模式和应用待机模式的节能功能将限制应用可执行的后台处理工作量。
1282f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman系统可对应用实施的限制包括:限制或禁止访问网络、暂停后台任务、暂停通知、忽略唤醒请求和闹铃。
1292f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1302f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman要确保应用在完成这些节能优化后正常运行,您应通过模拟这些低功耗状态对应用进行测试。
1312f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1322f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1332f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman</p>
1342f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1352f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<h4 id="doze">在瞌睡模式下测试您的应用</h4>
1362f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1372f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<p>要在瞌睡模式下测试您的应用,请执行以下操作:</p>
1382f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1392f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<ol>
1402f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<li>使用 M 预览版系统映像配置硬件设备或虚拟设备</li>
1412f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<li>将设备连接到开发计算机并安装应用</li>
1422f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<li>运行应用并使其保持活动状态</li>
1432f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<li>通过运行以下命令,模拟进入瞌睡模式的设备:
1442f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1452f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<pre>
1462f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman$ adb shell dumpsys battery unplug
1472f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman$ adb shell dumpsys deviceidle step
1482f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman$ adb shell dumpsys deviceidle -h
1492f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman</pre>
1502f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1512f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  </li>
1522f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  <li>观察重新激活设备时的应用行为。确保应用在设备退出瞌睡模式时正常恢复
1532f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman</li>
1542f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman</ol>
1552f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1562f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1572f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<h4 id="standby">在应用待机模式下测试您的应用</h4>
1582f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1592f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<p>要在应用待机模式下测试您的应用,请执行以下操作:</p>
1602f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1612f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<ol>
1622f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  <li>使用 M 预览版系统映像配置硬件设备或虚拟设备</li>
1632f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  <li>将设备连接到开发计算机并安装应用</li>
1642f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  <li>运行应用并使其保持活动状态</li>
1652f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  <li>通过运行以下命令,模拟进入待机模式的应用:
1662f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1672f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<pre>
1682f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman$ adb shell am broadcast -a android.os.action.DISCHARGING
1692f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman$ adb shell am set-idle &lt;packageName&gt; true
1702f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman</pre>
1712f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1722f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  </li>
1732f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  <li>使用以下命令模拟如何唤醒应用:
1742f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman    <pre>$ adb shell am set-idle &lt;packageName&gt; false</pre>
1752f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  </li>
1762f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman  <li>观察唤醒后的应用行为。确保应用从待机模式中正常恢复。
1772f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman特别地,您应检查应用的通知和后台作业是否按预期继续运行
1782f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman</li>
1792f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman</ol>
1802f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1812f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<h2 id="ids">自动备份应用和设备特定的标识符</h2>
1822f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1832f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman<p>如果应用坚持在内部存储中使用任何设备特定的标识符,如 Google 云消息传递注册 ID,请确保遵循最佳做法将存储位置从自动备份中排除,如<a href="{@docRoot}preview/backup/index.html">自动备份应用</a>中所述。
1842f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1852f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1862f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman
1872f47c23925a341c51cfafde4fcc4c1960c4c91ddDavid Friedman </p>
188