APKファイルの書き出しと配布

Androidのアプリは「.apk」の拡張子を持つAPK形式のファイルで配布します。ここでは作成したアプリを他人に配布する方法について紹介します。配布前にバージョンを指定したり、署名の作業が必要です。

APKファイルに関して

 Androidのアプリは、APK形式で配布します。厳密に言えば、Aptanaでデバッグ実行した時にも、APKファイルが作成され端末やエミュレータに転送されますが、不特定多数にアプリを配布する際には、いくつか気をつける点があります。必要なのは、以下の作業です。

  • バージョン番号を設定する
  • セキュリティ権限を正しく設定する
  • 配布用APKファイルを作成する(署名する)

AndroidManifest.xml について

 Androidアプリの各種設定を行うには、プロジェクトのルートに配置されている「AndroidManifest.xml」(以下マニフェストファイルと略します)を編集することになっています。HTML/JavaScriptで開発を行う場合には、それほど意識しなくても良い項目もありますが、アプリケーションのバージョン情報や、セキュリティの権限の情報などは、設定する必要があります。

 マニフェストファイルの拡張子(".xml")に示されているとおり、XMLファイルなので、関連する項目を探して書き換えるのもそれほど難しくないと思います。また、マニフェストの編集においては、XMLを編集する以外に、独自の設定エディタを使うことができるので、これを利用することで迷うことなく編集ができます。

AndroidManifest.xmlはプロジェクトのルートに配置されている
AndroidManifest.xmlはプロジェクトのルートに配置されている

 さて、では実際に、ここから配布に当たって編集するポイントを紹介します。

バージョン番号の指定

 Androidアプリにつけるバージョン番号は、開発者がユーザーに提示するという意味で設定するだけでなく、自動アップデートの際にも利用されるものなので、設定が必須となっています。

 バージョン番号を設定するために、Aptana(Eclipse)でマニフェストファイル(AndroidMnifest.xml)を開いてみてください。XMLが表示されてしまった場合は、エディタの下部にある[Manifest]というタブをクリックしてみてください。すると、マニフェスト編集用のフォームが表示されます。

ここでバージョン番号を指定するのは「Version code」と「Version name」の項目です。Version codeには、整数でアプリのバージョン番号を指定します。主に自動アップデートの際に利用されるので、バージョンアップを行う度に増加させる必要があります。特に、Android Marketに登録する際には、同じバージョン番号でアプリをアップすることができないので注意します。そして、Version nameの方は、ユーザーに提示するためのもので、分かりやすい文字列を自由に指定できます。

Manifestタブをクリックしたところ
Manifestタブをクリックしたところ

 もし、バージョン番号をXMLで設定する場合には、以下のように、<manifest>タグの「android:versionCode」属性と「android:versionName」属性を設定します。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      android:versionCode="1"
      android:versionName="1.0"
      ...

セキュリティの権限の指定

 Android Makretでアプリをインストールのときに、以下のように警告がでることがありますね。この警告が関係しているのもマニフェストファイルです。jsWaffleを使う際には、はじめから必要となるすべてのセキュリティ権限が付与されています。しかし、Android Marketで配布するのに不必要な権限が表示されては、インストールを躊躇されてしまう可能性もあります。そこで、配布前に、不要なセキュリティ権限を削除しておくと安心してインストールしてもらうことができます。

Android Marketの警告
Android Marketの警告

 そのために、マニフェストを開き、エディタ下部の[Permission]というタブをクリックすると設定することができます。不要な権限を[Remove]ボタンで削除することができます。

[Permission]タグをクリックしたところ
[Permission]タグをクリックしたところ
[Remove]ボタンで削除できる
[Remove]ボタンで削除できる

 では、どの権限がどの機能を司っているのでしょうか。実は、XMLファイルを直接書き換えた方が、分かりやすいかもしれません。日本語でコメントが書かれているので、不要ならば、その行を選択して削除するだけだからです。

...
<!-- バイブ機能を使うとき -->
<uses-permission android:name="android.permission.VIBRATE"/>
<!-- インターネットへのアクセスを使う時 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- GPSを使う時 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- SDカードなどへ書き込みを行う時 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...

その他のパーミッションについては、Androidの開発者サイトをご覧ください。

※マニフェストファイルを編集したら、忘れずに保存(メニューから[File > Save])しておきましょう。

APKのパッケージ名を確認

jsWaffleでは、デフォルトのパッケージ名が「com.example.xxx」の形になっています。
しかし、Android Marketに登録する際には、「com.example」や「com.android」「com.google」から始まるパッケージ名を指定することはできません。

