アプリケーションの開発が完了しました!早速、Android Marketに公開したいと思いますが、その前に、いくつか最終確認をしたいと思います。

第3回 Androidアプリケーションを公開する – Androidで広がる、携帯アプリ開発の世界:ITproを参考に進めました。

AndroidManifest.xmlを見直します。ポイントは以下の3点です。

  1. manifest(ルート)ノードのandroid:versionCode属性
  2. manifest(ルート)ノードのandroid:versionName属性
  3. uses-sdkノードのandroid:minSdkVersion属性


1.のversionCodeについては、

android:versionCode属性は、アプリケーションのバージョン番号を表すもので、整数値で指定する。この数値は、開発者がアプリケーションをアップデートする度に、増やす必要がある。

とありました。微小な調整レベルの場合でも、大きな機能改善などの場合でも、公開しているパッケージをアップデートする際などに、カウントアップさせていくものだと解釈しました。

2.のversionNameについては、

android:versionName属性は、ユーザーにバージョン情報を提示するためのもので、任意の文字列を指定できるが、ユーザーにわかりやすい文字列を指定する必要がある。

こちらは、アプリケーションの概要などに表現される、バージョン情報を示すものだと解釈しました。

3.のminSdkVersionについては、

なお、要素の「android:minSdkVersion」属性では、アプリケーションが最低限必要とするAndroidプラットフォームのバージョンを、開発者が指定できる。

ということなので、TextToSpeech機能を使用している本アプリでは、Android 1.6を示すLevel4を指定しました。

<uses-sdk android:minSdkVersion="4" />

次に、署名つきのアプリケーションとしてパッケージングします。

Eclipseの「Package Explorer」より、該当プロジェクトのコンテキストメニューを開きます。

menu

「Android Tools」から、「Export Signed Application Package…」を選択すると、以下のような画面が開きます。

checks

問題がなければ、次に進みます。

keystore

「Keystore selections」画面が開きます。新規作成しますので、「Create new keystore」を選択して、keystoreの出力先とパスワードを入力して、次に進みます。

creation

「Key Creation」画面が開きますので、必要な情報を入力して、次に進みます。が、一番下の「Country Code」に何を入れてよいか一瞬とまどいました。調べてみたところ、

Country Codeは日本を表す81を設定します。

Androidコンテンツ作成支援 E-LEARNINGより引用。

とありました。電話番号と同じですね。次に進みます。

export

署名つきアプリケーションの出力先を指定して、次へ進めば完了のはずでしたが、なにやらエラーが出てしまいました。

error

key tool エラー:java.io.IOException: Incorrect AVA format

なかなか進みません。。。

調べてみると、どうやら、Key作成のために入力した情報に、カンマが含まれていてはいけないようです。

In my case, I had used a comma inside the Organization name. Removing the comma from this name fixed the problem and allowed me to fully export my signed .apk file.

Android Development Error: incorrect AVA format | MortalPowersより引用。

組織名のところに入力した「, Inc.」を消して、再度試したところうまくいきました!

これでパッケージングが完了したので、試しに、実機で起動してみたところ、今度はAdMobの広告が出ません。どうやら、LOCATIONに該当する広告が見つからないからのようです。

Android Market公開を目指してAndroidアプリを開発する!(広告表示実装編)で、

オプションで、ACCESS_COARSE_LOCATIONとACCESS_FINE_LOCATIONの権限の指定も出来るようですが、「and/or」とあるので、どちらかを指定しても、両方を指定しても良いように読み取れます。どちらもLOCATIONにあわせた広告の表示をするためのもののようですが、COARSEは粗い、FINEは最適なということだと理解しました。

ACCESS_FINE_LOCATIONを設定することにしましたが、表示される頻度が少なくなってしまうのであれば、機会損失にあたります。急遽、ACCESS_COARSE_LOCATIONにすることにしました。

はじめは、相変わらず表示されていなかったのですが、何回か試すうちに表示されるようになりました。

これで、すべての準備はが整いました!後は、Android Marketに登録するのみですが、続きは次回にしたいと思います。

関連記事

Trackback URL

2 Comments

  • BirdBeach

    Livecast様、本記事、大変役に立ちました。この3日間Kyestoreがクリアできず、あなた様の体験された経験で、私も恩恵に預かることが出来ました。カンマと日本のコードのミスがどうしても解りませんでした。有難うございました。感謝いたしおります。

    • asato

      こちらこそ、お役に立てて幸いです。
      プログラミングと一緒で、はまってしまうようなところは、わかってしまうとしょうもないところだったりするんですよね。
      ひょんなところにヒントがあったりしますので、見落とさないようにする感覚みたいなのも磨いていきたいですね。
      コメントありがとうございました。