gradle-android-toolkit+Android Studio (1)

2013-10-19T00:00:00+00:00 Android gradle

普通ならAndroid Studioから「New Project」 -> 「New Module」でAndroidプロジェクトなりモジュールなりどんどん作成していくだけで良いと思うんだけれども、Android公式がサポートしているandroid-toolkitなgradle supportを使ってプロジェクト構成を作った場合なケースに関して検証してみた

構造は

├── app
│   ├── build.gradle
│   └── src
│       └── main
│           ├── AndroidManifest.xml
│           ├── java
│           │   └── sample
│           │       └── test
│           │           └── MainActivity.java
│           └── res
│               ├── drawable
│               │   └── ic_launcher.png
│               ├── layout
│               │   └── main.xml
│               └── values
│                   └── strings.xml
├── local.properties
└── settings.gradle

っていうような構造を作る。

/settings.gradle

include ":app"

な記述をする。アプリプロジェクトなりライブラリプロジェクトなりをincludeすれば良い模様

/app/build.gradle

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath "com.android.tools.build:gradle:0.6.1"
    }
}

apply plugin: "android"

configurations {
    aaRuntime
}

repositories {
    mavenCentral()
}

dependencies {
    compile "com.googlecode.androidannotations:androidannotations-api:2.7.1"
    aaRuntime "com.googlecode.androidannotations:androidannotations:2.7.1"
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.1.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 18
    }

    applicationVariants.all { variant ->
        variant.javaCompile.classpath += configurations.aaRuntime
        variant.javaCompile.options.compilerArgs += [
            "-AandroidManifestFile=" + variant.processResources.manifestFile
        ]
    }
}

な感じで。あとはAndroid Studioにプロジェクトをインポートすれば良い。でそれをやると

っていう感じでappがアプリモジュールプロジェクトと認識される

ちなみにAndroid StudioにAndroidAnnotationsが処理するAPTなのを処理させるには、「File」 -> 「Settings」 -> 「Compiler」 -> 「Annotation Processors」っていう所を有効にしないとイケない模様。ちなみに設定ファイルな.idea/compiler.xml的には

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="CompilerConfiguration">
    <option name="DEFAULT_COMPILER" value="Javac" />
    <resourceExtensions />
    <wildcardResourcePatterns>
      <entry name="!?*.java" />
      <entry name="!?*.form" />
      <entry name="!?*.class" />
      <entry name="!?*.groovy" />
      <entry name="!?*.scala" />
      <entry name="!?*.flex" />
      <entry name="!?*.kt" />
      <entry name="!?*.clj" />
    </wildcardResourcePatterns>
    <!-- ここかと思われる -->
    <annotationProcessing>
      <profile default="true" name="Default" enabled="true">
        <processorPath useClasspath="true" />
      </profile>
    </annotationProcessing>
  </component>
</project>

っていう設定が行われている模様。もしかしたらgradleなideaサポートでなんとか自動化出来るんじゃないのかなと

まだまだ検証すべき所があるのでネタとして続くかも

余談

この記事投稿時のAndroid Studioでダウンロードして動かしたバージョンだとインポートにあたってエラーが発生しアプリモジュールプロジェクトのインポートが正常に行われなかった。これはアップデートする事で解決できたのでインポートを行う前にアップデートをしておいた方が良いかと

gradle-android-toolkitでRobolectricを動かす Robolectricなテストプロジェクトをgradleで動かす