适用于 Windows Phone 的 Windows 应用认证工具包测试

Windows 应用认证工具包包含大量测试,可以帮助确保 Windows Phone 8.1 应用为在应用商店中发布做好准备。

注意  Windows 10 开发人员工具预览中附带的 Windows 应用认证工具包发布中的测试包含在本主题中。
测试名称Windows 8Windows 8.1Windows Phone 8.1Windows 10

应用清单

Windows 安全功能测试

支持的 Windows 应用商店 API 测试

应用清单资源测试

调试配置测试

文件编码测试

应用功能测试

Windows 运行时元数据验证

相应的平台文件

程序包健全性

应用通知服务的使用情况

注意  包括在 Windows Insider Preview 开发人员工具中

资源使用率测试

 

Windows Phone 8.1 应用认证测试

程序包合规性测试

测试程序包的内容以确保内容有效。

应用部件清单合规性测试

测试应用部件清单的内容以确保内容有效。

背景

应用必须拥有格式正确的应用部件清单 (manifest)。

测试详细信息

检查应用部件清单 (manifest) 以验证内容是否正确,如程序包元数据需求中所述。

  • 文件扩展名和协议

    你的应用可以声明要与其关联的文件扩展名。使用不当时,应用会声明大量文件扩展名(大多数扩展名甚至可能不会使用),从而导致较差的用户体验。此测试将添加检查以限制可与应用关联的文件扩展名的数量。

  • 框架依赖关系规则

    此测试强制要求适用于 Windows Phone 8.1 应用在 Windows 运行时采用适当的依赖关系。如果存在不适当的依赖关系,此测试将失败。

    框架操作系统最低版本在 Windows Phone 8.1 上运行

    Microsoft.VCLibs.120.00.Phone

    6.3.1

     

    如果应用适用的操作系统版本和框架依赖关系采用的操作系统版本不匹配,该测试将失败。如果应用引用了任何预览版本的框架 .dlls,该测试也将失败。

更正操作

针对程序包元数据要求中描述的要求检查应用清单。

应用通知服务的使用情况

用于声明某一特定通知服务(MPN 或 WNS)的应用必须仅使用仅此类型的通知。如果应用正在从未声明的通知服务中调用 API,该测试将失败。此测试仅适用于 XAP,它是传统的手机应用打包类型。

后台

在应用声明了某个通知服务后却使用其他通知服务的情况下,任何通知都很可能会失败。如果已声明 WNS,传统 .NET 通知 API 将无法正常工作。如果已声明 WNS,现代 WinRT 通知 API 仍将无法正常工作。

测试详细信息

如果清单中包含 NotificationService 属性,该测试将反复检查调用的 API,以验证它们是否与已声明的服务匹配。

更正操作

如果应用在应用清单中声明 WNS,请使用 WNS API。如果应用声明 MPN,请使用传统 .NET 通知 API。

Windows 安全功能测试

背景

更改默认的 Windows 安全保护可能增加客户的风险。

测试详细信息

通过运行 BinScope Binary Analyzer 来测试应用的安全性。

BinScope Binary Analyzer 测试检查应用的二进制文件,以检查使应用不容易被攻击或被用作攻击平台的编码和构建实践。

BinScope Binary Analyzer 测试检查对以下安全相关功能的正确使用。

BinScope Binary Analyzer 测试

BinScope Binary Analyzer 测试检查应用的二进制文件,以检查使应用不容易被攻击或被用作攻击平台的编码和构建实践。

BinScope Binary Analyzer 测试检查对这些安全相关功能的正确使用:

AllowPartiallyTrustedCallersAttribute

Windows 应用认证工具包错误消息:APTCACheck 测试失败

AllowPartiallyTrustedCallersAttribute (APTCA) 属性可以从签名程序集中的部分信任代码访问完全信任的代码。当你将 APTCA 属性应用到程序集时,部分信任的调用方便可以在该程序集的寿命内访问它,这样可能会危及安全性。

