Windows Phone 用の Windows アプリ認定キット テスト

Applies to Windows Phone only

Windows アプリ認定キットには、ストアでの公開に向けて Windows Phone 8.1 アプリが準備できているかどうかを確認するための多数のテストが含まれています。

テスト名考えられるテスト結果テストされる認定の要件OS の適用性

パッケージの適合性のテスト

合格

不合格

アプリ マニフェストの適合性

Windows Phone 8.1

アプリケーション カウント

パッケージ サイズのチェック

バンドル マニフェストの検証

Windows のセキュリティ機能のテスト

合格

不合格

バイナリ アナライザー

Windows Phone 8.1

禁止されたファイルのアナライザー

プライベート コードの署名

サポートされている API のテスト

合格

不合格

サポートされている API

Windows Phone 8.1

アプリ マニフェストのリソースのテスト

合格

不合格

アプリ リソースの検証

Windows Phone 8.1

ブランドの検証

デバッグ構成のテスト

合格

不合格

デバッグ構成

Windows Phone 8.1

ファイル エンコードのテスト

合格

不合格

UTF-8 ファイル エンコード

Windows Phone 8.1

アプリ機能のテスト

合格

不合格

特殊な用途の機能

Windows Phone 8.1

Windows ランタイム メタデータ検証

合格

不合格

ExclusiveTo 属性のテスト

Windows Phone 8.1

型の場所のテスト

型名の大文字小文字の区別のテスト

型名の正確性のテスト

一般的なメタデータの正確性のテスト

プロパティのテスト

パッケージ サニティ チェック

合格

不合格

プラットフォーム対応ファイル

Windows Phone 8.1

パッケージの検証

リソース使用率のテスト

合格

不合格

WinJS バックグラウンド タスクのテスト

Windows Phone 8.1

 

Windows Phone 8.1 アプリの認定テスト

パッケージの適合性のテスト

パッケージの内容をテストし、内容が有効かどうかを確認します。

アプリ マニフェストの適合性のテスト

アプリ マニフェストの内容をテストし、内容が有効かどうかを確認します。

背景

アプリ マニフェストは正しい形式である必要があります。

テストの詳細

パッケージ メタデータの要件」の説明に従って、アプリ マニフェストを調べてコンテンツが正しいかどうかを確認します。

  • ファイル拡張子とプロトコル

    アプリは、関連付ける必要があるファイル拡張子を宣言できます。ただし不当に使用されると、アプリは大量のファイル拡張子 (しかも大半が使うことのない拡張子) を宣言することがあり、ユーザー エクスペリエンスが低下する可能性があります。このテストで追加されるチェックにより、アプリに関連付けることができるファイル拡張子の数を制限できます。

  • フレームワークの依存関係規則

    このテストでは、Windows Phone 8.1 アプリと Windows ランタイムとの依存関係が適切かどうかをチェックします。不適切な依存関係がある場合、このテストは失敗します。

    フレームワーク最小 OSWindows Phone 8.1 での動作

    Microsoft.VCLibs.120.00.Phone

    6.3.1

     

    アプリが動作する OS のバージョンと依存関係のあるフレーム ワークとの間に不整合がある場合、テストは失敗します。アプリがフレーム ワーク DLL の Preview 版を参照している場合にも、テストは失敗します。

問題への対応

パッケージ メタデータの要件」で説明されている要件に照らして、アプリ マニフェストを確認します。

Windows のセキュリティ機能のテスト

背景

Windows 既定のセキュリティ保護を変更すると、ユーザーが危険にさらされるリスクが増大します。

テストの詳細

BinScope Binary Analyzer を起動して、アプリのセキュリティをテストします。

BinScope Binary Analyzer テストでは、アプリのバイナリ ファイルを検査して、攻撃や悪用に対してアプリの強度を上げるコーディングとビルドの手法をチェックします。

