## page was renamed from alstamber/Gradle #acl alstamber:read,write,revert,delete,admin All:read == 概要 == * ビルド管理ツールというとAntやMavenが有名だが、Gradleという新進気鋭なツールもある。 * 開発管理に興味が出てきたのでAndroidプロジェクトに適用する目的でちょっと触ってみた。 * 発展途上過ぎて実用性にはまだ乏しいので、あくまでメモ。 == Gradleのインストール == * 公式サイトからバイナリをダウンロードしてきて適当なディレクトリに置く。 * Gradleのディレクトリを$GRADLE_HOMEとしたとき、$GRADLE_HOME/binにパスが通っているような状態にする。 * JDK6とAndroid SDKをインストールする。 * JDK7だと動かない。 == Androidプロジェクトの生成 == * コマンドラインから生成する {{{#!highlight android create project -t (APIターゲット) -n (プロジェクト名) -p (パス) -a (メインActivityのクラス名) -k (パッケージ名) }}} == gradle-android-pluginのインストール == * 以下のURLからgit clone {{{ git://github.com/jvoegele/gradle-android-plugin.git }}} == build.gradleの作成 == * プロジェクトのルートディレクトリに置くビルド管理のスクリプト * Groovyで書かれてるらしい、これまたマニアックな。 * 以下動作を確認した例。 {{{ buildscript { repositories { mavenCentral() } dependencies { classpath files('/path/to/gradle-android-plugin/build/libs/gradle-android-plugin-1.2.2-SNAPSHOT.jar') } } apply plugin: 'android' repositories { mavenCentral() } version = "1.1.0" androidSignAndAlign { keyStore = "(キーストアのパス)" keyAlias = "(キーのエイリアス)" keyStorePassword = "(キーストアのパスワード)" keyAliasPassword = "(キーのパスワード)" } processResources { expand (project.properties) } task configureDebug << { jar.classifier = "debug" } task configureRelease << { proguard.enabled = true } }}} == Gradleでビルドしてみる == * 次のコマンドを実行 {{{ gradle assemble }}} * 実機を接続した状態で次のコマンドを実行すると実機へのインストールが出来る。 {{{ gradle androidInstall }}} == IntelliJ IDEAとの連携 == * Android開発といえば一般にIDEとしてeclipseを使うと思うが、ここは私が最近気に入っているIntelliJ IDEAを使うことにする。 * 補完がeclipseに比べても優秀 * 本来は有料だがCommunity EditionというOSS版がある * 機能は有料版に比べて当然制限されているが、Android開発するならこれで十分 * IntelliJに「Gradle GUI」というプラグインをインストールする。 * プラグインのインストールは「Preferences」を開いて左側のメニューから「Plugins」を選択、「Browse repositories...」から検索して左上の左から2番めのボタンをクリック。 * インストールが終わったら「Run」の「Edit Configurations...」から「Groovy」を選択して左上の「+」ボタンをクリック。 * Script pathをbuild.gradleの場所に * Script Parametersをコマンドラインから実行した時にgradleの後ろに書いた文字列に設定する * こうしてIntelliJの「Run」コマンドを使ってGradleのビルドスクリプトを走らせることができるようになる。 == 依存関係の解決 == * プロジェクトが別のjarファイルなどに依存している時、その依存関係を書いておくことができる。 {{{ dependencies { compile files('/path/to/library.jar') } }}} * mavenリポジトリから取ってくることもできる。 {{{ repositories { mavenCentral() } dependencies { compile 'com.google.android:support-v4:r7' } }}} == task == * gradleコマンドの後ろに書く文字列はtaskと呼ばれるものの名前になっている * taskは以下のように定義する {{{ task タスク名 << { タスクの内容 } }}} * taskには依存関係を定義できる {{{ task taskX << { println 'taskX' } task taskY << { println 'taskY' } taskX.dependsOn taskY //taskXはtaskYに依存している }}}