2011/02/07: a2sd対応したアプリをマーケットで公開するときの注意点
a2sd(アプリをSDカードに保存可能にする機能)対応する方法ですが、ビルドまでに必要な手順は以下の2(3)ステップです。
・ビルドターゲットを2.2にする
・マニフェストファイルでinstallLocationを設定
(↓2.2より以前のOSでも一応インストールできるようにしたい場合。ただし、a2sd以外のSDK8以降の機能は使わないように気をつける)
・android:minSdkVersionは8にせず、任意のバージョンに設定
ただし!!
そのアプリをマーケットで公開したい場合は、もう1つ注意点があります。
・マーケットのデベロッパーコンソールの「公開設定のオプション」で「コピー防止」をオフにする
コピー防止をオンのまま公開すると、インストールはできても「設定>アプリケーション>アプリケーションの管理」から「SDカードに移動」ボタンが無効のままで効果がありません!
Apps on SD Card: The Details
↑「Security and Performance Implications」のところを参照
・ビルドターゲットを2.2にする
・マニフェストファイルでinstallLocationを設定
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="auto"
... />
(↓2.2より以前のOSでも一応インストールできるようにしたい場合。ただし、a2sd以外のSDK8以降の機能は使わないように気をつける)
・android:minSdkVersionは8にせず、任意のバージョンに設定
ただし!!
そのアプリをマーケットで公開したい場合は、もう1つ注意点があります。
・マーケットのデベロッパーコンソールの「公開設定のオプション」で「コピー防止」をオフにする
コピー防止をオンのまま公開すると、インストールはできても「設定>アプリケーション>アプリケーションの管理」から「SDカードに移動」ボタンが無効のままで効果がありません!
Apps on SD Card: The Details
↑「Security and Performance Implications」のところを参照
2009/08/06: 公開時、versionCodeは必ず増えていなければならない
Android Marketでアプリ公開の際、apkファイルをアップロードするとこのようなエラーが場合はversionCodeが前回時と同じもしくは少ないことが原因です。
結論からいくと、
versionCodeは、何回目のアップロードかを表す整数
versionNameは、自分で好きに決めたバージョン名を表す数字
です。なので、アップデートする際は少なくとも前回時よりもversionCodeが大きくなっていなければなりません。
要は、versionCodeはアップデートの旅にインクリメントされていなければならないんですね。知っていれば当たり前、でも、僕はversionCodeはversionNameの整数部と連動していて、メジャーバージョンアップしないかぎりいじらないのかと、馬鹿な考えをしていました・・・。
The new apk's versionCode (1) in AndroidManifest.xml must be higher than the old apk's versionCode (1).
The server could not process your apk. Try again.
結論からいくと、
versionCodeは、何回目のアップロードかを表す整数
versionNameは、自分で好きに決めたバージョン名を表す数字
です。なので、アップデートする際は少なくとも前回時よりもversionCodeが大きくなっていなければなりません。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"として公開スタートしたアプリの次回バージョンアップ時は
android:versionCode="1"
android:versionName="1.0.0"
package="net.karappo.android.myapp">
<manifest xmlns:android="http://schemas.android.com/apk/res/android"ではなく
android:versionCode="1"
android:versionName="1.0.1"
package="net.karappo.android.myapp">
<manifest xmlns:android="http://schemas.android.com/apk/res/android"とします。(もちろん、いきなり1.1.0とかでもOK!)
android:versionCode="2"
android:versionName="1.0.1"
package="net.karappo.android.myapp">
要は、versionCodeはアップデートの旅にインクリメントされていなければならないんですね。知っていれば当たり前、でも、僕はversionCodeはversionNameの整数部と連動していて、メジャーバージョンアップしないかぎりいじらないのかと、馬鹿な考えをしていました・・・。