そのため、パッケージ名をオリジナルのドメインに変更する必要があります。以下をご覧ください。

APKファイルに署名する

 マニフェストファイルの編集が終わったら、いよいよ、配布用のAPKファイルを作成します。この作業では、APKファイルに署名して、誰が作ったアプリケーションかを保証する作業を行います。具体的な手順を以下に示します。

(1)メニューからExportをクリック

 Aptana(Eclipse)で配布したいプロジェクトを開いた状態にします。そして、メニューから[File > Export]をクリックします。

Exportをクリック
Exportをクリック

(2)Export Android Application を選択

[Export]ダイアログが表示されたら、[Android]のフォルダにある[Export Android Application]を選択して[Next]ボタンをクリックします。

Export Android Applicationをクリック
Export Android Applicationをクリック

(3)プロジェクト名を確認

選択したプロジェクトが表示されていることを確認して[Next]をクリックします。

プロジェクト名を確認
プロジェクト名を確認

(4)署名用キーファイルの作成

次に、アプリに署名するために、署名用キーファイルを作成します。[Create new keystore]をチェックします。(署名キーは一番初めに一度だけ作れば大丈夫です。既に作ってある場合には、[Use existing keystore]を選んでパスワードを入力し、[Next]ボタンをクリックしてください。)

Create new keystoreをチェック
Create new keystoreをチェック

(5)署名キーファイル作成に必要な情報を入力

署名用キーファイル(キーストア)を作成するために、ファイルの保存場所とパスワードを入力します。

Location ファイルの保存場所
Password パスワード
Confirm パスワード(確認のため Password と同じものを入力)
キーストアの保存場所やパスワードを入力
キーストアの保存場所やパスワードを入力

(6)キーストアにキーを作成する

次に、キーストアの中にキーを作成します。必要な項目を記入して、[Next]ボタンをクリックします。(この手順では1つしかキーを作りませんが、キーストアの中に複数のキーを作ることができる仕組みです。)

Alias キーの名前
Password パスワード
Confirm パスワード(確認用)
Validity (years) キーの有効期間(年で指定)
First and Last Name 開発者の名前
Organizational Unit 部署
Organization 組織名
City or Locality 所在地
必要な項目を入力してキーを作成
必要な項目を入力してキーを作成

(7)保存場所の指定とキーの確認

最後に、署名済みAPKファイルの保存場所の指定します。また、キーストアの情報が表示されるので確認します。そして[Finish]ボタンをクリックすると配布用のAPKファイルが作成されます。

保存場所を指定
保存場所を指定

APKファイルの配布方法について

 このようにして作成したAPKファイルは、Webで自由に配布することができます。ユーザーは、Android端末で配布サイトに行き、APKファイルをダウンロードします。ダウンロード後、APKファイルをタップするとインストールが行われます。そして、作ったアプリを世界中の人に見てもらいと思うなら、Android Marketに登録することができます。

その他

何かコメントがあれば、以下に記入してください。

Comments:
ichi開発バージョンを自分のサーバーからダウンロードできるようにするためには、APKファイルを置くディレクトリーの.htaccessに AddType application/vnd.android.package-archive apk を追加すると簡単です。  (2011/05/17)
にしだなぜか、有料の配布ができなくなりました。日本円を入れて、下の自動的に海外の価格が入力されるボタンを押しても、入力されず、そのまま、保存ボタンを押しても、保存中のまま、進みません。もし、原因がわかればおしえてもらえますか? (2012/05/15)
ミラクルくまちゃん先日Goolgeなら英文で、開発者のアプリ価格設定に関してメールが配信されていました。機械翻訳の為正確には理解できないかもしれませんが、価格設定で自動計算設定できる国が追加されたそうです。その関係があり、価格の設定方法が変わったのかもしれません。http://support.google.com/googleplay/android-developer/bin..一応ヘルプのURLも掲載します。なお、ここはコメント欄で質問場所ではありませんので、このサイトの掲示板をご利用くださいませ。http://d.aoikujira.com/jsWaffle/tasukeai/mbbs.php (2012/05/16)
osanami質問です。デベロッパーコンソールにアプリをアップロードして何日か経つのですがマーケットに公開されません。(公開ボタンは押しています)ヘルプセンターに問い合わせましたが、「アプリに何か不足している」っぽい英語のメッセージが着たのですが、何が不足しているのか分かりません。解決法があれば教えて下さい。 (2012/10/08)