BinScope Binary Analyzer テストでは、以下のセキュリティ関連の機能が適切に使われているかをチェックします。

BinScope Binary Analyzer テスト

BinScope Binary Analyzer テストでは、アプリのバイナリ ファイルを検査して、攻撃や悪用に対してアプリの強度を上げるコーディングとビルドの手法をチェックします。

BinScope Binary Analyzer テストでは、以下のセキュリティ関連の機能が適切に使われているかをチェックします。

AllowPartiallyTrustedCallersAttribute

Windows アプリ認証キットのエラー メッセージ: APTCACheck Test failed

AllowPartiallyTrustedCallersAttribute (APTCA) 属性を使うと、署名されたアセンブリで、部分的に信頼されたコードから完全に信頼されたコードにアクセスできます。アセンブリに APTCA 属性を適用すると、アセンブリが有効な間は、部分的に信頼された呼び出し元からそのアセンブリにアクセスできます。これにより、セキュリティが侵害されるおそれがあります。

アプリがこのテストに合格しなかった場合の対処方法

プロジェクトに必要で、リスクをよく認識している場合を除いて、厳密な名前の付いたアセンブリでは APTCA 属性を使わないでください。APTCA 属性を使う必要がある場合は、すべての API が適切なコード アクセス セキュリティ要求によって保護されていることを確認します。アセンブリが Windows ストア アプリの一部となっている場合、APTCA の影響はありません。

注釈

