21
19

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.2を使う方法

Last updated at Posted at 2015-04-15

昨年書いたAndroid StudioでAndroidAnnotations3.0.1を使う方法(テンプレート)の情報が古くなったため、改めて最新環境で書き直しました。

はじめに

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

ゴール

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

環境(2015年4月15日現在)

Androidツール

tool version
Android Studio 1.1.0
Android SDK Tools 24.1.2
Android SDK Platform-tools 22
Android SDK Build-tools 22.0.1

ライブラリ

tool version
AndroidAnnotations 3.2(2014/11/09リリース)

手順

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. app/build.gradleの変更

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

app/build.gradle
apply plugin: 'com.android.application'
apply plugin: 'android-apt'

def AAVersion = '3.2'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.teamhiroq.sample.aasample"
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

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

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

apt {
    arguments {
        androidManifestFile variant.outputs[0].processResources.manifestFile
        resourcePackageName android.defaultConfig.applicationId
    }
}

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.+'
    }
}

上記の変更箇所は以下の3点です。
applyとdefの2行追加(コピペ変更なしで使えます)

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

aptとcompileの2行追加(コピペ変更なしで使えます)

dependencies {
    // ・・・省略

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

aptのブロック16行を追加(コピペ変更なしで使えます)

apt {
    arguments {
        androidManifestFile variant.outputs[0].processResources.manifestFile
        resourcePackageName android.defaultConfig.applicationId
    }
}

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.+'
    }
}

3. 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公式サイト
21
19
0

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
21
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?