page.title=アプリケーションのバージョニング @jd:body
バージョン管理のコンポーネントは、アプリケーションのアップグレード及びメンテナンスの計画を立てるのに重要です。
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 が用意されています。バージョン情報を取得するため、アプリケーションは {@link android.content.pm.PackageManager#getPackageInfo(java.lang.String, int)} method of {@link android.content.pm.PackageManager PackageManager}.
を使用します。アプリケーションが最低でも Android プラットフォームの特定のバージョンを必要とする場合、このバージョンを API レベルの ID としてアプリケーションのマニフェスト ファイルに指定できます。このようにすると、互換性のあるバージョンの Android システムを実行しているデバイスにのみアプリケーションをインストールできるようになります。
最小システム バージョンをマニフェストに指定するには、次の属性を使用します:
android:minSdkVersion
- Android プラットフォームのコード バージョンに対応する整数値。
アプリケーションのインストールを準備する際に、システムはこの属性の値を確認して、システム バージョンと比較します。android:minSdkVersion
値がシステム バージョンよりも大きい場合、システムはアプリケーションのインストールを中止します。
この属性をマニフェストに指定しない場合、システムではアプリケーションがすべてのプラットフォーム バージョンと互換性があると仮定します。
アプリケーションに最小プラットフォーム バージョンを指定するには、<uses-sdk>
要素を <manifest>
の子として追加し、android:minSdkVersion
を属性として定義します。
詳細は、Android System Image 1.1 Version Notes もご覧ください。