The Android Developer Challenge is back! Submit your idea before December 2.

リリースの準備

アプリのリリースを準備するにあたっては、アプリのリリース バージョンを設定、ビルド、テストする必要があります。設定タスクは単純で、アプリの最適化に役立つ基本的なコードのクリーンアップやコードの変更などのタスクが含まれます。ビルドプロセスはデバッグのビルドプロセスとほぼ同じで、JDK および Android SDK ツールを使用して実行できます。テストタスクは最終チェックとして行い、アプリが実際の条件下で想定どおりに動作するかどうかを確認します。リリース用アプリを準備する作業を完了すると、署名済みの APK ファイルができあがります。このファイルをユーザーに直接配信するか、または Google Play などのアプリ マーケットプレイスで配信することができます。

このドキュメントでは、リリース用アプリを準備する際に実行すべき主要タスクの概要を説明します。このドキュメントで説明するタスクは、リリース方法やユーザーへの配信方法にかかわらず、すべての Android アプリに適用できます。Google Play でアプリをリリースする場合は、Google Play のリリース チェックリストもご覧ください。

注: このドキュメントで説明しているタスクを実行する前に、アプリの機能、パフォーマンス、安定性が、設定されたリリース条件をすべて満たしていることを確認してください。

準備プロセスが開発プロセスにどのように当てはまるのかを示す

図 1. リリースの準備は必須の開発タスクであり、公開プロセスの第一歩です

概要

アプリをユーザーにリリースするには、ユーザーが Android デバイスにインストールして実行できるリリース用パッケージを作成する必要があります。リリース用パッケージには、デバッグ用の APK ファイルと同じコンポーネント(コンパイル済みのソースコード、リソース、マニフェスト ファイルなど)を含めます。また、同じビルドツールでビルドします。ただし、デバッグ用の APK ファイルと異なり、リリース用の APK ファイルはデベロッパー自身の証明書で署名され、zipalign ツールで最適化されます。

リリース用アプリを準備するために実行する 5 つのタスクを示す

図 2. リリース用アプリを準備するには、5 つの主要タスクを実行します

Android Studio でアプリをビルドする場合は、通常、署名タスクと最適化タスクはシームレスに行われます。たとえば、Android Studio で Gradle ビルドファイルを使用して、アプリを一度にコンパイル、署名、最適化できます。また、コマンドラインでビルドする場合は、Gradle ビルドファイルを設定して同じことができます。Gradle ビルドファイルの使用方法については、ビルドシステムのガイドをご覧ください。

リリース用アプリを準備するには、通常、5 つの主要タスクを実行します(図 2 を参照)。アプリのリリース方法に応じて、主要タスクにはそれぞれ細かいタスクが含まれます。たとえば、Google Play でアプリをリリースする場合、リリース用アプリを設定する際に、マニフェストに特別なフィルタリング ルールを追加することがあります。また、Google Play の公開ガイドラインを満たすには、リリース用の資料を収集する際に、スクリーンショットの準備やプロモーション テキストの作成が必要になります。

通常、図 2 に記載されているタスクは、アプリのデバッグとテストを十分に行った後で実行します。Android SDK には、Android アプリのテストとデバッグに役立つツールがいくつか用意されています。詳しくは、デベロッパー ガイドのデバッグテストのセクションをご覧ください。

資料とリソースを収集する

リリース用アプリの準備を始めるにあたっては、いくつかの補助アイテムを収集する必要があります。たとえば、少なくともアプリおよびアプリアイコンに署名するための暗号鍵は必要です。場合によっては、エンドユーザー使用許諾契約も用意します。

暗号鍵

Android システムでは、インストールされるアプリは、アプリのデベロッパーが所有する証明書(デベロッパーが秘密鍵を保有する証明書)でデジタル署名されている必要があります。Android システムはこの証明書を使用してアプリの作成者を識別し、アプリ間の信頼関係を確立します。署名に使用する証明書は、認証局によって署名されている必要はありません。Android システムでは、自己署名証明書によるアプリの署名が許可されています。証明書の要件については、アプリに署名するをご覧ください。

重要: アプリは、有効期間の終了日が 2033 年 10 月 22 日以降の暗号鍵で署名されている必要があります。

また、アプリがアクセスするサービスや使用するサードパーティのライブラリで、デベロッパーが自分の秘密鍵に基づくキーを使用する必要がある場合は、他のリリースキーも取得する必要があります。

アプリのアイコン

アプリのアイコンが準備されていることと、推奨されるアイコンのガイドラインに準拠していることを確認してください。アプリのアイコンは、ユーザーがデバイスのホーム画面やランチャー ウィンドウでアプリを探すときに役立ちます。アプリのアイコンは、[アプリの管理] や [マイ ダウンロード] などにも表示されます。また、Google Play などの公開サービスでもアイコンがユーザーに表示されます。

