2013年4月24日水曜日

AndroidManifest.xml 詳細

Manifest File のルート要素です。

  • package

    アプリケーションのパッケージ名を Full Qualified Name で指定します。
    これは以下の用途で利用されます。

    • 基準パッケージ名

      コンポーネントのクラス名など、このパッケージからの相対パス名で記述できます。

    • プロセス名

      アプリケーションが実行するときのデフォルトプロセス名として使用されます。

    • Affinity

      コンポーネントのデフォルト Affinity として使用されます。

  • android:sharedUserId

    他のアプリケーションと共有したいLinuxユーザIDを指定します。
    これによって、他のアプリケーションと同じプロセスでアプリケーションを稼動させることができます。
    これは同じ証明書によって署名されたアプリケーションである必要があります。
    つまり、偶然他のアプリケーションと同じユーザIDを指定していたとしても
    それが別の作者によって署名されたアプリケーションならば両者は同じユーザIDを共有することができません。

  • android:sharedUserLabel

    Human Readable なユーザ名を指定します。
    これは android:sharedUserId を指定した場合のみ有効です。

  • android:versionCode

    アプリケーションのバージョン番号を、整数で指定します。
    この値は、同一のアプリケーションが二つあったとき、そのどちらが新しいかを決定する目的で使用されます。
    値が大きいものほど、新しいと判断されます。

  • android:versionName

    ユーザに見せる目的のバージョン名を指定します。
    例えば、3.2.10a のように。ここには任意の文字列が使えます。

<uses-permission>

Permission を許可するために使います。

  • android:name

    許可したい Permission 名を指定します。
    ここにはシステムが提供する、もしくはユーザが独自に定義した名前を使う必要があります。
    Android はデフォルトで全ての Permission が拒否されています。
    つまり、ここに記述した Permission だけが許可されるという事です。

<permission>

ユーザ独自の Permission を定義します。

  • android:icon

    この Permission を表現するアイコンを指定します。

  • android:label

    この Permission のラベル名称を指定します。この文字列はユーザに見せる目的で使われます。

  • android:name

    この Permission の名称を指定します。
    これが ID となります。
    "com.example.project.PERMITTED_ACTION" のようなフォーマットが一般的です。

  • android:protectionLevel

    この Permission が持つ危険度を指定します。
    "normal" / "dangerous" / "signature" / "signatureOrSystem" が使えます。

<permission-tree>

このアプリケーションで定義する Permission の基準名を指定します。

<permission-group>

Permission グループを定義します。

<instrumentation>

Instrumentation を定義します。
これを使うと、アプリケーションを様々な方式で監視(モニタリング)することができます。

<uses-sdk>

このアプリケーションがどの Android SDK で動作可能なのかを定義します。

  • android:targetSdkVersion

    このアプリケーションがターゲットとしている API Level を整数で指定します。

  • android:maxSdkVersion

    このアプリケーションが動作する最大の API Level を整数で指定します。

<uses-configuration>

このアプリケーションが必要とするハードウェアやソフトウェアの機能を指定します。
例えば、ハードウェアキーボードが必須であるとか、タッチスクリーンでなければ動かないとか、です。

<uses-feature>

このアプリケーションがどのような機能を使っているかを定義します。
例えば、オートフォーカス機能を持ったカメラ機能が必須である、とかです。

<supports-screens>

このアプリケーションが対応する画面の解像度を指定します。

<application>

アプリケーションのメイン要素です。
この子要素に、様々な要素を指定することができます。

  • android:allowClearUserData

    ユーザがこのアプリケーションで使うユーザデータを削除できるかどうかを指定します。
    デフォルトは "true" です。

  • android:allowTaskReparenting

    このアプリケーション内の Activity が Task の親を変更可能かどうかを指定します。
    デフォルトは "false" です。
    これは Activity 単位でも定義できます。

  • android:debuggable

    このアプリケーションがデバッグ可能かどうかを指定します。
    デフォルトは "false" です。

  • android:enabled

    アプリケーション内のコンポーネントを初期化することが可能かどうかを指定します。
    デフォルトは "true" です。

    これはコンポーネント単位でも定義できます。

  • android:hasCode

    アプリケーションが自身のコードを持っているかどうかを指定します。
    デフォルトは "true" です。

    これは、AliasActivity などの特殊な場面でのみ使われる属性です。

  • android:icon

    アプリケーションのデフォルトアイコンを指定します。
    これはコンポーネント単位でも定義できます。

  • android:label

    アプリケーションのラベル名称を指定します。

  • android:manageSpaceActivity

    デバイス上のアプリケーションに使用されるメモリを管理する Activity 名を Full Qualified Name で指定します。
    この Activity は <activity> 要素で定義されている必要があります。

  • android:name

    Application を継承したクラス名を Full Qualified Name で指定します。
    この指定は通常必要ありません。この場合、Android は基本 Application クラスを使います。

  • android:permission

    クライアントがアプリケーションを使うために必要な Permission 名を指定します。
    これは、アプリケーション全体で Permission を指定する簡単な方法です。
    各コンポーネントで個別に Permission を指定することもできます。

  • android:persistent

    アプリケーションが常時稼動するべきかどうかを指定します。
    デフォルトは "false" です。

    アプリケーションは通常このフラグをセットするべきではありません。
    persistence mode は特別なシステムアプリケーションでのみ使うことを意図されたものです。

  • android:process

    このアプリケーションを実行するプロセス名を指定します。
    各コンポーネントで個別に指定することもできます。

    デフォルトでは、Android は最初にコンポーネントを作成するときに
    プロセスを作り、全てのコンポーネントはそのプロセス上で実行されます。
    デフォルトのプロセス名は、<manifest> 要素で定義されたパッケージ名になります。

    この属性を指定することで、他のアプリケーションと同じプロセス上でアプリケーションを動かすことが可能になります。
    ただし、両者のアプリケーションは同じユーザIDを共有していて、同じ作者によって署名されていることが必要です。

    コロン(:)で始まるプロセス名を付けると、このアプリケーションに private な新しいプロセスが作成されます。
    小文字で始めるプロセス名を付けると(これが通常)、グローバルプロセスが作成されます。
    グローバルプロセスは、リソースの使用量を減らすために他のアプリケーションと共有することができます。

  • android:taskAffinity

    このアプリケーションのデフォルト Affinity を指定します。
    デフォルトの Affinity は、<manifest> 要素で定義されたパッケージ名になります。

  • android:theme

    アプリケーションで採用するテーマ名を指定します。