このテストは、マネージ コード (C#、.NET など) でのみ実行されます。

/SafeSEH 例外処理の保護

Windows アプリ認証キットのエラー メッセージ: SafeSEHCheck Test failed

例外ハンドラーは、アプリがゼロ除算エラーなどの例外的な状況に陥った場合に実行されます。関数が呼び出されると例外ハンドラーのアドレスがスタックに格納されるため、悪意のあるソフトウェアがスタックを上書きしようとした場合、バッファー オーバーフローによる攻撃を受けやすくなることがあります。

アプリがこのテストに合格しなかった場合の対処方法

アプリをビルドするときに、リンカー コマンドの /SAFESEH オプションを有効にします。Visual Studio のリリース構成では、既定で、このオプションが有効になっています。このオプションが、アプリのすべての実行可能モジュールに対するビルド手順で有効になっていることを確認します。

注釈

このテストは、64 ビット バイナリまたは ARM チップセット バイナリでは実行されません。例外ハンドラーのアドレスがスタックに格納されないためです。

データ実行防止

Windows アプリ認証キットのエラー メッセージ: NXCheck Test failed

このテストでは、データ セグメントに格納されたコードが、アプリで実行されないことを確認します。

アプリがこのテストに合格しなかった場合の対処方法

アプリをビルドするときに、リンカー コマンドの /NXCOMPAT オプションを有効にします。Data Execution Prevention (DEP) をサポートするリンカー バージョンでは、既定で、このオプションが有効になっています。

注釈

DEP 対応の CPU でアプリをテストし、DEP の結果として見つかったエラーをすべて修正することをお勧めします。

アドレス空間レイアウトのランダム化

Windows アプリ認証キットのエラー メッセージ: DBCheck Test failed

ASLR (Address Space Layout randomization) を使うと、実行可能イメージがメモリの予測不可能な位置に読み込まれます。これにより、特定の仮想アドレスにプログラムを読み込むことを想定している悪意のあるソフトウェアは、予測どおりに動作しにくくなります。アプリとアプリで使うすべてのコンポーネントは、ASLR をサポートする必要があります。

アプリがこのテストに合格しなかった場合の対処方法

アプリをビルドするときに、リンカー コマンドの /DYNAMICBASE オプションを有効にします。アプリで使うすべてのモジュールでも、このリンカー オプションを使っていることを確認します。

注釈

通常、ASLR がパフォーマンスに影響を与えることはありません。ただし、場合によっては、32 ビット システムでわずかにパフォーマンスが向上することがあります。多くの画像がさまざまなメモリに読み込まれた非常に密集したシステムでは、パフォーマンスが低下する可能性があります。

このテストは、C# や .NET Framework などのマネージ コードで記述されたアプリでのみ実行されます。

共有されている PE セクションの読み取り/書き込み

Windows アプリ認定キットのエラー メッセージ: SharedSectionsCheck Test failed.

共有されている書き込み可能なセクションがあるバイナリ ファイルは、セキュリティの脅威です。共有する書き込み可能なセクションを含むアプリは、必須の場合を除き、ビルドしないでください。CreateFileMapping または MapViewOfFile を使って適切に保護された共有メモリ オブジェクトを作ります。

アプリがこのテストに合格しなかった場合の対処方法

アプリからすべての共有セクションを削除し、適切なセキュリティ属性を指定した CreateFileMapping または MapViewOfFile を呼び出して共有メモリ オブジェクトを作り、アプリをリビルドします。

注釈

このテストは、C や C++ などのアンマネージ言語で記述されたアプリでのみ実行されます。

AppContainerCheck

Windows アプリ認定キットのエラー メッセージ: AppContainerCheck Test failed.

AppContainerCheck は、実行可能バイナリの移植可能な実行可能ファイル (PE) ヘッダーで appcontainer ビットが設定されているかを検証します。 Windows Phone 8.1 アプリでは、すべての .exe ファイルとすべてのアンマネージ DLL で appcontainer ビットが設定されていないと、正しく動作しません。

アプリがこのテストに合格しなかった場合の対処方法

ネイティブの実行可能ファイルでテストが不合格になった場合は、最新のコンパイラとリンカーを使ってファイルをビルドし、リンカーで /appcontainer フラグを使ってください。

マネージ実行可能ファイルでテストが不合格になった場合は、最新のコンパイラとリンカー (Microsoft Visual Studio など) を使って、Windows Phone 8.1 アプリをビルドしてください。

注釈

このテストは、すべての .exe ファイル、およびアンマネージ DLL で実行されます。

ExecutableImportsCheck

Windows アプリ認定キットのエラー メッセージ: ExecutableImportsCheck Test failed.

移植可能な実行可能ファイル (PE) イメージで、実行可能コード セクションにインポート テーブルが置かれていると、このテストが不合格になります。 この問題は、Visual C++ リンカーの /merge フラグを /merge:.rdata=.text に設定して、PE イメージの .rdata マージを有効にすることが原因で生じることがあります。

アプリがこのテストに合格しなかった場合の対処方法

インポート テーブルを実行可能コード セクションにマージしないでください。Visual C++ リンカーの /merge フラグをチェックして、".rdata" セクションがコード セクションにマージされる設定になっていないことを確認してください。

注釈

このテストは、純粋なマネージ アセンブリを除き、すべてのバイナリ コードで実行されます。

WXCheck

Windows アプリ認定キットのエラー メッセージ: WXCheck Test failed.

このチェックでは、書き込み可能または実行可能としてマップされたページがバイナリに含まれていないことを確認します。 このチェックが不合格になるのは、書き込み可能または実行可能なセクションがバイナリに含まれている場合と、バイナリの SectionAlignmentPAGE_SIZE よりも小さい場合です。

アプリがこのテストに合格しなかった場合の対処方法

書き込み可能または実行可能なセクションがバイナリに含まれていないこと、バイナリの SectionAlignment の値が PAGE_SIZE の値以上であることを確認します。

注釈

このテストは、すべての .exe ファイル、およびネイティブのアンマネージ DLL で実行されます。

書き込み可能または実行可能なセクションは、エディット コンティニュ (/ZI) を有効にしてビルドした実行可能ファイルに含まれることがあります。エディット コンティニュを無効にすると、無効なセクションは含まれなくなります。

PAGE_SIZE は、実行可能ファイルの既定の SectionAlignment です。

禁止されたファイルのアナライザー

Windows アプリ認定キットのエラー メッセージ: Banned File Check test failed.

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 ストア アプリ用 Bing Maps SDK を使います。

Microsoft Advertising SDK でエラーを修正するには、Microsoft Advertising SDK の最新バージョンを使います。

プライベート コードの署名

アプリ パッケージ内にプライベート コードの署名バイナリが存在するかテストします。

背景

プライベート コードの署名ファイルは、セキュリティが侵害された場合、悪用される可能性があるため、プライベートにしておく必要があります。

テストの詳細

アプリ パッケージ内でプライベート署名キーを含むことを示す .pfx または .snk という拡張子を持つファイルについてテストします。

問題への対応

パッケージからプライベート コードの署名キー (.pfx ファイルや .snk ファイルなど) を削除します。

アプリケーション カウントのテスト

アプリ パッケージの内容をテストし、アプリが 1 つだけ存在することを確認します。

背景

ストアに提出するときに Windows Phone 8.1 のアプリ パッケージに含めることができるアプリは、1 つだけです。

問題への対応

アプリ マニフェストでパッケージごとに 1 つのアプリだけを定義していることを確認します。

パッケージ サイズのチェック

アプリ パッケージのサイズをテストして、4 GB を超えていないことを確認します。

背景

Windows Phone 8.1 のアプリ パッケージは、ストアに提出するときにサイズが 4 GB 以下に制限されます。この制限はパッケージに適用され、展開後のコンテンツには適用されないことに注意してください。

問題への対応

アプリ パッケージのサイズを減らして、リリース バージョンが 4 GB という許されたサイズ制限内であることを確認します。

バンドル マニフェストの検証

テストして、バンドル内にメイン アプリ パッケージが 1 つしかなく、アーキテクチャが ARM またはニュートラルであることを確認します。

背景

Windows Phone 8.1 アプリのバンドルでは、ARM またはニュートラル アーキテクチャを対象とするメイン アプリ パッケージを 1 つ含むことが想定されています。バンドルには、最大 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 だけを使っている場合でも、デバッグ用ビルドのアプリはこのテストに合格しません。

エラー メッセージを確認して、アプリで使われている Windows Phone 8.1 アプリ用 API ではないと思われる API を特定します。

アプリ マニフェストのリソースのテスト

アプリ リソースの検証

アプリのマニフェストで宣言されている文字列や画像に誤りがある場合、そのアプリはインストールされない可能性があります。これらのエラーがあるアプリはインストールされません。または、アプリのロゴなどの画像が適切に表示されないことがあります。

テストの詳細

アプリ マニフェストで定義されているリソースを調べて、それらのリソースが存在し、かつ有効であることを確認します。

問題への対応

次の表をガイダンスとして使います。

エラー メッセージコメント

イメージ {imageName} には Scale 修飾子と TargetSize 修飾子が定義されていますが、一度に定義可能な修飾子は 1 つだけです。

さまざまな解像度に合わせて画像をカスタマイズできます。

実際のメッセージでは、{imageName} にエラーの発生した画像の名前が入ります。

各画像で ScaleTargetSize のいずれかが修飾子として定義されていることを確認します。詳しくは、「修飾子を使ってリソースに名前を付ける方法」をご覧ください。

イメージ {imageName} がサイズ制限を超えました。

すべてのアプリ画像が適切なサイズ制限に従っていることを確認します。

実際のメッセージでは、{imageName} にエラーの発生した画像の名前が入ります。

アプリの画像と画像のサイズについて詳しくは、「アプリの画像」をご覧ください。

イメージ {imageName} がパッケージ内に見つかりません。

必要な画像がありません。

実際のメッセージでは、{imageName} に見つからない画像の名前が入ります。

アプリの画像と画像のサイズについて詳しくは、「アプリの画像」をご覧ください。

イメージ {imageName} は有効なイメージ ファイルではありません。

すべてのアプリ画像が適切なファイルの種類の制限に従っていることを確認します。

実際のメッセージでは、{imageName} に無効な画像の名前が入ります。

アプリの画像と画像のサイズについて詳しくは、「アプリの画像」をご覧ください。

イメージ "BadgeLogo" には、ABGR 値 {value} のピクセルが位置 (x,y) にあり、それは無効な値です。ピクセルは白 (##FFFFFF) または透明 (00######) である必要があります。

バッジ ロゴはロック画面でアプリを識別するためにバッジ通知の横に表示される画像です。この画像はモノクロである必要があります (含めることができるのは白または透明のピクセルだけです)。

実際のメッセージでは、{value} に無効な画像の色の値が入ります。

アプリの画像と画像のサイズについて詳しくは、「アプリの画像」をご覧ください。

イメージ "BadgeLogo" には ABGR 値 {value} のピクセルが位置 (x,y) にあり、それはハイコントラストの白いイメージとしては無効です。ピクセルは (##2A2A2A) か、それより暗いか、透明 (00######) である必要があります。

バッジ ロゴはロック画面でアプリを識別するためにバッジ通知の横に表示される画像です。"ハイコントラスト 白" ではバッジ ロゴが白い背景に表示されるため、標準のバッジ ロゴの濃いバージョンを使う必要があります。"ハイコントラスト 白" でバッジ ロゴに含めることができるピクセルは、(##2A2A2A) より濃い色か透明のピクセルだけです。

実際のメッセージでは、{value} に無効な画像の色の値が入ります。

アプリの画像と画像のサイズについて詳しくは、「アプリの画像」をご覧ください。

イメージには少なくとも 1 つの、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 というオプションがサポートされています。このオプションの既定の設定は Off です。

有効にすると、実行時にアプリの言語パック リソースが 1 つの resources.pri にマージされます。

文字列 {string}{number} 文字の最大長制限を超えました。

パッケージ メタデータの要件」をご覧ください。

実際のメッセージでは、{string} が問題の文字列に置き換わり、{number} に最大文字数が入ります。

文字列 {string} の先頭または末尾を空白にすることはできません。

アプリ マニフェストの要素のスキーマでは、先頭および末尾の空白は許可されていません。

実際のメッセージでは、{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) オプションを選び [OK] をクリックします。

アプリ機能のテスト

特殊な用途の機能

背景

特殊な用途の機能は、特殊なシナリオ向けの機能です。会社アカウントだけがこれらの機能を使うことができます。

テストの詳細

アプリが次のいずれかの機能を宣言することを検証します。

  • 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 メソッドの入力パラメーターの型に一致することを確認します。

パッケージ サニティ テスト

プラットフォーム対応ファイル テスト

混在するバイナリをインストールするアプリは、ユーザーのプロセッサ アーキテクチャによってはクラッシュしたり、正しく動作しなかったりする場合があります。

背景

このテストでは、アーキテクチャが競合していないか、アプリ パッケージのバイナリを検証します。アプリ パッケージには、マニフェストに指定されたプロセッサ アーキテクチャで使用できないバイナリを含めることができません。サポートされていないバイナリが含まれると、アプリがクラッシュしたり、アプリのパッケージ サイズが不必要に大きくなったりする可能性があります。

テストの詳細

アプリ パッケージのプロセッサ アーキテクチャ宣言と相互参照される場合に、各ファイルの PE ヘッダー内のビット "bitness" が適切かどうかを検証します。

問題への対応

アプリ マニフェストで指定されたアーキテクチャでサポートされるファイルのみをアプリ パッケージが含むことを確認するために、次のガイドラインに従ってください。

  • アプリのターゲット プロセッサ アーキテクチャがニュートラル プロセッサ タイプの場合、アプリ パッケージは、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() を正しく呼び出します。

 

 

表示:
© 2014 Microsoft