注: Google Play でアプリをリリースする場合は、アイコンの高解像度バージョンを作成する必要があります。詳しくは、アプリの画像および映像をご覧ください。

エンドユーザー使用許諾契約

アプリのエンドユーザー使用許諾契約(EULA)を準備することを検討してください。EULA は、許諾元の関係者、組織、知的所有権の保護に役立つため、アプリとともに提供することをおすすめします。

その他の資料

アプリを宣伝するための宣伝素材とマーケティング素材を準備する必要がある場合もあります。たとえば、Google Play でアプリをリリースする場合は、プロモーション テキストの準備と、アプリのスクリーンショットの作成が必要になります。詳しくは、アプリの画像および映像をご覧ください。

リリース用アプリを設定する

補助資料をすべて収集したら、リリース用アプリの設定を開始できます。アプリをリリースする前に、ソースコード、リソース ファイル、アプリのマニフェストに対していくつかの設定変更を加えることをおすすめします。このセクションでは、そうした設定の概要について説明します。ここで説明する設定変更のほとんどは必須ではありませんが、コーディングにおける推奨事項であり、実装することをおすすめします。この種の設定変更は、開発プロセスの中ですでに実施されている場合もあります。

適切なパッケージ名を選択する

アプリの開発から配信までのライフサイクル全体に適したパッケージ名を選択します。アプリをユーザーに配信した後でパッケージ名を変更することはできません。パッケージ名はアプリのマニフェスト ファイルで設定できます。詳しくは、package 属性のドキュメントをご覧ください。

ロギングとデバッグをオフにする

リリース用アプリをビルドする前に、ロギングが停止されていることと、デバッグ オプションが無効になっていることを確認します。ロギングを停止するには、ソースファイル内の Log メソッド呼び出しを削除します。デバッグを無効にするには、マニフェスト ファイルで <application> タグから android:debuggable 属性を削除するか、マニフェスト ファイルで android:debuggable 属性を false に設定します。プロジェクト内に作成されたログファイルや静的テストファイルも削除します。

また、コードに追加した Debug トレース呼び出し(startMethodTracing() および stopMethodTracing() メソッドの呼び出しなど)もすべて削除する必要があります。

重要: 有料コンテンツを表示するために WebView を使用している場合や、JavaScript インターフェースを使用している場合は、アプリのデバッグを必ず無効にしてください。デバッグが有効になっていると、ユーザーは Chrome のデベロッパー ツールを使用してスクリプトの注入とコンテンツの抽出を行えるからです。デバッグを無効にするには、WebView.setWebContentsDebuggingEnabled() メソッドを使用します。

プロジェクト ディレクトリをクリーンアップする

プロジェクトをクリーンアップし、Android プロジェクトの記述に従ったディレクトリ構造になっていることを確認します。プロジェクト内に不明なファイルや孤立したファイルが残っていると、アプリのコンパイルの妨げになることや、アプリの予期しない動作を引き起こすことがあります。最低限、以下のクリーンアップ タスクを実行してください。

  • jni/lib/src/ ディレクトリの内容を確認します。jni/ ディレクトリには、Android NDK に関連するソースファイル(.c.cpp.h.mk ファイルなど)のみが含まれている必要があります。lib/ ディレクトリには、サードパーティのライブラリ ファイルや非公開のライブラリ ファイルのみが含まれている必要があります。これには、ビルド済みの共有ライブラリや静的ライブラリ(.so ファイルなど)も含まれます。src/ ディレクトリには、アプリのソースファイル(.java および ..aidl ファイル)のみが含まれている必要があります。src/ ディレクトリに .jar ファイルが含まれていてはなりません。
  • アプリが使用しない非公開データまたは専有データのファイルがプロジェクト内にないかチェックし、見つかったら削除します。たとえば、プロジェクトの res/ディレクトリを確認し、現在使用していない古いドローアブル ファイル、レイアウト ファイル、値ファイルが見つかったら削除します。
  • lib/ ディレクトリにテスト ライブラリがないかチェックし、アプリで使用されていなければ削除します。
  • assets/ ディレクトリと res/raw/ ディレクトリの内容を確認し、リリース前に更新または削除する必要がある未加工のアセット ファイルや静的ファイルがないかチェックします。

マニフェストおよび Gradle ビルド設定を確認およびアップデートする

次のマニフェスト ファイルとビルドファイルの項目が正しく設定されていることを確認します。

  • <uses-permission> 要素

    アプリに関連する必要な権限のみを指定する必要があります。

  • android:icon および android:label 属性

    これらの属性(<application> 要素内にあります)の値を指定する必要があります。

  • android:versionCode および android:versionName 属性

    これらの属性(<manifest> 要素内にあります)の値を指定することをおすすめします。詳しくは、アプリのバージョニングをご覧ください。