<activity>

Application と同じ要素がいくつかあります。

android:enabled / android:icon / android:label / android:name
android:permission / android:process / android:taskAffinity / android:theme

以上については、Application の方を参照して下さい。

  • android:allowTaskReparenting

    この Activity が、Task の親を変更可能かどうかを指定します。
    詳しい説明は、allowTaskReparenting を読んで下さい。
    この属性は android:launchMode が "standard" または "singleTop" の Activity でのみ有効です。
    ※ それ以外の launchMode では、この Activity は常に自身が親となる

  • android:alwaysRetainTaskState

    Task の状態を保持するかどうかを指定します。
    "true" にすると、Task の状態は常に保持されます。
    "false" の場合、システムは Task を長時間放置した場合にそれを初期状態にリセットすることが許されます。
    このとき、RootActivity 以外の Activity が全てクリアされます。
    デフォルトは "false" です。

    この属性は Task の RootActivity のみで有効です。

  • android:clearTaskOnLaunch

    "true" にすると、ユーザが一瞬でもこの Activity を含む Task から離れると
    次に戻ってきたときには RootActivity も含めて 全ての Activity を Task からクリアし
    最初からやり直しさせます。
    デフォルトは "false" です。

    この属性は Task の RootActivity のみで有効です。 

  • android:configChanges

    ここに指定した設定が変更されたとき、この Activity がそれをハンドリングできるようにします。

    ここに指定されていない設定が変更されると、この Activity はシャットダウンされ、再起動します。
    ここに指定してある設定が変更されると、onConfigurationChanged() が呼ばれ Activity は処理を継続できます。

    以下に設定の種類を挙げます。これらは | で繋ぐことができます。
    例えば、"locale|navigation|orientation" のように指定します。

    意味
    "mcc" 端末の地域コードの変更をキャッチします。
    "mnc" 端末のネットワークコードの変更をキャッチします。
    "locale" ロケールの変更をキャッチします。
    "touchscreen" タッチスクリーンの変更をキャッチします。(通常こんなことは起きません)
    "keyboard" キーボードの種類の変更をキャッチします。例えばユーザが外部キーボードを接続した場合などです。
    "keyboardHidden" キーボードの Accessibility の変更をキャッチします。例えばユーザが端末をスライドさせてキーボードをしまった時などです。
    "navigation" ナビゲーションの種類の変更をキャッチします。(通常こんなことは起きません)
    "orientation" 端末の縦横を反転させたことをキャッチします。
    "fontScale" フォントサイズの変更をキャッチします。

  • android:excludeFromRecents

    "true" にすると、最近実行した Activity のリストに自身が載らなくなります。
    デフォルトは "false" です。

  • android:exported

    この Activity が外部から呼び出されるかどうかを指定します。
    "false" にすると、この Activity は同一アプリケーション内、または同一ユーザIDを持つ
    アプリケーション内のコンポーネントからのみ起動できます。

    属性のデフォルト値は、この Activity が持つ Intent Filter によって変化します。
    もし Activity が Filter を一つも持っていなかったら、この Activity は明示的なクラス名によってのみ
    呼び出されると判断されます。これは、Activity が外部から呼び出されないことを意味します。
    なぜなら、他のアプリケーションはこの Activity のクラス名をおそらく知らないはずだからです。
    この場合、デフォルト値は "false" になります。

    もし一つでも Filter が定義されていれば、Activity は外部から利用されると判断されます。
    この場合、デフォルト値は "true" になります。

    この属性は、この Activity を他のアプリケーションから使用することを制限する唯一の要素ではありません。
    permission 属性を使い、呼び出しの制限を掛けることもできます。

  • android:finishOnTaskLaunch

    この属性を "true" にすると、ユーザが一瞬でも Task を離れるとこの Activity がシャットダウンされます。
    デフォルトは "false" です。

  • android:multiprocess

    "true" にすると、この Activity のインスタンスは呼び出し元のプロセスで作成されます。
    この場合、インスタンスは複数のプロセス上で動く可能性があります。

    デフォルトは "false" です。
    この場合、Activity のインスタンスは常に定義されたプロセスと同一のプロセス上で作成されます。
    従って、全てのインスタンスは同一のプロセス上で動きます。

  • android:noHistory

    "true" にすると、この Activity はユーザ上から見えなくなったときに Task から取り除かれ finish() がコールされます。
    デフォルトは "false" です。

  • android:screenOrientation

    この Activity の方位を指定します。

    "unspecified" これがデフォルトです。方位は特定しません。
    "landscape" 横長の画面です。
    "portrait" 縦長の画面です。
    "user" ユーザが現在設定している方位を使います。
    "sensor" 端末のセンサーによって方位を決定します。
    "nosensor" "unspecified" と同じです。

  • android:stateNotNeeded

    この Activity が、状態を保存しなくても正常に再起動できるかどうかを指定します。
    デフォルトは "false" です。

    通常、Activity はシャットダウンする前に onSaveInstanceState() が呼び出されて値を一時的に保存します。
    このメソッドは、現在の状態を Bundle オブジェクトに格納し
    Activity が再起動されたときに onCreate() メソッドの引数として渡されます。

    この属性を "true" にすると、onSaveInstanceState() は呼び出されず、onCreate() には null が渡されます。
    つまり、常に Activity を最初に起動したときと同じ挙動になります。

  • android:windowSoftInputMode

    ソフトウェアキーボードに関する設定を記述します。

    以下に設定の種類を挙げます。これらは | で繋ぐことができます。

    "stateUnspecified" キーボードの状態について、特に指定はしません。これがデフォルトです。
    "stateUnchanged" キーボードの状態を、前回から変化させません。
    "stateHidden" Activity がアクティブ化されたとき、キーボードを隠します。
    "stateAlwaysHidden" この Activity にフォーカスがある間中、キーボードを表示しません。
    "stateVisible" Activity がアクティブ化されたとき、キーボードを表示します。
    "stateAlwaysVisible" この Activity にフォーカスがある間中、キーボードを表示したままにします。
    "adjustUnspecified" キーボードのサイズについて、特に指定しません。
    "adjustResize" キーボードを表示させるために、Activity をリサイズします。
    "adjustPan" 詳細は不明です。

