Post on 10-May-2015
description
Android StudioGradle
横幕 圭真(@KeithYokoma)
Android Studio
Android Studio•新しい Android 用開発環境
• IntelliJ IDEA ベースの Android 用 IDE
•オープンソース
• Apache ant から Gradle へ
•しかも IDE にガッツリ統合されている!
Android Studio•ここがすごいよ Android Studio
•レイアウトエディタ
• Gradle ベースのビルド
プロジェクトの作成
Android Studio• Eclipse と異なるプロジェクト構成
Android Studio•テストを含める
Android Studio• Command + R で実行
レイアウトの編集
Android Studio
Android Studio•表示を切り替えるコントロール
Android Studio•表示を切り替えるコントロール
自動でリソースを生成してくれる
プレビュー表示をカスタマイズする
Android Studio
Android Studio
Android Studio
Android Studio•表示を切り替えるコントロール
Android Studio•表示を切り替えるコントロール
Android Studio•テーマ設定
Android Studio•ロケール設定
Android Studio• Fragment のレイアウトもプレビュー
Android Studio•マウスオーバーでリソース名を表示
•リソース ID のサジェストもパワフルに
•フレームワークにアノテーションが付いている
• int がどのリソース ID かが指定されるようになった
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’) }}
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’) }}
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’) }}
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’) }}
$ ./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
Gradle for Android
Gradle for Android• Android 用のタスクが一杯
$ ./gradlew tasks
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の修正
コミットが不要に
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” } } }}
リリースビルドとの共存が可能に
Android StudioGradle