バージョン管理のコンポーネントは、アプリケーションのアップグレード及びメンテナンスの計画を立てるのに重要です。
Android システム自体は、アップグレードや互換性の制約の実施などのために、アプリケーション バージョン情報をアプリケーションに対して確認することはありません。代わりに、アプリケーションにおけるバージョン制約はユーザーまたはアプリケーション自体によって完全に実施されます。
Android システムが確認を行うのは、アプリケーションによってマニフェストの minSdkVersion 属性に指定されたシステム バージョン互換性です。この属性によりアプリケーションは互換性を持つ最小システム API を指定できます。詳細は、最小システム API バージョンの指定をご覧ください。
アプリケーションのバージョン情報を定義するには、アプリケーションのマニフェスト ファイルで属性を設定します。2 つの属性を使用でき、常にこの両方に値を定義することが推奨されています:
android:versionCode - アプリケーション コードのバージョンを他のバージョンと相対的に示す整数値。
この値は整数なので、その他のアプリケーションはプログラムでバージョンの値を評価して関係を確認できます(たとえば、このバージョンがアップグレードかダウングレードなのか、など)。任意の整数値を設定できますが、アプリケーションの後続のリリースでは、現在より大きな値を使用するようにしてください。システムではこのバージョン管理の基準を強制しませんが、後継リリースの値を増加させることは標準的です。
通常、アプリケーションの最初のバージョンの versionCode を 1 に設定してリリースし、その後は各リリースについて、リリースがメジャー リリースであってもマイナー リリースであっても、値を単調増加させます。これは、android:versionCode の値は、ユーザーに表示されるアプリケーション リリース バージョンと類似している必要性はないことを意味します。以下の android:versionName をご覧ください。アプリケーションと公開サービスでは、このバージョンの値はユーザーには表示されません。
android:versionName - アプリケーション コードのリリース バージョンを表す文字列値で、ユーザーに表示される値です。
値は文字列なので、アプリケーション バージョンを「<major>.<minor>.<point>」といった文字列や、その他のタイプの絶対的または相対的バージョン ID として記述できます。
android:versionCode の場合と同様に、システムではこの値をアプリケーションでユーザーに表示する以外の目的で内部的に利用することはありません。公開サービスでは、ユーザーに表示するために android:versionName 値を取り出す可能性もあります。
これらのバージョン属性の両方をマニフェスト ファイルの <manifest> 要素で定義します。
ここに、<manifest> 要素の android:versionCode と android:versionName 属性を示すマニフェストの例を示します。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.package.name"
android:versionCode="2"
android:versionName="1.1">
<application android:icon="@drawable/icon" android:label="@string/app_name">
...
</application>
</manifest>
この例では、android:versionCode 値は現在の .apk がこのアプリケーション コードの 2 番目のリリースを含んでいることを表し、これは android:codeName 文字列が示すようにマイナー後継リリースであることを示します。
Android フレームワークには、アプリケーションがシステムに別のアプリケーションのバージョン情報を問い合わせる API が用意されています。バージョン情報を取得するため、アプリケーションは getPackageInfo(java.lang.String, int)
method of PackageManager.
アプリケーションが最低でも Android プラットフォームの特定のバージョンを必要とする場合、このバージョンを API レベルの ID としてアプリケーションのマニフェスト ファイルに指定できます。このようにすると、互換性のあるバージョンの Android システムを実行しているデバイスにのみアプリケーションをインストールできるようになります。
最小システム バージョンをマニフェストに指定するには、次の属性を使用します:
android:minSdkVersion - Android プラットフォームのコード バージョンに対応する整数値。
アプリケーションのインストールを準備する際に、システムはこの属性の値を確認して、システム バージョンと比較します。android:minSdkVersion 値がシステム バージョンよりも大きい場合、システムはアプリケーションのインストールを中止します。
この属性をマニフェストに指定しない場合、システムではアプリケーションがすべてのプラットフォーム バージョンと互換性があると仮定します。
アプリケーションに最小プラットフォーム バージョンを指定するには、<uses-sdk> 要素を <manifest> の子として追加し、android:minSdkVersion を属性として定義します。
詳細は、Android System Image 1.1 Version Notes もご覧ください。