2013年11月1日金曜日

AndroidManifest.xml-01(Manifest.xml書き方)

ソースに関してはある程度はググれば調べられるけど、
マニフェストファイルについては、全然調べられない!!

っていう人を対象に、(自分もそうですが、)

AndroidManifest.xmlについて激基本的なところを説明したいと思います。


■サンプル

<manifest
  android:versioncode="1"
  android:versionname="1.0"
  package="com.example.manifest"
  xmlns:android="http://schemas.android.com/apk/res/android">
  <uses-sdk android:minsdkversion="8" android:targetsdkversion="17">
  <application
    android:allowbackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
    <activity
      android:label="@string/app_name"
      android:name="com.example.manifest.MainActivity">
      <intent-filter>
        <action android:name="android.intent.action.MAIN">
        <category android:name="android.intent.category.LAUNCHER">
      </category></action></intent-filter>
    </activity>
  </application>
</manifest>


上記は
Android4.2のSDKで新規プロジェクトを立ち上げたときの初期のAndroidManifest.xmlです。
これについて説明していきます。


<?xml version="1.0" encoding="utf-8"?>
<manifest
 xmlns:android="http://schemas.android.com/apk/res/android"

この部分は決まった形です。
無心で毎回何も考えずに記述しましょう


  package="com.example.manifest"

ここで指定したパッケージ名がGoglePlayのURLになります。
また、ここで指定するパッケージに初期起動時のActivityクラスを配置するのが個人的には
オススメです。

  android:versionCode="1"
  android:versionName="1.0"

android:versionCodeは整数が必須!!
GooglePlayにアプリを上げる際の管理番号になります。
GooglePlayにあげる場合には必ず、最後にあげた番号よりも
多い数字にしないといけません。

android:versionNameはユーザーがGoglePlayから、みられるバージョン
1.2とか1.0.0.1とかが可能

  <uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

minSdkVersionはアプリをインストールするのに必要な
AndroidAPIレベルの最低値です。
今回は8となっているので、Android 2.2未満の端末だと、
インストールできないことを示しています。

android:targetSdkVersion="17"はそのアプリをどのAndroidに
合わせるかを示しています。Build時に指定するバージョンと違い、
ザックリ言うと見え方をどのバージョンにするかの指定です。
ついでに言うと、このSdkVersionはなくても全然ビルドできます。


  <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

applicationタグ内の説明になります。
この中にアクテビティの設定を記述したりします。

android:allowBackup="true"
クラウドにバックアップすることを許可します。
Googleアカウントに紐づいているアプリを管理するあの機能を使えるっていうとです。
特に設定しなくてもアプリは動きます。

android:icon="@drawable/ic_launcher"
どの画像ファイルをアイコンにするかの設定です。
ここでいうアイコンとは、端末内で確認できるアプリの
iPhoneと違い画像サイズについてはサイズの規定とかとくにありません。(推奨サイズとかはあるかもしれませんが。。。。)

android:label="@string/app_name"
タイトルラベルに記述されるアプリのタイトルです。
ホーム画面で表示されるタイトルにもなります。
また、文字列を直書きでも大丈夫です。

android:theme="@style/AppTheme"

targetSdkVersionが14以上から、使えます。
簡単に言うとWebのCSS見たいなもので、
styleに文字色とか背景とかを設定できます。

android:allowBackup、icon、label、theme
の4つも特に記述しなくても、動くっちゃ動きます。
ただ、アイコンやタイトルぐらいは設定しておいた方がいいとは自分は思います。


    <activity
      android:name="com.example.manifest.MainActivity"
      android:label="@string/app_name" >
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>

android:name="com.example.manifest.MainActivity"
でActivityファイルのパスを指定します。
上で指定したパッケージ内なら".MainActivity"こんな書き方でも大丈夫です。
android:label="@string/app_name"アクティビティ内でのタイトルに表示されます。

      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>

<intent-filter>のこの部分は結構大事で、これがわかると本当にいろいろなことができるようになります。
これがiPhoneアプリとは違うAndroidの醍醐味的なところです。
だがしかし、結構難しいところでもあるので、さっくりと説明しますと、
他のアプリとの連携や他のアプリからの起動などを記述します。
例えば、カメラアプリから写真加工アプリを呼び出すみたいな。。。

で、今回書かれている内容をみると、
<action android:name="android.intent.action.MAIN" />
"android.intent.action.MAIN"で
データの受け渡しなしの初期起動アクティビティになります。
<category android:name="android.intent.category.LAUNCHER" />
こちらを記述することで、初期起動が可能なアクティビティとカテゴライズされます。



すんごい基本的なAndroidManifest.xmlについての説明は
以上になります。

AndroidManifest.xmlについてよくわからずに
いろいろな機能や広告SDKを組み込むとmanifestファイルが混沌して、
わけわかめーなファイルになってしまうので気を付けてください。

1 件のコメント: