28
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Android StudioでAndroidAnnotations3.0.1を使う方法(テンプレート)

Last updated at Posted at 2014-05-06

去年から変わっているところもあり改めて最新環境で書き直しました。
Android StudioでAndroidAnnotations3.2を使う方法

はじめに

Android StudioでAndroidAnnotationsを使うための設定方法のまとめです。

ゴール

  • Android StudioのプロジェクトでAndroidAnnotaionsを使えるようにする
  • ActivityをAndroidAnnotationsで処理できるようにする

環境(2014年5月2日現在)

Androidツール

tool version
Android Studio 0.5.7, 0.5.8
Android SDK Tools 22.6.3
Android SDK Platform-tools 19.0.1
Android SDK Build-tools 19.0.3

#2014.5.10 AndroidStudio 0.5.8での動作確認を行いました

ライブラリ

tool version
AndroidAnnotations 3.0.1(2014/01/12リリース)

手順

1. Android Studioでプロジェクト作成

プロジェクト作成については細かいことは省略します。
この後の手順は、以下の設定で作成したものとして進めていきます。

no. 設定項目 入力値
1 Application name AASample
2 Module name app
3 Package name com.teamhiroq.sample.aasample
4 Project location 適当
5 Create Activity checked
6 Activity type BlankActivity
7 Activity name MainActivity
8 Layout name activity_main

2. build.gradleの変更

apt(Annotation Processing Tool)をgradleで使えるようにします。
AASample直下のbuild.gradleに以下の一行を追加します。
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.2'

追加後の全体のbuild.gradleは以下の通りです。

build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.+'
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.2'
    }
}

allprojects {
    repositories {
        mavenCentral()
    }
}

3. app/build.gradleの変更

app/build.gradleを以下のようにします。

app/build.gradle
apply plugin: 'android'
apply plugin: 'android-apt'
def AAVersion = '3.0.1'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.3"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.+'

    apt "org.androidannotations:androidannotations:$AAVersion"
    compile "org.androidannotations:androidannotations-api:$AAVersion"
}

apt {
    arguments {
        androidManifestFile variant.processResources.manifestFile
        resourcePackageName 'com.teamhiroq.sample.aasample' // パッケージ名
    }
}

上記の変更箇所は以下の3点です。
applyとdefの2行追加

apply plugin: 'android-apt'
def AAVersion = '3.0.1'

aptとcompileの2行追加*

dependencies {
    // ・・・省略

    apt "org.androidannotations:androidannotations:$AAVersion"
    compile "org.androidannotations:androidannotations-api:$AAVersion"
}

aptのブロック6行を追加

apt {
    arguments {
        androidManifestFile variant.processResources.manifestFile
        resourcePackageName 'com.teamhiroq.sample.aasample' // パッケージ名
    }
}

※パッケージ名は手順1.の表のno.3で指定したパッケージ名を設定します。

4. Activityにアノテーションを設定

MainActivityに@EActivityアノテーションを設定します。

MainActivity.java
ackage com.teamhiroq.sample.aasample;

import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;

import org.androidannotations.annotations.EActivity;

@EActivity(R.layout.activity_main)
public class MainActivity extends ActionBarActivity {
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

変更箇所は3つです

アノテーションのインポート

MainActivity.java
import org.androidannotations.annotations.EActivity;

アノテーションの設定

MainActivity.java
@EActivity(R.layout.activity_main)
public class MainActivity extends ActionBarActivity {

onCreateの削除
アノテーション@EActivity(R.layout.activity_main)を使うことで、setContentView(R.layout.activity_main)は自動的に行われるため、onCreateを削除しています。

5. AndroidManifest.xmlで参照するActivityクラスを変更する

先ほど設定したAndroidAnnotationsの@EActivityアノテーションによって、aptがMainActivity.javaからMainActivity_.javaを自動的に生成します。
必要な処理自体はすべてMainActivity.javaへ記載すればよいのですが、Androidのフレームワークから呼び出されるときには、自動生成されたクラスが呼び出されるようにする必要があります。
従って、AndroidManifest.xmlを以下のように変更します。

AndroidManifest.xml
        <activity
            android:name="com.teamhiroq.sample.aasample.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.teamhiroq.sample.aasample.MainActivity_"

です。
あとは、Activity内で@OnClickアノテーションや@ViewById等のアノテーションを自由に使ってAndroidAnnotationsを楽しんでみてください。

参考サイト

  1. android-apt公式サイト
  2. AndroidAnnotations公式サイト
  3. 今回作成したサンプル(github)
28
28
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?