Google Play でアプリをリリースする場合、その他のマニフェストまたはビルドファイルの要素を設定できます。たとえば、<uses-sdk> 要素内にある android:minSdkVersion 属性および android:targetSdkVersion 属性などです。これらの属性やその他の Google Play の設定については、Google Play のフィルタをご覧ください。

互換性の問題に対処する

Android には、アプリをさまざまなデバイスで使用するためのツールや手法がいくつか用意されています。できるだけ多くのユーザーがアプリを利用できるように、以下のタスクの実施を検討してください。

  • 複数の画面設定のサポートを追加する

    複数の画面のサポートに関するおすすめの方法を実施していることを確認します。複数の画面設定をサポートすることにより、Android でサポートされるすべての画面サイズで正しく動作し、適切に表示されるアプリを作成できます。

  • Android タブレット デバイス向けにアプリを最適化する

    アプリが Android 3.0 より古いデバイス向けに設計されている場合は、Android 3.0 向けにアプリを最適化するに記載されているガイドラインとおすすめの方法に従って、アプリが Android 3.0 デバイスに対応できるようにします。

  • サポート ライブラリの使用を検討する

    アプリが Android 3.x 搭載デバイス向けに設計されている場合は、アプリのプロジェクトにサポート ライブラリを追加することにより、アプリが古いバージョンの Android に対応できるようにします。サポート ライブラリが提供する静的サポート ライブラリを Android アプリに追加することにより、古いプラットフォーム バージョンでは利用できない API の使用や、フレームワーク API に含まれていないユーティリティ API の使用が可能になります。

サーバーとサービスの URL をアップデートする

アプリがリモート サーバーまたはサービスにアクセスする場合は、テスト用の URL またはパスではなく、サーバーまたはサービスの本番用 URL またはパスを使用していることを確認します。

ライセンスを実装する(Google Play でリリースする場合)

Google Play で有料アプリをリリースする場合は、Google Play ライセンスのサポートを追加することを検討します。ライセンスを使用すると、現在のユーザーがアプリを購入済みかどうかに基づいてアプリへのアクセスを制御できます。Google Play でアプリをリリースする場合であっても、Google Play ライセンスの使用は任意です。

Google Play ライセンス サービスの詳細と、ライセンスをアプリで使用する方法については、アプリのライセンスをご覧ください。

リリース用アプリをビルドする

アプリの設定が完了したら、アプリをビルドして、署名および最適化されたリリース用 APK ファイルを作成できます。JDK には、APK ファイルに署名するためのツール(Keytool と Jarsigner)が含まれています。Android SDK には、APK ファイルをコンパイルおよび最適化するためのツールが含まれています。Android Studio を使用する場合、またはコマンドラインから Gradle ビルドシステムを使用する場合は、ビルドプロセス全体を自動化できます。Gradle ビルドの設定方法の詳細については、Gradle ビルドの設定をご覧ください。

Android Studio を使用してビルドする

Android Studio と統合された Gradle ビルドシステムを使用することにより、秘密鍵で署名され、最適化されたリリース用 APK ファイルをビルドできます。Android Studio でビルドを設定および実行する方法については、Android Studio からのビルドと実行をご覧ください。

ビルドプロセスは、アプリへの署名に適した証明書と秘密鍵があることを前提としています。適切な証明書と秘密鍵がない場合は、Android Studio で生成できます。署名プロセスの詳細については、アプリに署名するをご覧ください。

外部サーバーおよびリソースを準備する

アプリがリモート サーバーに依存している場合は、サーバーが安全であることと、サーバーが本番用に設定されていることを確認します。これは、アプリにアプリ内課金を実装していて、リモート サーバー上で署名検証ステップを実行する場合、特に重要です。

また、アプリがリモート サーバーまたはリアルタイム サービス(コンテンツ フィードなど)からコンテンツを取得する場合は、最新の本番用コンテンツを提供していることを確認してください。

リリース用アプリをテストする

アプリのリリース バージョンをテストし、実際のデバイスおよびネットワーク条件下でアプリが正常に動作することを確認します。理想としては、最低でも携帯サイズのデバイス 1 台とタブレット サイズのデバイス 1 台でアプリをテストして、ユーザー インターフェース要素が適切なサイズで表示されることと、アプリのパフォーマンスとバッテリー効率が許容範囲内であることを確認します。

テストの開始にあたっては、テストの項目をご覧ください。この記事には、テスト時に考慮する必要がある Android の一般的な状況がまとめられています。テストが完了し、アプリのリリース バージョンが正常に動作することが確認できたら、アプリをユーザーにリリースできます。詳しくは、アプリをユーザーにリリースするをご覧ください。Google Play でアプリを公開する場合は、Google Play のリリース チェックリストをご覧ください。