37
Android Studio Gradle 横幕 圭真(@KeithYokoma)

Google I/O 2013 報告会 Android Studio と Gradle

Embed Size (px)

DESCRIPTION

株式会社ミクシィで開催された、Google I/O 2013 報告会でのプレゼンテーション。

Citation preview

Page 1: Google I/O 2013 報告会 Android Studio と Gradle

Android StudioGradle

横幕 圭真(@KeithYokoma)

Page 2: Google I/O 2013 報告会 Android Studio と Gradle

Android Studio

Page 3: Google I/O 2013 報告会 Android Studio と Gradle

Android Studio•新しい Android 用開発環境

• IntelliJ IDEA ベースの Android 用 IDE

•オープンソース

• Apache ant から Gradle へ

•しかも IDE にガッツリ統合されている!

Page 4: Google I/O 2013 報告会 Android Studio と Gradle

Android Studio•ここがすごいよ Android Studio

•レイアウトエディタ

• Gradle ベースのビルド

Page 5: Google I/O 2013 報告会 Android Studio と Gradle

プロジェクトの作成

Page 6: Google I/O 2013 報告会 Android Studio と Gradle
Page 7: Google I/O 2013 報告会 Android Studio と Gradle
Page 8: Google I/O 2013 報告会 Android Studio と Gradle
Page 9: Google I/O 2013 報告会 Android Studio と Gradle
Page 10: Google I/O 2013 報告会 Android Studio と Gradle

Android Studio• Eclipse と異なるプロジェクト構成

Page 11: Google I/O 2013 報告会 Android Studio と Gradle

Android Studio•テストを含める

Page 12: Google I/O 2013 報告会 Android Studio と Gradle

Android Studio• Command + R で実行

Page 13: Google I/O 2013 報告会 Android Studio と Gradle

レイアウトの編集

Page 14: Google I/O 2013 報告会 Android Studio と Gradle

Android Studio

Page 15: Google I/O 2013 報告会 Android Studio と Gradle

Android Studio•表示を切り替えるコントロール

Page 16: Google I/O 2013 報告会 Android Studio と Gradle

Android Studio•表示を切り替えるコントロール

自動でリソースを生成してくれる

プレビュー表示をカスタマイズする

Page 17: Google I/O 2013 報告会 Android Studio と Gradle

Android Studio

Page 18: Google I/O 2013 報告会 Android Studio と Gradle

Android Studio

Page 19: Google I/O 2013 報告会 Android Studio と Gradle

Android Studio

Page 20: Google I/O 2013 報告会 Android Studio と Gradle

Android Studio•表示を切り替えるコントロール

Page 21: Google I/O 2013 報告会 Android Studio と Gradle

Android Studio•表示を切り替えるコントロール

Page 22: Google I/O 2013 報告会 Android Studio と Gradle

Android Studio•テーマ設定

Page 23: Google I/O 2013 報告会 Android Studio と Gradle

Android Studio•ロケール設定

Page 24: Google I/O 2013 報告会 Android Studio と Gradle

Android Studio• Fragment のレイアウトもプレビュー

Page 25: Google I/O 2013 報告会 Android Studio と Gradle

Android Studio•マウスオーバーでリソース名を表示

•リソース ID のサジェストもパワフルに

•フレームワークにアノテーションが付いている

• int がどのリソース ID かが指定されるようになった

Page 26: Google I/O 2013 報告会 Android Studio と Gradle

Gradle

Page 27: Google I/O 2013 報告会 Android Studio と Gradle

Gradle•新しいビルドシステム

• Groovy で記述

• ant にはない依存関係管理

•プログラムも仕込める

buildscript { repositories { maven { url 'http://repo1.maven.org/maven2' } } dependencies { classpath 'com.android.tools.build:gradle:0.4' }}apply plugin: 'android'

dependencies { compile files('libs/android-support-v4.jar')}

android { compileSdkVersion 17 buildToolsVersion "17.0.0"

defaultConfig { minSdkVersion 8 targetSdkVersion 16 }

sourceSets { main { manifest.srcFile ‘AndroidManifest.xml’ java.srcDirs = [‘src’] resources.srcDirs = [‘src’] aidl.srcDirs = [‘src’] renderscript.srcDirs[‘src’] res.srcDirs = [‘res’] assets.srcDirs = [‘assets’] } intrument.setRoot(‘tests’) }}

Page 28: Google I/O 2013 報告会 Android Studio と Gradle

Gradle•新しいビルドシステム

• android 向けプラグイン完備

• AndroidManifest が書き換え可

•有料版/無料版といったバージョンの振り分けもできる

buildscript { repositories { maven { url 'http://repo1.maven.org/maven2' } } dependencies { classpath 'com.android.tools.build:gradle:0.4' }}apply plugin: 'android'

dependencies { compile files('libs/android-support-v4.jar')}

android { compileSdkVersion 17 buildToolsVersion "17.0.0"

defaultConfig { minSdkVersion 8 targetSdkVersion 16 }

sourceSets { main { manifest.srcFile ‘AndroidManifest.xml’ java.srcDirs = [‘src’] resources.srcDirs = [‘src’] aidl.srcDirs = [‘src’] renderscript.srcDirs[‘src’] res.srcDirs = [‘res’] assets.srcDirs = [‘assets’] } intrument.setRoot(‘tests’) }}

Page 29: Google I/O 2013 報告会 Android Studio と Gradle

Gradle•新しいビルドシステム

• sourceSets の設定で古いプロジェクトにも適用可

