SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Androidアプリケーションを公開するために~署名と配置の方法 ~

Androidアプリケーションにはデジタル署名が必須

 Androidアプリケーションは、デジタル署名を行わないとデバイス(またはエミュレータ)に配置できません。他のモバイルプラットフォームとは異なり、認証機関(CA)からデジタル証明書を購入する必要はありません。自ら生成した証明書で署名できます。

 EclipseでAndroidアプリケーションを開発する場合、F11キーを押してエミュレータに配置するときに、署名が自動的に行われます。これを確認するには、Eclipseの[ウィンドウ]メニューの[設定]を開き、[Android]の項目を展開して、[Build]を選択します(図2を参照)。署名にはデフォルトのデバッグ用キーストア(debug.keystore)が使用されます。

図2 アプリケーションの署名:Eclipseで開発したAndroidアプリケーションは、デフォルトのデバッグ用キーストアを使って署名される
図2 アプリケーションの署名:Eclipseで開発したAndroidアプリケーションは、デフォルトのデバッグ用キーストアを使って署名される

手動での署名

 Androidアプリケーションを発行するには、自らの証明書で署名する必要があります。デバッグ用の証明書で署名したアプリケーションは発行できません。アプリケーションに手動で署名するには、以下の手順に従います。

  • アプリケーションをリリース用の署名モードでコンパイルします。それには、Eclipseでパッケージ名を右クリックし、[Android Tools]の[Export Unsigned Application Package]を選択します(図3を参照)。
    図3 Eclipseの使用:リリース用の署名モードでAndroidアプリケーションをエクスポートする
    図3 Eclipseの使用:リリース用の署名モードでAndroidアプリケーションをエクスポートする
  • 次に、アプリケーションのエクスポート先のディレクトリを選択します(Androidのパッケージの拡張子は.apkです)。処理を簡便にするために、私はAndroidパッケージを「C:\Program Files\Java\jdk1.6.0_10\bin\」にエクスポートしました(図4を参照)。その理由はこの後すぐにわかります(私が使用しているのはJDK 1.6.10です。実際に使用するバージョンによって、フォルダ名は多少異なる可能性があります)。
    図4  ディレクトリパス:.apkファイルをエクスポートする
    図4  ディレクトリパス:.apkファイルをエクスポートする
  • デバッグ用のキーストアを使用してアプリケーションに署名する場合は、Debug.keystoreファイルを「C:\Documents and Settings\<username>\Local Settings\Application Data\Android\」から「C:\Program Files\Java\jdk1.6.0_10\bin\」にコピーします。
  • JDKに付属のjarsigner.exe(場所は「C:\Program Files\Java\jdk1.6.0_10\bin\」)を次のように使用して、指定のキーストアで.apkファイルに署名します。
    jarsigner -verbose -keystore debug.keystore MyKillerApp.apk androiddebugkey
    
  • キーストアのパスワードの入力を求められたときには、デフォルトのパスワードである「android」を指定します。

 jarsigner.exeでは次のオプションを指定できます。

  • -keystore ― 秘密鍵を格納しているキーストアの名前です。
  • -verbose ― 出力する情報を増やすことができます。

 debug.keystoreファイルの別名は「androiddebugkey」です。図5は、デフォルトのキーストアであるdebug.keystoreでアプリケーションに署名したときの例です。

図5 キーストアを使った署名:debug.keystoreを使って.apkファイルに署名する
図5 キーストアを使った署名:debug.keystoreを使って.apkファイルに署名する

 アプリケーションが正しく署名されたかどうかを検証するには、-verifyオプションを付けてjarsigner.exeを実行します。また、-certsオプションを指定して、署名に使用した証明書の詳細を確認することもできます(図6を参照)。

図6 検証と確認:アプリケーションが正しく署名されたことを確認する
図6 検証と確認:アプリケーションが正しく署名されたことを確認する

独自の鍵の生成

 前述のとおり、他のユーザー向けにアプリケーションを発行するためには、自分独自の証明書を使ってアプリケーションに署名する必要があります。独自の証明書を生成するには、同じくJDKに付属のkeytool.exeを使用します。

 独自の証明書を生成するには、次のようなコマンドを実行します。

keytool -genkey -v -keystore learn2develop.keystore -alias learn2develop -keyalg RSA -validity 10000

 上記のコマンドでは、「learn2develop.keystore」という名前の証明書が生成されます。鍵の別名は「learn2develop」、生成に使用するアルゴリズムはRSA、有効期間は10000日(推奨される最少の日数)です。

 このとき、いくつかの情報の入力を求められます(図7を参照)。たとえば、キーストアのパスワードや、秘密鍵のパスワードなどです。Android Market向けにアプリケーションを発行する場合、キーストアの有効期間の終了日が2033年10月22日以降となるように設定する必要があります。

 これら2つのパスワードは秘密にしておき、アプリケーションの署名を行う人以外には漏らさないようにしなくてはなりません。

図7 情報の入力:キーストアを生成するときに、いくつかの情報を入力する必要がある
図7 情報の入力:キーストアを生成するときに、いくつかの情報を入力する必要がある

 learn2develop.keystoreファイルを生成したら、それを使ってアプリケーションに署名できます(図8を参照)。

図8 learn2develop.keystoreファイル:新しく生成したキーストアファイルでアプリケーションに署名する
図8 learn2develop.keystoreファイル:新しく生成したキーストアファイルでアプリケーションに署名する

次のページ
.apkファイルの配置

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Wei-Meng Lee(Wei-Meng Lee)

Microsoft MVP受賞者。Microsoft社の最新テクノロジー実地研修を専門とするDeveloper Learning Solutions社を創設。.NETとワイヤレステクノロジーの開発者、指導者として知られる。国際的なカンファレンスでたびたび講演し、.NET、XML、ワイヤレステクノロジーに関す...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3466 2009/02/02 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー