• 検索結果がありません。

ライブラリーの minSdkVersion を確認する

ドキュメント内 Tech2_Vol6_Chap15_3kou.indd (ページ 45-48)

 アプリケーションをコンパイルする時、minSdkVersionの大小関係の問題につ いては警告してくれません。このため「ライブラリーモジュール」が指定しているminS dkVersionよりも低いバージョンの端末にも、そのアプリケーションをインストールして 実行できてしまいます。もしそのアプリケーションが、その端末のAndroidバージョン には存在しないAPIを利用してれば、アプリケーションはクラッシュしてしまいます。

「ライブラリーモジュール」にActivityを追加してみましょう。追加そのものは通常 のAndroidアプリケーションと同じ手順でできますが、「ライブラリーモジュール」内 のActivityを利用する際に注意しなければならないことがあります。

LibraryActivityをMyLibraryに追加する

 「MyLibrary」に「LibraryActivity」という名前のActivityを追加します。

通常のクラスの追加と同様、「mylibrary」モジュールの「src」→「main」→

「java」→「自分のパッケージ名」の上で右ボタンクリックして、「New」サブメ ニューから「Activity」→「Blank Activity」を選びましょう。

プロジェクトを新規に作成する場合と同様、アクティビティ名やレイアウトのXML ファイルの名前を指定して追加します。ここではアクティビティ名は「LibraryActivi ty」に設定します。それによりレイアウト名は自動的に「activity̲library」になりま す。追加したアクティビティはリスト25のように編集します。

図37:ライブラリーモジュールとminSdkVersionの関係

Activity をライブラリーに含める

15 - 3 -3

ライ ブラ リー 15

LibraryActivityを起動する処理を実装する

 メインのレイアウト(activity̲main.xml)に「button」というidのボタンを1つ追加 してから、「MainActivity.java」をリスト26のように編集し、ボタンをクリックすると

「LibrayActivity」を起動するようにします。

問題がなければコンパイルが通り、アプリケーションを実行できるはずです。ボタン をクリックすると、アクティビティが切り替わり「LibrayActivity」の画面が表示され るはずです。この場合には、同じプロジェクト内のアクティビティの切り替えなので、こ れで問題ありません。しかし、外部ライブラリーに組み込まれたアクティビティを起動し

リスト25LibraryActivity.java(クラスファイルごと追加)

public class LibraryActivity extends ActionBarActivity { public static Intent createIntent(Context context) { return new Intent(context, LibraryActivity.class);

}

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_library);

} }

リスト26MainActivity.javaMainActivityからLibraryActivityを起動する)

package jp.techinstitute.t051.myapplication;

import android.content.Intent;

import android.support.v7.app.ActionBarActivity;

import android.os.Bundle;

import android.view.View;

import jp.techinstitute.t051.mylibrary.LibraryActivity;

public class MainActivity extends ActionBarActivity {

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View v) {

Intent intent = LibraryActivity.createIntent(MainActivity.this);

startActivity(intent);

} });

} }

ようとすると、クラッシュしてしまうでしょう。

AndroidManifest.xmlにactivityを追加する

 アプリケーションがクラッシュしてしまう理由は、呼び出し側の「AndroidManife st.xml」に、呼び出される側のアクティビティが定義されていないからです。

通常のActivityと同ように、ライブラリーモジュールのActivityを利用する場合 も次のように「AndroidManifest.xml」を定義しておく必要があります(リスト

27)。

 Activityだけでなく、ServiceやBroadcastReceiverなど、「AndroidManif est.xml」に定義が必要なコンポーネントを利用する場合は、アプリケーション側の

「AndroidManifest.xml」に定義しなければなりません。こちらもアプリケーションを コンパイルした時点ではエラーとならないので、minSdkVersionと同様に気をつけ なければならない点です。

今まで作ったプログラムをライブラリー化してみましょう。

 例えば10章の第1節で作成したペイントViewなど、今まで作ったプログラムを再 利用できるようにしてみましょう。

 本節では「ライブラリーモジュール」の作り方と、minSdkVersionやActivityを ライブラリーモジュールに含める場合の注意点について学びました。「ライブラリーモ ジュール」にアプリケーションで共通に利用できる機能を実装していくことで、効率的 に開発が行えるようになります。アプリケーションを開発する際、共通で利用できそう なクラスができた場合は「ライブラリーモジュール」に含めることを検討しましょう。

リスト27AndroidManifest.xml(使用するアクティビティを追加)

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.techinstitute.usemylibrary">

<application>

<!-- 省略 -->

<activity android:name="com.techinstitute.mylibrary.LibraryActivity"/>

</application>

</manifest>

まとめ

ドキュメント内 Tech2_Vol6_Chap15_3kou.indd (ページ 45-48)

関連したドキュメント