minimize

事業拡大のため、新しい仲間を募集しています。
→詳しくはこちら

言語

Android アプリは Java 言語で記述します。

Android フレームワーク自体は、C 言語で作られています。

パッケージ

Android では、一つのアプリケーションを .apk という圧縮ファイル一つで扱います。
ここには、コンパイルされたJavaコード(classファイル)、リソース、データ、など
アプリケーションに必要なものが全て格納されています。
aapt ツールによって、apk ファイルを作成することができます。

アプリケーションの独立性

Android のアプリケーションは、様々な点で独立しています。

プロセス

デフォルトでは、各アプリケーションはそれぞれ独立したLinuxプロセスとして動きます。
Android はアプリケーションが必要になったらプロセスを開始します。
アプリケーションが必要無くなったら、もしくは他のアプリケーションによってシステムリソースが足りなくなったら
プロセスをシャットダウンさせます。

JavaVM

各プロセスは、それぞれ独立したJavaVM上で動きます。
そのため、アプリケーションのコードは他のアプリケーションのコードから完全に切り離されて動きます。

実行ユーザ

デフォルトでは、アプリケーション毎に固有のLinuxユーザIDが割り当てられて実行されます。
さらに適切な権限が設定されている為、アプリケーションのファイルはそのユーザからしか認識できません。

カスタマイズ

もちろん、これらの挙動はデフォルト動作であって、必要に応じてカスタマイズすることができます。
つまり、二つのアプリケーションで同一のLinuxユーザID、同一のJavaVM、同一のLinuxプロセスを
共有することが可能です。

Manifest File

アプリケーションのコンポーネントを定義したファイルです。
このファイルも Android パッケージ(.apk ファイル)にバンドルされます。

ファイル名は AndroidManifest.xml 固定です。

<?xml version="1.0" encoding="utf-8"?>
<manifest . . . >
    <application . . . >
        <activity android:name="com.example.project.FreneticActivity"
                  android:icon="@drawable/small_pic.png"
                  android:label="@string/freneticLabel" 
                  . . .  >
        </activity>
        . . .
    </application>
</manifest>

Intent Filter

Intent オブジェクト(非同期メッセージ)は、対象とするコンポーネントを明示的に指定できます。
この場合、Manifest File によって対象コンポーネントは静的に決まります。

一方、明示的に指定しないこともできます。
この場合、その Intent に応答する上で 最適な コンポーネントが選択されます。

Manifest File でコンポーネントを定義する際、
そのコンポーネントで処理可能な Intent の種類を示すことができます。
こうすることによって、特定の Intent に反応するコンポーネントが出来上がります。

<activity android:name="com.example.project.FreneticActivity"
          android:icon="@drawable/small_pic.png"
          android:label="@string/freneticLabel" 
          . . .  >
    <intent-filter . . . >
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter . . . >
        <action android:name="com.example.project.BOUNCE" />
        <data android:mimeType="image/jpeg" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

この Activity では、二つの Filter を定義しています。

一つ目は、この Activity をアプリケーションのエントリポイントとして機能させるためのものです。
つまり、ランチャでこのアプリケーションを選択したとき、最初にこの Activity が表示されることを意味します。

二つ目は、この Activity を特定のタイプのデータに対して機能させるためのものです。
つまり、この Activity が JPEG 形式の画像を扱えることを意味します。