page.title=公開の準備
@jd:body

<!--
<div id="qv-wrapper">
<div id="qv">

<h2>In this document</h2>

<ol>
<li><a href=""></a></li>
</ol>

</div>
</div>
-->

<p>アプリケーションの公開とは、アプリケーションをテストして適切にパッケージし、Android 搭載の携帯端末のユーザーが利用できる状態にすることです。</p>

<p>アプリケーションを公開して Android 搭載デバイスにインストールするには、いくつかの作業を行ってアプリケーションの準備を整える必要があります。このドキュメントでは、アプリケーションのリリースを成功させるための準備における、重要なチェックポイントを説明しています。
</p>

<p>アプリケーションを Android マーケットに公開する場合は、アプリケーションの具体的な準備要件について <a
href="{@docRoot}tools/publishing/publishing.html#market">Android マーケットでの公開</a> もご覧ください。 </p>

<p>アプリケーションを公開する方法の一般的な情報については、<a href="{@docRoot}tools/publishing/publishing.html">Publishing Your Applications</a> のドキュメントをご覧ください。 </p>

<div class="special">

<p>アプリケーションのリリースを準備する前の作業:</p>

<ol>
<li>アプリケーションを実際のデバイスで徹底的にテストする </li>
<li>アプリケーションへのエンド ユーザー ライセンス契約の追加を検討する</li>
<li>アプリケーションのマニフェストにアイコンとラベルを指定する</li>
<li>ロギングとデバッグを無効にして、データとファイルをクリーンアップする</li>
</ol>

<p>アプリケーションの最終コンパイルを実行する前の作業:</p>

<ol start="5">
<li>アプリケーションでバージョン管理を行う</li>
<li>適切な暗号化キーを取得する</li>
<li>アプリケーションが MapView 要素を使用している場合は、Maps API キーに登録する</li>
</ol>

<p><em>アプリケーションのコンパイル</em></p>
<p>アプリケーションをコンパイルした後の作業:</p>
<ol start="8">
<li>アプリケーションに署名する</li>
<li>コンパイルしたアプリケーションをテストする</li>
</ol>
</div>

<h2 id="releaseready">アプリケーションのリリースを準備する前の作業</h2>

<h3 id="test">1. アプリケーションを実際のデバイスで徹底的にテストする</h3>

<p>アプリケーションをできる限り広範に徹底的にテストすることが重要です。この作業を支援するため、Android では多数のテスト用クラスとツールを用意しています。{@link android.app.Instrumentation Instrumentation} を使用して JUnit およびその他のテスト ケースを実行できます。また、<a href="{@docRoot}tools/help/monkey.html">UI/Application Exerciser Monkey</a> などのテスティング ツールを使用できます。  </p>

<ul>
<li>ユーザーがアプリケーションを正常に実行できるようにするため、アプリケーションが実行されると予想されるタイプの携帯端末の実機を入手してください。実際のデバイスで、実際のネットワーク条件の下でアプリケーションをテストします。アプリケーションを実際のデバイスでテストすることは非常に重要です。これによって、作成したユーザー インターフェース要素のサイズが正しく(特にタッチスクリーン UI の場合)、アプリケーションのパフォーマンスと電池効率が適正であることを確認できるからです。</li>

<li>アプリケーションの対象とするタイプの携帯端末が手に入らない場合は、<code>-dpi</code>、<code>-device</code>、<code>-scale</code>、<code>-netspeed</code>、<code>-netdelay</code>、<code>-cpu-delay</code> などのエミュレータ オプションを使用して、エミュレータの画面、ネットワーク パフォーマンス、その他の属性をモデル化して可能な限り対象デバイスに適応させることができます。このようにして、アプリケーションの UI とパフォーマンスをテストできます。ただし、公開する前にアプリケーションを実際の対象デバイスでテストすることを強く推奨します。 </li>

<li>アプリケーションが <a href="http://www.t-mobileg1.com/">T-Mobile G1</a> デバイスを対象としている場合、UI が画面の向き変更に対応しているか確認してください。 </li>
</ul>