<intent-filter>

Intent Filter の親要素を定義します。
この中に action, category, data の子要素を定義します。

親要素 : <manifest> / <activity> / <activity-alias> / <service> / <receiver>

android:icon / android:label

  • android:priority

    この Intent Filter によって応答するコンポーネントの、優先度を1〜100で指定します。

<action>

Intent Filter でフィルタリングするアクションを定義します。

親要素 : <intent-filter>

  • android:name

    アクション名を定義します。Intent クラスに定義された定数が使えます。
    "android.intent.action.WEB_SEARCH" のようなものがあります。

<categoty>

Intent Filter でフィルタリングするカテゴリを定義します。

親要素 : <intent-filter>

  • android:name

    カテゴリ名を定義します。Intent クラスに定義された定数が使えます。
    "android.intent.category.LAUNCHER" のようなものがあります。

<data>

Intent Filter でフィルタリングするURIを定義します。
URI は scheme://host:port/path で構成されます。

親要素 : <intent-filter>

  • android:host

    ホスト名を指定します。
    これは android:scheme が定義された場面でのみ有効です。

  • android:mimeType

    MIME Type を指定します。* によるワイルドカードが使えます。

  • android:pathPattern

    パスを指定します(完全一致)。* によるワイルドカードが使えます。

  • android:port

    ポート番号を指定します。 
    これは android:scheme および android:host が定義された場面でのみ有効です。

  • android:scheme

    スキーマを指定します。
    "http" のように、コロンは付けずに指定します。
    この値は必ず一つ以上指定して下さい。そうでないと、他の指定が有効になりません。

<meta-data>

Name - Value 形式の値を定義します。
この値はコンポーネントから使うことができます。

親要素 : <manifest> / <activity> / <activity-alias> / <service> / <receiver>

<activity-alias>

Activity のエイリアス(別名)を定義します。
エイリアス対象の Activity は、同一の Manefest File 内、しかも
この要素より前に定義しておく必要があります。

<service>

サービスを定義します。

<receiver>

Broadcast Receiver を定義します。

<provider>

Content Provider を定義します。

<uses-library>

このアプリケーションで必要な外部ライブラリを定義します。

0 件のコメント:

コメントを投稿