在应用未通过此测试时怎么办

不要使用强命名程序集上的 APTCA 属性,除非你的项目需要它且已充分了解风险。为防不时之需,确保所有 API 都受到了保护并具有合适的代码访问安全性要求。程序集包含在 Windows 应用商店应用中时,APTCA 不会生效。

备注

仅在托管代码(C#、.NET 等)上执行此测试。

/SafeSEH 异常处理保护

Windows 应用认证工具包错误消息:SafeSEHCheck 测试失败

异常处理程序在应用遇到异常情况时运行,例如被零除错误。因为在调用函数时异常处理程序的地址存储在堆栈上,所以如果某个恶意软件要覆盖堆栈,可能会易于受到缓冲区溢出攻击者的攻击。

在应用未通过此测试时怎么办

生成应用时,在链接器命令中启用 /SAFESEH 选项。默认情况下,此选项处于打开状态(位于 Visual Studio 的“发布”配置中)。确认在生成指令中为应用中的所有可执行模块启用了此选项。

备注

不在 64 位二元文件或 ARM 芯片集二元文件上执行此测试,因为它们不将异常处理程序地址存储在堆栈上。

数据执行保护

Windows 应用认证工具包错误消息:NXCheck 测试失败

此测试验证应用是否未运行存储在数据段中的代码。

在应用未通过此测试时怎么办

生成应用时,在链接器命令中启用 /NXCOMPAT 选项。默认情况下,此选项在支持数据执行保护 (DEP) 的链接器版本中处于打开状态。

备注

我们建议,在支持 DEP 的 CPU 上测试你的应用,并修复你发现的由于 DEP 所导致的任何故障。

支持的 Windows 应用商店 API 测试

测试应用是否使用了任何不兼容的 API。

背景

应用必须使用要针对 Windows 应用商店进行认证的 Windows 应用商店应用 API(Windows 运行时或支持的 Win32 API)。此测试还识别托管二进制文件依赖于批准的 Windows 8 或 Windows 8.1 配置文件外部函数的情形。

测试详细信息

  • 通过检查二进制文件的导入地址表,验证应用包中的每个二进制文件都没有依赖于不支持 Windows 应用商店应用开发的 Win32 API。
  • 验证应用包中的每个托管二进制文件均不依赖于批准的 Windows 8 或 Windows 8.1 配置文件以外的函数。

更正操作

确保应用编译为一个发行版本,而不是调试版本。

注意  应用的调试版本将无法通过此测试,即使应用仅使用 Windows 应用商店应用 API 也是如此。

检查错误消息,识别应用所用的哪些 API 不是 Windows 应用商店应用 API

注意  即使调试配置仅使用针对 Windows 应用商店应用的 Windows SDK 中的 API,内置于该调试配置中的 C++ 应用也会导致此测试失败。有关详细信息,请参阅 Windows 应用商店应用中 Windows API 的替代项

应用清单资源测试

应用资源验证

如果应用部件清单 (manifest) 中声明的字符串或图像不正确,应用可能未安装。如果安装应用时出现了这些错误,应用的徽标或应用使用的其他图像可能无法正确显示。

测试详细信息

检查应用部件清单 (manifest) 中定义的资源,确保它们是最新且有效的。

更正操作

使用下表作为指导。

错误消息评论

图像 {imageName} 定义 Scale 和 TargetSize 限定符;一次只能定义一个限定符。

可以自定义不同分辨率的图像。

在实际消息中,{image name} 包含有错误的图像名称。

确保每个图像都将 Scale 或 TargetSize 定义为限定符。有关详细信息,请参阅如何使用限定符命名资源

图像 {imageName} 不符合大小限制。

确保所有应用图像都符合相应的大小限制。

在实际消息中,{image name} 包含有错误的图像名称。

有关应用的图像及其大小的详细信息,请参阅应用图像

程序包中缺少图像 {imageName}。

缺少所需的图像。

在实际消息中,{image name} 包含缺少的图像名称。

有关应用的图像及其大小的详细信息,请参阅应用图像

图像 {imageName} 不是有效的图像文件。

确保所有应用图像都符合相应的文件格式类型限制。

在实际消息中,{image name} 包含无效的图像名称。

有关应用的图像及其大小的详细信息,请参阅应用图像

图像“BadgeLogo”在位置 (x, y) 上具有一个无效的 ABGR 值 {value}。像素必须为白色 (##FFFFFF) 或透明 (00######)

锁屏提醒徽标是显示在锁屏提醒通知旁边的图像,用于在锁屏上标识应用。该图像必须是单色图像(它只能包含白色和透明像素)。

在实际消息中,{value} 在图像中包含无效的颜色值。

有关应用的图像及其大小的详细信息,请参阅应用图像

图像“BadgeLogo”在位置 (x, y) 上具有一个对高对比度白色图像来说无效的 ABGR 值 {value}。像素必须为 (##2A2A2A) 或更暗,或者透明 (00######)。

锁屏提醒徽标是显示在锁屏提醒通知旁边的图像,用于在锁屏上标识应用。 因为当处于高对比度白色背景中时锁屏提醒徽标出现在白色背景上,因此它必须是较暗版本的正常锁屏提醒徽标。在高对比度白色背景中,锁屏提醒徽标只能包含比 (##2A2A2A) 暗或透明的像素。

在实际消息中,{value} 在图像中包含无效的颜色值。

有关应用的图像及其大小的详细信息,请参阅应用图像

图像必须至少定义一个没有 TargetSize 限定符的变量。它必须定义一个 Scale 限定符或者保持 Scale 和 TargetSize 未指定,默认值为 Scale-100。

有关详细信息,请参阅按比例缩放像素密度指南如何使用限定符命名资源

该程序包缺少一个“resources.pri”文件。

如果你在应用部件清单 (manifest) 中包含可本地化的内容,请确保你的应用包包含有效的 resources.pri 文件。

“resources.pri”文件必须包含一个其名称与程序包名称 {packageFullName} 相匹配的资源映射

如果清单发生更改并且 resources.pri 中的资源映射名称不再与清单中的程序包名称相匹配,那么你会获得此错误。

在实际消息中,{packageFullName} 包含 resources.pri 必须包含的程序包名称。

为了解决此问题,你需要重新构建 resources.pri 并且这样做的最简单方法就是重新构建应用包。

“resources.pri”文件不得启用 AutoMerge。

MakePRI.exe 支持一个名为 AutoMerge 的选项。AutoMerge 的默认值为 off。启用时,AutoMerge 在运行时将应用的语言包资源合并到一个 resources.pri 中。我们不建议对要通过 Windows 应用商店分发的 Windows 应用商店应用这样做。通过 Windows 应用商店分发的 Windows 应用商店应用的 resources.pri 必须位于应用包的根目录中并且必须包含应用支持的所有语言参考。

字符串 {string} 不符合 {number} 个字符的最大长度限制。

请参阅程序包元数据要求

在实际消息中,{string} 替换为有错误的字符串并且 {number} 包含最大程度。

字符串 {string} 不得包含前导空格/尾随空格。

应用部件清单 (manifest) 中元素的架构不允许前导空格或尾随空格字符。

在实际消息中,{string} 替换为有错误的字符串。

确保 resources.pri 中清单字段的任何本地化值都没有前导空格或尾随空格字符。

字符串必须非空(长度大于零)

有关详细信息,请参阅程序包元数据要求

“resources.pri”文件中没有指定的默认资源。

有关详细信息,请参阅定义应用资源

“resources.pri”文件中没有指定的资源值。

确保应用部件清单 (manifest) 具有在 resources.pri 中定义的有效资源。

有关详细信息,请参阅本地化程序包清单

图像文件 <filename> 必须小于 204800 字节。**

减小指示图像的大小。

<filename> 文件不能包含反向映射部分。**

如果反向映射是在调用 makepri.exe 时在 Visual Studio 的 F5 调试期间生成的,通过在生成 pri 文件时运行 makepri.exe(不具有 /m 参数)可删除该反向映射。

** 指示某个测试已添加到适用于 Windows 8.1 的 Windows 应用认证工具包 3.3 中,并仅在使用该版本的工具包时适用。

 

有关详细信息,请参阅应用包资源验证

调试配置测试

测试应用,确保它不是一个调试版本。

背景

要通过 Windows 应用商店的认证,应用不得编译为调试版本,且不得引用可执行文件的调试版本。此外,你必须生成优化代码才能使应用通过此测试。

测试详细信息

测试应用,确保它不是调试版本并且未链接到任何调试框架。

更正操作

  • 将应用编译为发行版,然后再将它提交到 Windows 应用商店。
  • 确保你安装了正确版本的 .NET Framework。
  • 确保该应用未链接到框架的调试版本,并使用发布版本构建。如果此应用包含 .NET 组件,请确保已安装相应的 .NET Framework 版本。

品牌验证

Windows 应用商店应用应该完整并且功能齐全。使用默认图像(来自模板或 SDK 示例)的应用会带来很差的用户体验,且无法在应用商店目录中方便地标识。

测试详细信息

该测试将验证应用使用的图像不是 SDK 示例或 Microsoft Visual Studio 中的默认图像。

更正操作

将默认图像替换为更能区别和代表该应用的图像。

地址空间布局随机化

Windows 应用认证工具包错误消息:DBCheck 测试失败

地址空间布局随机化 (ASLR) 将可执行文件映像加载到内存中不可预测的位置,从而使预期某个程序在特定虚拟地址加载的恶意软件更难以按可预见的方式运行。你的应用及其使用的所有组件必须支持 ASLR。

在应用未通过此测试时怎么办

在生成应用时,在链接器命令中启用 /DYNAMICBASE 选项。验证你的应用使用的所有模块也使用此链接器选项。

备注

通常,ASLR 不影响性能。但在某些情况下,在 32 位系统上有少许的性能改进。原因可能是,在许多不同内存位置加载许多映像的高拥堵系统中,性能可能会降级。

此测试仅在使用托管代码编写的应用上执行,如使用 C# 或 .NET Framework 编写的应用。

读取/写入共享 PE 部分

Windows 应用认证工具包错误消息:SharedSectionsCheck 测试失败。

如果二进制文件包含标记为共享的可写入节,那么它就是一种安全威胁。除非必须,否则不要构建包含共享的可写入节的应用。使用 CreateFileMappingMapViewOfFile 创建受到适当保护的共享内存对象。

在应用未通过此测试时怎么办

从应用中删除任何共享节,使用合适的安全属性调用 CreateFileMappingMapViewOfFile 来创建共享内存对象,然后重新构建你的应用。

备注

此测试仅在使用非托管语言(如使用 C 或 C++)编写的应用上执行。

AppContainerCheck

Windows 应用认证工具包错误消息:AppContainerCheck 测试失败。

AppContainerCheck 验证一个可执行二进制文件的可移植可执行 (PE) 头文件中的 appcontainer 位是否已设置。 Windows Phone 8.1 应用必须在所有 .exe 文件和所有非托管 DLL 上设置了 appcontainer 位才能正确执行。

在应用未通过此测试时怎么办

如果原生的可执行文件未通过测试,请确保你使用了最新的编译器和链接器来构建文件,并在链接器上使用了 /appcontainer 标记。

如果托管的可执行文件未通过测试,请确保你使用了最新的编译器和链接器(如 Visual Studio)来构建 Windows Phone 8.1 应用。

备注

此测试在所有 .exe 文件和非托管 DLL 上执行。

ExecutableImportsCheck

Windows 应用认证工具包错误消息:ExecutableImportsCheck 测试失败。

如果可移植可执行 (PE) 映像的导入表放在了一个可执行代码节中,该映像将无法通过此测试。 如果通过将 Visual C++ 链接器的 /merge 标记设置为 /merge:.rdata=.text,为 PE 映像启用了 .rdata 合并,则可能发生此情形。

在应用未通过此测试时怎么办

不要将导入表合并到可执行代码节中。确保 Visual C++ 链接器的 /merge 标记未设置为将“.rdata”节合并到代码节中。

备注

此测试在除纯粹的托管程序集以外的所有二进制代码上执行。

WXCheck

Windows 应用认证工具包错误消息:WXCheck 测试失败。

此项检查有助于确保二进制文件不包含任何映射为可写和可映射的页面。 如果二进制文件包含可写和可执行的部分,或者如果二进制文件的 SectionAlignment 小于 PAGE_SIZE,则可能会发生这种情况。

在应用未通过此测试时怎么办

确保二进制文件不包含可写或可执行部分,并且二进制文件的 SectionAlignment 值至少等于 PAGE_SIZE

备注

此测试在所有 .exe 文件和本机非托管 DLL 上执行。

如果已在启用“编辑”和“继续”(/ZI) 的情况下构建可执行文件,则其中可能包含可写和可执行部分。禁用“编辑”和“继续”将导致不提供无效部分。

PAGE_SIZE 是可执行文件的默认 SectionAlignment 值。

禁止文件分析器

Windows 应用认证工具包错误消息:“对被禁止文件的检查”测试失败。

Windows Phone 8.1 应用不应当包含某些文件。这些文件有一个较新的版本可用,该版本提供了重要的安全性、可靠性或其他改进。Microsoft 在 Windows 应用认证工具包中阻止了这些文件以确保所有开发人员都使用当前版本。

测试详细信息

Windows 应用认证工具包中“对被禁止文件的检查”当前会对以下文件进行检查:

  • Bing.Maps.JavaScript\js\veapicore.js

    当应用使用的是该文件的“Release Preview”版本而不是最新的正式版时,此检查通常会失败。

    与 Windows 8.1 SDK 一起提供的 Windows 应用认证工具包的最新版本已添加对 Microsoft Advertising SDK 的预发布版本的检查。如果在禁止文件测试阶段发现以下文件的预发布版本,你需要更新到 Microsoft Advertising SDK 的已发布版本:

    • Microsoft.Advertising.Mobile.Display.winmd
    • Microsoft.Advertising.Mobile.UI.winmd
    • Microsoft.Advertising.Mobile.UI.Design.dl

更正操作

要更正此错误,请使用最新版本的适用于 Windows 应用商店应用的必应地图 SDK

要更正 Microsoft Advertising SDK 中的错误,请使用 Microsoft Advertising SDK 的最新版本。

私有代码签名

测试应用程序包中是否存在私有代码签名二进制文件。

背景

私有代码签名文件应该保持私有,因为在泄露这些文件的事件中,它们可能会被恶意使用。

测试详细信息

在应用程序包中测试扩展名为 .pfx 或 .snk 的文件,这指示其中包含私有签名密钥。

更正操作

从该程序包中删除任何私有代码签名密钥(例如 .pfx 和 .snk 文件)。

应用程序计数测试

测试应用程序包的内容以确保仅存在一个应用。

背景

Windows Phone 8.1 应用程序包在提交到应用商店时仅可以包含单个应用。

更正操作

确保应用部件清单仅为每个程序包定义一个应用。

程序包大小检查

测试应用程序包的大小以确保它没有超过 4GB。

背景

Windows Phone 8.1 应用程序包的大小限制为 4GB,以供提交到应用商店。请注意,此限制适用于该程序包,但不适用于展开的内容。

更正操作

减小应用程序包的大小以确保发布版本的大小限制在允许的 4GB 内。

捆绑包清单验证

测试以确保捆绑包中仅包含一个主应用程序包,且体系结构为 ARM 或中性。

背景

Windows Phone 8.1 应用捆绑包预期包含一个主应用程序包,该捆绑包的体系结构为 ARM 或中性。捆绑包中最多可以包含 512 个程序包。

更正操作

更新应用程序包以确保捆绑包中仅包含一个主应用程序包,且定义了适当的体系结构。你可能需要从该捆绑包中删除 x86 和/或 x64 体系结构程序包。 如果捆绑包中包含的程序包多于 512 个,你将需要减少程序包的数量以满足要求。

支持的 API 测试

支持的 API

测试应用是否使用了任何不兼容的 API。

背景

应用必须使用要针对应用商店进行认证的 Windows Phone 8.1 应用 API。此测试还识别托管二进制文件依赖于批准的 Windows Phone 8.1 配置文件以外函数的情形。

测试详细信息

  • 通过检查二进制文件的导入地址表,验证应用程序包中的每个二进制文件均不依赖于 Windows Phone 8.1 应用开发中不受支持的 API。

  • 验证应用程序包中的每个托管二进制文件均不依赖于批准的 Windows Phone 8.1 配置文件以外的函数。

更正操作

确保应用编译为一个发行版本,而不是调试版本。

注意  应用的调试版本将无法通过此测试,即使应用仅使用 Windows Phone 8.1 应用 API 也是如此。

检查错误消息,识别应用所用的哪些 API 不是 Windows Phone 8.1 应用 API。

应用部件清单资源测试

应用资源验证

如果应用部件清单中声明的字符串或图像不正确,应用可能未安装。应用不会在安装时带有这些错误,否则应用徽标和其他图像可能不会正确显示。

测试详细信息

检查应用部件清单中定义的资源,确保它们都存在且有效。

更正操作

使用下表作为指导。

错误消息评论

图像 {imageName} 定义 ScaleTargetSize 限定符。一次只能定义一个限定符。

可以自定义不同分辨率的图像。

在实际消息中,{imageName} 包含带有错误的图像名称。

确保每个图像都将 ScaleTargetSize 定义为限定符。有关详细信息,请参阅如何使用限定符命名资源

图像 {imageName} 不符合大小限制。

确保所有应用图像都符合相应的大小限制。

在实际消息中,{imageName} 包含带有错误的图像名称。

有关应用图像和大小的详细信息,请参阅应用图像

程序包中缺少图像 {imageName}

缺少所需的图像。

在实际消息中,{imageName} 包含缺少的图像的名称。

有关应用图像和大小的详细信息,请参阅应用图像

图像 {imageName} 不是有效的图像文件。

确保所有应用图像都符合相应的文件格式类型限制。

在实际消息中,{imageName} 包含无效的图像的名称。

有关应用图像和大小的详细信息,请参阅应用图像

图像“BadgeLogo”在位置 (x,y) 上具有一个无效的 ABGR 值 {value}。像素必须为白色 (##FFFFFF) 或透明 (00######)

锁屏提醒徽标是显示在锁屏提醒通知旁边的图像,用于在锁屏上标识应用。该图像必须是单色图像(它只能包含白色和透明像素)。

在实际消息中,{value} 在图像中包含无效的颜色值。

有关应用图像和大小的详细信息,请参阅应用图像

图像“BadgeLogo”在位置 (x,y) 上具有一个对高对比度白色图像来说无效的 ABGR 值 {value}。像素必须为 (##2A2A2A) 或更暗,或者透明 (00######)。

锁屏提醒徽标是显示在锁屏提醒通知旁边的图像,用于在锁屏上标识应用。因为当处于高对比度白色背景中时锁屏提醒徽标出现在白色背景上,因此它必须是较暗版本的标准锁屏提醒徽标。在高对比度白色背景中,锁屏提醒徽标只能包含比 (##2A2A2A) 暗或透明的像素。

在实际消息中,{value} 在图像中包含无效的颜色值。

有关应用图像和大小的详细信息,请参阅应用图像

图像必须至少定义一个没有 TargetSize 限定符的变量。它必须定义一个 Scale 限定符或者保持 Scale 和 TargetSize 未指定,默认值为 Scale-100。

有关详细信息,请参阅按比例缩放像素密度指南如何使用限定符命名资源

该程序包缺少一个“resources.pri”文件。

如果你在应用部件清单中包含可本地化的内容,请确保应用程序包包含有效的 resources.pri 文件。

“resource.pri”文件必须包含一个其名称与程序包名称 {packageFullName} 相匹配的资源映射

如果清单发生更改并且 resources.pri 中的资源映射名称不再与清单中的程序包名称相匹配,那么你会获得此错误。

在实际消息中,{packageFullName} 包含 resources.pri 必须包含的程序包名称。

要修复此问题,你需要重建 resources.pri。完成此操作的最简单方法是重建应用程序包。

“resources.pri”文件不得启用 AutoMerge。

MakePRI.exe 支持一个名为 AutoMerge 的选项。此选项的默认设置为“关”。

启用时,AutoMerge 在运行时将应用的语言包资源合并到一个 resources.pri 中。

字符串 {string} 不符合 {number} 个字符的最大长度限制。

请参阅程序包元数据要求

在实际消息中,{string} 替换为有错误的字符串并且 {number} 包含最大程度。

字符串 {string} 不得包含前导空格/尾随空格。

应用部件清单 (manifest) 中元素的架构不允许前导空格或尾随空格字符。

在实际消息中,{string} 替换为有错误的字符串。

确保 resource.pri 中清单字段中的任何本地化值都没有前导空格或尾随空格字符。

字符串必须非空(长度大于零)。

有关详细信息,请参阅程序包元数据要求

“resources.pri”文件中没有指定的默认资源。

有关详细信息,请参阅定义应用资源

“resources.pri”文件中没有指定的资源值。

确保应用部件清单具有在 resources.pri 中定义的有效资源。

有关详细信息,请参阅本地化程序包清单

 

有关详细信息,请参阅应用包资源验证

品牌验证

Windows Phone 8.1 应用应该完整并且功能齐全。使用默认图像(来自模板或 SDK 示例)的应用会带来很差的用户体验,且无法在应用商店目录中方便地标识。

测试详细信息

该测试将验证应用使用的图像不是 SDK 示例或 Visual Studio 模板中的默认图像。

更正操作

将默认图像替换为能区别和代表该应用的图像。

调试配置测试

调试配置

测试应用以确保它不是一个调试版本。

背景

要通过应用商店的认证,应用不得编译为调试版本,且不得引用可执行文件的调试版本。此外,你必须生成优化代码才能通过此测试。

测试详细信息

测试应用以确保它不是调试版本并且未链接到任何调试框架。

更正操作

  • 将应用编译为发布版本,然后再将它提交到应用商店。
  • 确保你安装了正确版本的 .NET Framework。
  • 确保该应用未链接到框架的调试版本,它使用发布版本。如果此应用包含 Microsoft .NET 组件,请确保安装了正确版本的 .NET Framework。

文件编码测试

UTF-8 文件编码

背景

HTML、CSS 和 JavaScript 文件必须使用带有相应字节顺序标记 (BOM) 的 UTF-8 格式进行编码,以便从字节码缓存中获益并避免某些运行时错误情况。

测试详细信息

测试应用包的内容,确保它们使用了正确的文件编码。

更正操作

在 Visual Studio 中打开受影响的文件,并从“文件”菜单中选择“另存为”。选择“保存”按钮旁边的下拉控件,并选择 Save with Encoding。从“高级”保存选项对话框中,选择 Unicode(带签名的 UTF-8)选项,并单击“确定”

应用功能测试

专用许可范围

背景

专用许可范围专用于非常特定的场景。仅允许公司帐户使用这些功能。

测试详细信息

验证应用是否在声明以下任何功能:

  • EnterpriseAuthentication
  • SharedUserCertificates
  • DocumentsLibrary

如果声明了其中任一功能,该测试将向用户显示警告。

更正操作

如果你的应用不需要特殊的使用功能,请考虑将其删除。此外,使用这些功能应接受其他着陆策略审查。

Windows 运行时元数据验证

背景

确保随应用发送的 Windows 运行时组件符合 Windows 运行时类型系统。

测试详细信息

验证应用包中的 .winmd 文件符合 Windows 运行时规则。

更正操作

  • ExclusiveTo 属性测试:确保 Windows 运行时类未实现标记为 ExclusiveTo 其他类的接口。
  • 类型位置测试:确保所有 Windows 运行时类型的元数据位于在应用包中具有最长命名空间匹配名称的 winmd 文件中。
  • 类型名称区分大小写测试:确保所有 Windows 运行时类型在应用包中具有不区分大小写的唯一名称。 还要确保没有任何 Windows 运行时类型名称在应用包中用作命名空间名称。
  • 类型名称正确性测试:确保在全局命名空间或 Windows 顶级命名空间中没有 Windows 运行时类型。
  • 一般元数据正确性测试:确保用于生成 Windows 运行时类型的编译器符合最新的 Windows 运行时规范。
  • 属性测试:确保 Windows 运行时类上的所有属性都具有 get 方法(set 方法可选)。 对于 Windows 运行时类型上的所有属性,确保 get 方法返回值的类型与 set 方法输入参数的类型匹配。

程序包健全性测试

平台适合性文件测试

安装混合二进制文件的应用可能崩溃或者不能正确运行,具体取决于用户的处理器体系结构。

背景

此测试验证应用包中的二进制文件,确定是否存在体系结构冲突。应用包不得包含无法在部件清单 (manifest) 指定的处理器体系结构上使用的二进制文件。包含不受支持的二进制文件可能会导致应用发生崩溃,或造成应用包大小出现不必要的增加。

测试详细信息

在与应用程序包处理器体系结构声明交叉引用时,验证 PE 标头中每个文件的“位元”是否适当。

更正操作

遵循以下指南,确保你的应用包仅包含应用部件清单 (manifest) 中指定的体系结构支持的文件。

  • 如果应用的目标处理器体系结构为非特定处理器类型,则应用包不能包含 x86、x64 或 ARM 二进制文件或图像类型文件。

  • 如果应用的目标处理器体系结构为 ARM 处理器类型,则应用包必须仅包含 ARM 二进制文件或图像类型文件。如果应用包包含 x64 或 x86 二进制文件或图像类型文件,将无法通过这项测试。

应用程序包验证

该测试将验证应用程序包是否符合针对 XAP 程序包的 Windows Phone 8.1 规则。

背景

该测试将验证压缩的 XAP 程序包中存在的大量元素,以确保它们符合 Windows Phone 8.1 的相关规则。

测试详细信息

有关你可能遇到的特定错误消息的列表,请参考了解应用提交错误

更正操作

查看并解决你可能在该测试中遇到的任何错误。

注意  虽然仅对基于 XAP 的应用使用该测试,但最终报告仍会采用通过的结果来反映不基于 XAP 的应用的测试效果。

资源使用测试

WinJS 后台任务测试

WinJS 后台任务测试可确保 JavaScript 应用具有适当的 close 语句,因此应用不消耗电池电量。

背景

具有 JavaScript 后台任务的应用在后台任务中需要调用 Close() 作为最后的语句。不执行此操作的应用可能会使系统无法返回到连接的待机模式,并导致消耗电池电量。

测试详细信息

如果应用没有清单中指定的后台任务文件,该测试将会通过。否则,测试将解析应用包中指定的 JavaScript 后台任务文件,并查找 Close() 语句。如果找到,测试将通过;否则测试将失败。

更正操作

更新后台 JavaScript 代码以正确调用 Close()。

 

 

显示:
© 2015 Microsoft