Mais conteúdo relacionado
Semelhante a Android アプリ開発における Gradle ビルドシステム (20)
Android アプリ開発における Gradle ビルドシステム
- 3. 概要
● Gradle と Android アプリ開発
● Gradle や Android Gradle plugin の便利機能
● AAR パッケージの公開
● Gradle プラグインの作り方
- 5. Gradle とは何か
● ビルドシステム
– Maven とか Ant とか sbt とか Rake みたいな
● ビルド設定は Groovy による DSL で記述
● Maven (Ivy) による依存管理が組み込まれている
● Java 界隈で主に使われてる
– Java に限ったビルドシステムではない
– 最近は C/C++/Objective-C のサポートが向上
- 6. Gradle ビルドスクリプトの例
// build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion "20.0.0"
defaultConfig {
applicationId "info.vividcode.android.app.seminar.kyotoandroid"
minSdkVersion 10
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
}
- 7. Gradle の利点と欠点
● Groovy の処理を書ける → 自由度が高い
● プラグインも作りやすい!
● Maven リポジトリが使える
● Groovy に慣れるまで難しい
– DSL として理解できても Groovy コードとして読めな
い
– API ドキュメントを見ても処理の流れがわかりづらい
- 8. Android Studio で Gradle 採用
● 最近ベータ版がリリースされた
● 嫌でも Gradle のことを知る必要がある
● IDE 上でのビルドが Gradle に統合されている
– IDE 上でもコマンドライン上でも同じ仕組みでビルド
– CI がやりやすい
- 9. Gradle による Android アプリのビルド
● Android Gradle plugin というプラグインでサ
ポート
● Android 用ライブラリ → AAR パッケージ
– リソースファイル入り JAR みたいな感じ (便利!!)
Android アプリプロジェクト
or
Android ライブラリプロジェクト
Gradle + Android Gradle plugin
ビルドしたりテストしたり
Android Studio コマンドライン
使う 使う
- 11. Gradle wrapper
● プロジェクト内に置ける Gradle コマンド (?)
● 「gradlew」、「gradlew.bat」、
「gradle/wrapper」
● Wrapper の使用が推奨されている
– Gradle がインストールされていない環境でも簡単に
Gradle タスクを実行できる
– Gradle のバージョンを揃えられる
http://www.gradle.org/docs/current/userguide/gradle_wrapper.html
- 13. Android SDK の Maven リポジトリ
● Support library や Google Play Services の
Maven リポジトリ
dependencies {
compile 'com.android.support:appcompat-v7:20.0.0'
}
- 14. Build Variants や Manifest Placeholder
● デバッグ時だけ機能を変化させるとかできる
● Build Variants : Build Types と Product
Flavors の組
– Build types : Release build, debug build, など
– Product Flavors : 同じプロジェクトから複数アプリ
● AndroidManifest.xml 中の文字列を
build.gradle 側で指定できる
– http://ninjinkun.hatenablog.com/entry/2014
/08/18/102849
http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
- 15. buildTypes {
release { buildConfigField "boolean", "XXX_DEBUG", "false" }
debug { buildConfigField "boolean", "XXX_DEBUG", "true" }
}
BuildConfig のプロパティをビルド時に
決定
● ビルドタイプに応じて実行時に動作を変化させる
● 使いすぎると混乱のもとだけど
- 18. AAR パッケージ
● Android ライブラリプロジェクトのバイナリディスト
リビューション
● classes.jar や AndroidManifest.xml やリソース
ファイルなどが含まれる
● リソースファイルの名前衝突には気を付ける必要
がある (?)
● AAR は JAR と同じく Maven リポジトリに置ける
http://tools.android.com/tech-docs/new-build-system/aar-format
- 20. 例: ファイルシステム上へのデプロイ
apply plugin: 'com.android.library'
// … Android ライブラリプロジェクトの設定いろいろ …
apply plugin: 'maven'
version = "1.0-SNAPSHOT"
group = "org.example.android.sugoi.project"
uploadArchives {
repositories.mavenDeployer {
repository(url: "file:test-repo")
pom.artifactId = 'sugoi-library'
pom.project {
name 'Sugoi library'
packaging 'aar'
description 'This is Sugoi library'
url 'http://sugoi.android.example.org/'
}
}
}
● gradle uploadArchives
- 21. 一般的な Maven リポジトリ
● Maven Central へのデプロイはそこそこ大変
– 手作業でやるべきことがいろいろあるし時間がかかる
– 参考:
http://vividcode.hatenablog.com/entry/howto/p
ublish-aar-package-to-maven-central-with-grad
le
● 最近だと Bintray (jCenter) が良さそう?
– Android Studio のプロジェクトのひな形でも Maven
Central ではなく jCenter を参照するようになってい
る
- 24. プロジェクト固有の簡単なプラグイン
● Plugin<Project> インターフェイスを実装したクラ
ス
● ビルドスクリプト中に定義して apply
apply plugin: GreetingPlugin
class GreetingPlugin implements Plugin<Project> {
void apply(Project project) {
project.task('hello') << {
println "Hello from the GreetingPlugin"
}
}
}
Plugin<T> : http://www.gradle.org/docs/current/javadoc/org/gradle/api/Plugin.html
(http://www.gradle.org/docs/current/userguide/custom_plugins.html より)
Plugin<T> : http://www.gradle.org/docs/current/javadoc/org/gradle/api/Plugin.html
- 26. プラグインを使う側
● buildscript の依存を定義しておいて apply
<build.gradle ファイル>
buildscript {
repositories {
maven {
jcenter()
}
}
dependencies {
classpath group: 'your.package', name: 'xxxxplugin', version: '1.0'
}
}
apply plugin: 'xxxx'
- 27. Android Gradle plugin と連携する
● アプリ開発では Android Gradle plugin と連携
して動作させたいこともある
● ドキュメントは揃ってないので Android Gradle
plugin の実装を読むしかない (と思う)
- 28. 例: Android SDK のセットアップ
● ビルドスクリプト内で Android SDK の準備をする
Gradle plugin。
– nobuoka/vc-gradle-android-sdk-manager ←
作った
– cookpad/gradle-android-sdk-manager
– JakeWharton/sdk-manager-plugin
● CI だけでなく手元で開発する際にも便利。
- 30. build.gradle が UTF-8 で解釈される
● Gradle 1.x 系では、build.gradle の文字エン
コーディングはデフォルトエンコーディングで解釈
● UTF-8 で書かれた build.gradle を日本語
Windows 上の Gradle で解釈させると…!!
● Gradle 2.0 では常に UTF-8 として解釈される!
– http://vcs.hatenablog.com/entry/20131227/
1388097109
- 31. おわりに
● Gradle + Android Gradle plugin でビルド環境
のカスタマイズがしやすくなった
● AAR フォーマットができてライブラリ公開がやりや
すくなった
● 便利プラグインや便利ライブラリを作って公開した
りしてコミュニティを盛り上げていきたいですね!