<h3 id="eula">2. アプリケーションへのエンドユーザー ライセンス契約の追加を検討する</h3>

<p>個人、組織、知的財産を保護するため、アプリケーションのエンドユーザー ライセンス契約(EULA)を付加することを推奨します。 

<h3 id="iconlabel">3. アプリケーションのマニフェストにアイコンとラベルを指定する</h3>

<p>アプリケーションのマニフェストに指定するアイコンとラベルは、アプリケーションのアイコンと名前としてユーザーに表示されるため、重要な要素です。アイコンとラベルは、デバイスの [[]ホーム] 画面や、[[]アプリケーションの管理]、[[]マイダウンロード] などに表示されます。また、公開サービスによってアイコンとラベルがユーザーに表示される可能性もあります。 </p>

<p>アイコンとラベルを指定するには、<code>android:icon</code> と <code>android:label</code> 属性をマニフェストの <code>&lt;application&gt;</code> 要素に定義します。 </p>

<p>アイコンのデザインについては、組み込みの Android アプリケーションのスタイルとできるだけ統一感を持たせてください。</p>

<h3 id="logging">4. ロギングとデバッグを無効にして、データとファイルをクリーンアップする</h3>

<p>リリース時にはデバッグ機能を無効にし、デバッグおよびその他の不要なデータ/ファイルをアプリケーション プロジェクトから削除してください。</p>
<ul>
<li><code>android:debuggable="true"</code> 属性をマニフェストの <code>&lt;application&gt;</code> 要素から削除します。</li>
<li>ログ ファイル、バックアップ ファイル、およびその他の不要なファイルをアプリケーション プロジェクトから削除します。</li>
<li>個人的または自分専用のデータがないか確認し、必要に応じて削除します。</li>
<li>ソース コード内に {@link android.util.Log} メソッドへの呼び出しがある場合は、無効にします。</li>
</ul>

<h2 id="finalcompile">アプリケーションの最終コンパイルを実行する前の作業</h2>

<h3 id="versionapp">5. アプリケーションでバージョン管理を行う</h3>

<p>アプリケーションをコンパイルする前に、アプリケーションにバージョン番号を定義しておく必要があります。定義するには、アプリケーションのマニフェスト ファイルの <code>&lt;manifest&gt;</code> 要素の <code>android:versionCode</code> と <code>android:versionName</code> 属性の両方に適切な値を指定します。バージョン番号の設定は、全体的なアプリケーションアップグレードの計画を考慮して、慎重に検討してください。 </p>

<p>これまでにリリースしたバージョンがある場合、最新のアプリケーションのバージョン番号を旧バージョンから増加させる必要があります。アプリケーションのマニフェスト ファイルの <code>&lt;manifest&gt;</code> 要素の <code>android:versionCode</code> と <code>android:versionName</code> 属性の両方を適切な値を使用して増加する必要があります。 </p>

<p>アプリケーションのバージョン情報を定義する方法は、<a href="{@docRoot}tools/publishing/versioning.html">Versioning Your Applications</a>をご覧ください。</p>

<h3 id="cryptokey">6. 適切な暗号化キーを取得する</h3>

<p>ここまで準備作業をすべて読んで実行していれば、アプリケーションはコンパイルされ、署名の準備ができています。.apk の内部では、アプリケーションは適切にバージョン管理されており、上記のように余分なファイルや非公開データは削除されています。 </p>

<p>アプリケーションに署名する前に、適切な非公開キーがあることを確認する必要があります。非公開キーを取得(または生成)する方法については、<a href="{@docRoot}tools/publishing/app-signing.html#cert">適切な非公開キーの取得</a>をご覧ください。</p>

<p>適切な非公開キーを取得(または生成)したら、キーを使用して次の手順を実行します:</p>

<ul>
<li>アプリケーションが MapView 要素を使用している場合は、Maps API キー(以下をご覧ください)に登録します。</li>
<li>以降の準備プロセスで、リリースするアプリケーションに署名します。</li>
</ul>

<h3 id="mapsApiKey">7. アプリケーションが MapView 要素を使用している場合は、Maps API キーに登録する</h3>

<div class="sidebox-wrapper">
<div class="sidebox"><p>
Maps API キーを取得する方法は、<a
href="http://code.google.com/android/add-ons/google-apis/mapkey.html">Maps API キーの取得(英語のみ)</a>
をご覧ください。</p>
</div>
</div>

<p>アプリケーションが Mapview 要素を使用する場合、アプリケーションを Google Maps サービスで登録し、Maps API キーを取得する必要があります。その後、MapView で Google Maps からデータを取得できるようになります。この処理を行うため、Maps サービスに署名証明書の MD5 フィンガープリントを提出します。 </p>

<p>開発中は、SDK ツールが生成したデバッグ キーを登録して一時的な Maps API キーを取得できます。ただし、アプリケーションを公開する前には、非公開キーに基づく新しい Maps API キーで登録する必要があります。 </p>

<p>アプリケーションが MapView 要素を使用する場合、次の点を理解することが重要です:</p>

<ol>
<li>アプリケーションをリリース用にコンパイルする前に、Maps API キーを取得する必要があります。<em></em>このキーを、アプリケーションのレイアウト ファイルにある各 MapView 要素の、<code>android:apiKey</code> という特殊な属性に追加する必要があるからです。MapView オブジェクトをコードから直接インスタンス化している場合は、Maps API キーをコンストラクタのパラメータとして渡す必要があります。
</li>
<li>アプリケーションの MapView 要素が参照する Maps API キーは Google Maps 内で登録され、アプリケーションの署名に使用される証明書に登録される必要があります。これはアプリケーションを公開する際に特に重要です。MapView 要素は、アプリケーションの署名に使用されるリリース証明書に登録されるキーを参照する必要があります。  </li>
<li>SDK ツールが生成したデバッグ証明書を登録して一時的な Maps API キーを取得している場合、リリース証明書を登録して新しい Maps API キーを取得する<em>必要があります</em>。また、MapView 要素を変更して、デバッグ証明書と関連付けられたキーではなく、新しいキーを参照させることも忘れないでください。このようにしないと、MapView 要素には Maps データをダウンロードする許可が与えられません。 </li>
<li>アプリケーションの署名に使用する非公開キーを変更するには、Google Maps サービスから新しい Maps API キーを取得する<em>必要があります</em>。新しい Maps API キーを取得してすべての MapView 要素に適用してください。以前のキーを参照する MapView 要素には、Maps データをダウンロードする許可が与えられません。 </li>
</ol>

<p>署名と非公開キーについては、<a
href="{@docRoot}tools/publishing/app-signing.html">アプリケーションへの署名</a>をご覧ください。</p>


<h2 id="compile">アプリケーションのコンパイル</h2>

<p>前述のセクションで説明したアプリケーションの準備ができたら、アプリケーションをリリース用にコンパイルできます。 </p>

<h2 id="post-compile">アプリケーションをコンパイルした後の作業</h2>

<h3 id="signapp">8. アプリケーションに署名する</h3>

<p>非公開キーを使用してアプリケーションに署名します。アプリケーションに正しく署名することは、非常に重要です。詳細は、<a href="{@docRoot}tools/publishing/app-signing.html">アプリケーションへの署名</a>をご覧ください。 </p>

<h3 id="testapp">9. コンパイルして署名したアプリケーションのテスト</h3>

<p>コンパイルしたアプリケーションをリリースする前に、対象とする携帯端末(および可能ならば対象ネットワーク)上で徹底的にテストする必要があります。特に、UI 部分の MapView 要素がマップ データを正常に受信していることを確認してください。正常に受信していない場合、<a href="#mapsApiKey">Maps API キーに登録する</a>に戻って問題を解決してください。アプリケーションがサーバー側サービスを正しく利用できること、指定データまたは使用データを正しく処理できること、そして認証要件を正常に処理できることも確認してください。  </p>

<p>これらのテストが完了したら、アプリケーションを携帯端末ユーザーに公開する準備が整ったと言えるでしょう。</p>