Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
怖くない
GRADLE設定
とBAZEL
嶋田達哉(@USAGANIKKI)
目次
・自己紹介
gradle
• gradleとは
• ビルドについて
• とりあえずしておくといい設定
• buildTypeを使った署名
• productFlavorsを使った設定
Bazel
• Bazelのプロジェクト構成
• Ba...
はじめまして
• 名前
嶋田達哉(@usaganikki)
ネット上では「うさがに」
• ブログ
うさがにっき(http://tiro105.hateblo.jp/)
• 生息地
福井県➡︎富山県➡︎東京
• 会社
SI屋から転々としてリクルー...
DROIDKAIGIで講演するきっかけ
2015/11某日・・・
どうせ受からんやろうし応募してみたろー(ポチー
時は過ぎ、2015/12初頭・・・
あ
り
が
と
う
ご
ざ
い
ま
す
!
!
!
!
!
!
!
GRADLE
Gradleのコア機能とは・・・
• 定型的に繰り返し行う作業を実行化するための仕組み
• 自動化された処理を実行するための部品
ビルドが超得意だけど、ビルド以外でも
使えるんですよ!!!
ビルド方法
初期化
スクリプト
init.gradle
設定
スクリプト
setting.gradle
ビルド
スクリプト
build.gradle
スクリプトファイル
プロパティ
ファイル
gradle.property
環境変数/
コマンド...
ANDROIDプロジェクトでは・・・
buildscript {
repositories {
jcenter()
}
…
}
allprojects {
repositories {
jcenter()
}
}
task clean(type...
とりあえずしておくと幸せになれる設定
とりあえずしておくと幸せになれる設定
gradle.properties
# deamonで起動
org.gradle.daemon=true
# java memory size設定
# Default value: -Xmx10248m -...
BUILDTYPEを使った署名
signingConfigs {
releaseConfig {
keyAlias ’demo'
keyPassword ’password'
storeFile file(’demo.keystore')
st...
BUILDSCRIPTを使った署名
android {
// ...
// signingConfigs
apply from: 'signingConfigs/debug.gradle', to: android
apply from: 's...
PRODUCTFLAVORSを使った設定
android {
…
productFlavors {
free {
applicationId 'com.example.app.free'
}
pro {
applicationId 'com.e...
BUILDTYPEとPRODUCTFLAVORS
• buildTypeとproductFlavorsは同時に設定することができ
る
・・・が同じ名前は設定できない
• 例えば・・・
productFlavors debug statings ...
BUILDTYPEとPRODUCTFLAVORS
• AndroidStudioではBuild Variantsメニューから選択
BAZEL
• Googleが社内で使用していたビルドツールを
オープンソース版として開発をしている
• 最近Beta版が公開され、Androidのビルドが可能に
• 2016年12月以降のStable版ではAndroid Studioとの統合...
ところで・・・
読みましたか?
(
も
う
喋
る
こ
と
)
な
い
じ
ゃ
ん
・
・
・
みんなも読もう!
https://techbooster.booth.pm/items/178226
おしまい!!!!
BAZELの構成
WORKSPACE
• WORKSPACEファイルが配置されたところがworkspaceの
トップディレクトリになる
• ライブラリの外部参照の依存関係の記述
BUILD
• ソースコードの配置やプロジェクトの依存関係
• ラ...
BAZELのJAVAプロジェクトビルド
├── BUILD
├── WORKSPACE
└── src
└── main
└── java
└── com
└── example
├── Greeting.java
└── ProjectRun...
BAZELのJAVAプロジェクトビルド
$ cat BUILD
java_binary(
name = "my-runner",
srcs = glob(["**/*.java"]),
main_class = "com.example.Pro...
BAZELのJAVAプロジェクトビルド
$ bazel build :my-runner
INFO: Found 1 target...
Target //:my-runner up-to-date:
bazel-bin/my-runner.j...
BAZELのANDROIDプロジェクトビルド
公式のサンプルは非常に複雑なため、@tomorrowkeyさんのサ
ンプルを使わせていただきます!!
https://github.com/tomorrowkey/HelloBazel
@tomor...
BAZELのANDROIDプロジェクトビルド
├── BUILD
├── HelloBazel
│ └── app
│ ├── proguard-rules.pro
│ └── src
...
│ └── main
│ ├── AndroidM...
BAZELのANDROIDプロジェクトビルド
$ cat WORKSPACE
android_sdk_repository(
name="androidsdk",
path="/Users/01011818/Library/Android/sd...
BAZELのANDROIDプロジェクトビルド
$ cat BUILD
android_binary (
name = "app",
srcs = glob(["HelloBazel/app/src/main/java/**/*.java"]),...
BAZELのANDROIDプロジェクトビルド
$ bazel build :app
INFO: Found 1 target...
INFO: From Generating unsigned apk:
THIS TOOL IS DEPRECA...
BAZELのANDROIDプロジェクトビルド
• WORKSPACE内にmaven_jarを追加することで
mavenリポジトリを参照することも可能
• 自分で作ったaarライブラリを参照することも可能
• 思ったより早くなかった!!
BAZELの今後
怖くないGradle設定とBazel
Upcoming SlideShare
Loading in …5
×

怖くないGradle設定とBazel

9,891 views

Published on

DroidKaigi2016の資料です

Published in: Engineering
  • Be the first to comment

怖くないGradle設定とBazel

  1. 1. 怖くない GRADLE設定 とBAZEL 嶋田達哉(@USAGANIKKI)
  2. 2. 目次 ・自己紹介 gradle • gradleとは • ビルドについて • とりあえずしておくといい設定 • buildTypeを使った署名 • productFlavorsを使った設定 Bazel • Bazelのプロジェクト構成 • Bazelのjavaプロジェクトビルド • Bazelのandroidプロジェクトビルド • Bazelの今後
  3. 3. はじめまして • 名前 嶋田達哉(@usaganikki) ネット上では「うさがに」 • ブログ うさがにっき(http://tiro105.hateblo.jp/) • 生息地 福井県➡︎富山県➡︎東京 • 会社 SI屋から転々としてリクルート住まいカンパニーに • 今やってること Android, iOS, AWS, ARとかとか
  4. 4. DROIDKAIGIで講演するきっかけ 2015/11某日・・・ どうせ受からんやろうし応募してみたろー(ポチー
  5. 5. 時は過ぎ、2015/12初頭・・・
  6. 6. あ り が と う ご ざ い ま す ! ! ! ! ! ! !
  7. 7. GRADLE Gradleのコア機能とは・・・ • 定型的に繰り返し行う作業を実行化するための仕組み • 自動化された処理を実行するための部品 ビルドが超得意だけど、ビルド以外でも 使えるんですよ!!!
  8. 8. ビルド方法 初期化 スクリプト init.gradle 設定 スクリプト setting.gradle ビルド スクリプト build.gradle スクリプトファイル プロパティ ファイル gradle.property 環境変数/ コマンドライン引数 src ビルドを実行
  9. 9. ANDROIDプロジェクトでは・・・ buildscript { repositories { jcenter() } … } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } apply plugin: 'com.android.application’ android { … } dependencies { … }
  10. 10. とりあえずしておくと幸せになれる設定
  11. 11. とりあえずしておくと幸せになれる設定 gradle.properties # deamonで起動 org.gradle.daemon=true # java memory size設定 # Default value: -Xmx10248m -XX:MaxPermSize=256m org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m - XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 # 並列処理モード(何か実行に条件があるらしい) org.gradle.parallel=true # ondeamandモード 大規模プロジェクトで有効 org.gradle.configureondemand=true
  12. 12. BUILDTYPEを使った署名 signingConfigs { releaseConfig { keyAlias ’demo' keyPassword ’password' storeFile file(’demo.keystore') storePassword ’keystore' } } buildTypes { release { signingConfig signingConfigs.releaseConfig } }
  13. 13. BUILDSCRIPTを使った署名 android { // ... // signingConfigs apply from: 'signingConfigs/debug.gradle', to: android apply from: 'signingConfigs/release.gradle', to: android buildTypes { debug { signingConfig signingConfigs.debug } release { signingConfig signingConfigs.release } } }
  14. 14. PRODUCTFLAVORSを使った設定 android { … productFlavors { free { applicationId 'com.example.app.free' } pro { applicationId 'com.example.app.pro' } } }
  15. 15. BUILDTYPEとPRODUCTFLAVORS • buildTypeとproductFlavorsは同時に設定することができ る ・・・が同じ名前は設定できない • 例えば・・・ productFlavors debug statings release free FreeDebug FreeStating FreeRelease pro ProDebug ProStating ProRelease
  16. 16. BUILDTYPEとPRODUCTFLAVORS • AndroidStudioではBuild Variantsメニューから選択
  17. 17. BAZEL • Googleが社内で使用していたビルドツールを オープンソース版として開発をしている • 最近Beta版が公開され、Androidのビルドが可能に • 2016年12月以降のStable版ではAndroid Studioとの統合という計画 • gradleより構造的に記述することができ、高速らしい 12月からよろしくね!!!!!(予定)
  18. 18. ところで・・・ 読みましたか?
  19. 19. ( も う 喋 る こ と ) な い じ ゃ ん ・ ・ ・
  20. 20. みんなも読もう! https://techbooster.booth.pm/items/178226
  21. 21. おしまい!!!!
  22. 22. BAZELの構成 WORKSPACE • WORKSPACEファイルが配置されたところがworkspaceの トップディレクトリになる • ライブラリの外部参照の依存関係の記述 BUILD • ソースコードの配置やプロジェクトの依存関係 • ライブラリの依存
  23. 23. BAZELのJAVAプロジェクトビルド ├── BUILD ├── WORKSPACE └── src └── main └── java └── com └── example ├── Greeting.java └── ProjectRunner.java
  24. 24. BAZELのJAVAプロジェクトビルド $ cat BUILD java_binary( name = "my-runner", srcs = glob(["**/*.java"]), main_class = "com.example.ProjectRunner", ) BUILDファイルで使えるFunction http://bazel.io/docs/be/functions.html#glob
  25. 25. BAZELのJAVAプロジェクトビルド $ bazel build :my-runner INFO: Found 1 target... Target //:my-runner up-to-date: bazel-bin/my-runner.jar bazel-bin/my-runner INFO: Elapsed time: 15.839s, Critical Path: 4.91s $ bazel-bin/my-runner Hi!
  26. 26. BAZELのANDROIDプロジェクトビルド 公式のサンプルは非常に複雑なため、@tomorrowkeyさんのサ ンプルを使わせていただきます!! https://github.com/tomorrowkey/HelloBazel @tomorrowkeyさんありがとうございます!!
  27. 27. BAZELのANDROIDプロジェクトビルド ├── BUILD ├── HelloBazel │ └── app │ ├── proguard-rules.pro │ └── src ... │ └── main │ ├── AndroidManifest.xml │ ├── java │ │ └── jp │ │ └── tomorrowkey │ │ └── android │ │ └── hellobazel │ │ └── MainActivity.java │ └── res ... └── WORKSPACE
  28. 28. BAZELのANDROIDプロジェクトビルド $ cat WORKSPACE android_sdk_repository( name="androidsdk", path="/Users/01011818/Library/Android/sdk", api_level = 23, build_tools_version="23.0.2" )
  29. 29. BAZELのANDROIDプロジェクトビルド $ cat BUILD android_binary ( name = "app", srcs = glob(["HelloBazel/app/src/main/java/**/*.java"]), custom_package = "jp.tomorrowkey.android.hellobazel", manifest = "HelloBazel/app/src/main/AndroidManifest.xml", resource_files = glob(["HelloBazel/app/src/main/res/**"]), deps = [ "@androidsdk//:appcompat_v4", "@androidsdk//:appcompat_v7", "@androidsdk//:appcompat_v7_import", ], )
  30. 30. BAZELのANDROIDプロジェクトビルド $ bazel build :app INFO: Found 1 target... INFO: From Generating unsigned apk: THIS TOOL IS DEPRECATED. See --help for more information. INFO: From Generating signed apk: THIS TOOL IS DEPRECATED. See --help for more information. Target //:app up-to-date: bazel-bin/app_deploy.jar bazel-bin/app_unsigned.apk bazel-bin/app.apk INFO: Elapsed time: 33.836s, Critical Path: 30.55s $ bazel mobile-install :app で端末にinstallもできる
  31. 31. BAZELのANDROIDプロジェクトビルド • WORKSPACE内にmaven_jarを追加することで mavenリポジトリを参照することも可能 • 自分で作ったaarライブラリを参照することも可能 • 思ったより早くなかった!!
  32. 32. BAZELの今後

×