buildscript { repositories { maven { url 'http://repo1.maven.org/maven2' } } dependencies { classpath 'com.android.tools.build:gradle:0.4' }}apply plugin: 'android'

dependencies { compile files('libs/android-support-v4.jar')}

android { compileSdkVersion 17 buildToolsVersion "17.0.0"

defaultConfig { minSdkVersion 8 targetSdkVersion 16 }

sourceSets { main { manifest.srcFile ‘AndroidManifest.xml’ java.srcDirs = [‘src’] resources.srcDirs = [‘src’] aidl.srcDirs = [‘src’] renderscript.srcDirs[‘src’] res.srcDirs = [‘res’] assets.srcDirs = [‘assets’] } instrument.setRoot(‘tests’) }}

Page 30: Google I/O 2013 報告会 Android Studio と Gradle

Gradle•コマンド同封

• ./gradlew build

buildscript { repositories { maven { url 'http://repo1.maven.org/maven2' } } dependencies { classpath 'com.android.tools.build:gradle:0.4' }}apply plugin: 'android'

dependencies { compile files('libs/android-support-v4.jar')}

android { compileSdkVersion 17 buildToolsVersion "17.0.0"

defaultConfig { minSdkVersion 8 targetSdkVersion 16 }

sourceSets { main { manifest.srcFile ‘AndroidManifest.xml’ java.srcDirs = [‘src’] resources.srcDirs = [‘src’] aidl.srcDirs = [‘src’] renderscript.srcDirs[‘src’] res.srcDirs = [‘res’] assets.srcDirs = [‘assets’] } intrument.setRoot(‘tests’) }}

Page 31: Google I/O 2013 報告会 Android Studio と Gradle

$  ./gradlew  buildThe  TaskContainer.add()  method  has  been  deprecated  and  is  scheduled  to  be  removed  in  Gradle  2.0.  Please  use  the  create()  method  instead.:HogeApp:prepareDebugDependencies:HogeApp:compileDebugAidl  UP-­‐TO-­‐DATE:HogeApp:generateDebugBuildConfig  UP-­‐TO-­‐DATE:HogeApp:mergeDebugAssets  UP-­‐TO-­‐DATE:HogeApp:compileDebugRenderscript  UP-­‐TO-­‐DATE:HogeApp:mergeDebugResources  UP-­‐TO-­‐DATE:HogeApp:processDebugManifest  UP-­‐TO-­‐DATE:HogeApp:processDebugResources  UP-­‐TO-­‐DATE:HogeApp:compileDebug  UP-­‐TO-­‐DATE:HogeApp:dexDebug  UP-­‐TO-­‐DATE:HogeApp:processDebugJavaRes  UP-­‐TO-­‐DATE:HogeApp:validateDebugSigning:HogeApp:packageDebug  UP-­‐TO-­‐DATE:HogeApp:assembleDebug  UP-­‐TO-­‐DATE:HogeApp:prepareReleaseDependencies:HogeApp:compileReleaseAidl:HogeApp:generateReleaseBuildConfig:HogeApp:mergeReleaseAssets:HogeApp:compileReleaseRenderscript:HogeApp:mergeReleaseResources:HogeApp:processReleaseManifest:HogeApp:processReleaseResources:HogeApp:compileRelease:HogeApp:dexRelease:HogeApp:processReleaseJavaRes  UP-­‐TO-­‐DATE:HogeApp:packageRelease:HogeApp:assembleRelease:HogeApp:assemble:HogeApp:check  UP-­‐TO-­‐DATE:HogeApp:build

BUILD  SUCCESSFUL

Total  time:  9.003  secs

$  ls  HogeApp/build/apk/HogeApp-­‐debug-­‐unaligned.apkHogeApp-­‐release-­‐unsigned.apk

Page 32: Google I/O 2013 報告会 Android Studio と Gradle

Gradle for Android

Page 33: Google I/O 2013 報告会 Android Studio と Gradle

Gradle for Android• Android 用のタスクが一杯

$  ./gradlew  tasks

Page 34: Google I/O 2013 報告会 Android Studio と Gradle

Gradle for Android• AndroidManifest をいじる

• defaultConfig ブロック

•ターゲットSDKのバージョン

•バージョンコード

•バージョン名

buildscript { repositories { maven { url 'http://repo1.maven.org/maven2' } } dependencies { classpath 'com.android.tools.build:gradle:0.4' }}apply plugin: 'android'

dependencies { compile files('libs/android-support-v4.jar')}

android { compileSdkVersion 17 buildToolsVersion "17.0.0"

defaultConfig { minSdkVersion 8 targetSdkVersion 16 versionCode 1 versionName “1.0.0” }}AndroidManifestの修正

コミットが不要に

Page 35: Google I/O 2013 報告会 Android Studio と Gradle

Gradle for Android• AndroidManifest をいじる

•デバッグ用途の

•デバッグ用のパッケージ名

•デバッグ用のバージョン名

buildscript { repositories { maven { url 'http://repo1.maven.org/maven2' } } dependencies { classpath 'com.android.tools.build:gradle:0.4' }}apply plugin: 'android'

dependencies { compile files('libs/android-support-v4.jar')}

android { compileSdkVersion 17 buildToolsVersion "17.0.0"

defaultConfig { minSdkVersion 8 targetSdkVersion 16 versionCode 1 versionName “1.0.0” }

sourceSets { buildType { debug { packageNameSuffix “.debug” } } }}

リリースビルドとの共存が可能に

Page 36: Google I/O 2013 報告会 Android Studio と Gradle

Android StudioGradle

Page 37: Google I/O 2013 報告会 Android Studio と Gradle