androidstudioはじめました ~gradle編~

44
AndroidStudioはじめました ~Gradleについて~ 2014/04/16 tyabata

Upload: yabata-tomomitsu

Post on 26-Jan-2015

115 views

Category:

Technology


4 download

DESCRIPTION

AndroidStudioはじめて、Gradleにできることを5分ぐらいの発表用にまとめたものです。 サンプルはこちら https://github.com/tyabata/demo-tomo

TRANSCRIPT

Page 1: AndroidStudioはじめました ~Gradle編~

AndroidStudioはじめました ~Gradleについて~

2014/04/16 tyabata

Page 2: AndroidStudioはじめました ~Gradle編~

•矢端智光 Tomomitsu Yabata

•仕事と趣味とかでAndroid触ってます

Page 3: AndroidStudioはじめました ~Gradle編~

最近 AndroidStudio で開発してます

Page 4: AndroidStudioはじめました ~Gradle編~

ビルドは Gradleになりました

Page 5: AndroidStudioはじめました ~Gradle編~

Gradle?

Page 6: AndroidStudioはじめました ~Gradle編~

Gradleとは• Groovyで書けるビルドシステム

• プログラミングするように書けるのでビルド手順などが、柔軟にカスタマイズできる

• Maevenとの互換性ある

• 参考http://gradle.monochromeroad.com/docs/userguide/overview.html

Page 7: AndroidStudioはじめました ~Gradle編~

buildファイルで 比較してみた

Page 8: AndroidStudioはじめました ~Gradle編~

Ant(build.xml)

Page 9: AndroidStudioはじめました ~Gradle編~

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- WARNING: Eclipse auto-generated file. Any modifications will be overwritten. To include a user specific buildfile here, simply create one in the same directory with the processing instruction <?eclipse.ant.import?> as the first entry and export the buildfile again. --> <project basedir="." default="build" name="TomoTest"> <property environment="env"/> <property name="ECLIPSE_HOME" value="../../../../../Applications/eclipse"/> <property name="debuglevel" value="source,lines,vars"/> <property name="target" value="1.6"/> <property name="source" value="1.6"/> <path id="Android 4.4.2.libraryclasspath"> <pathelement location="../../android_sdk/platforms/android-19/android.jar"/> </path> <path id="Android Private Libraries.libraryclasspath"> <pathelement location="libs/android-support-v4.jar"/> </path> <path id="Android Dependencies.libraryclasspath"/> <path id="TomoTest.classpath"> <pathelement location="bin"/> <path refid="Android 4.4.2.libraryclasspath"/> <path refid="Android Private Libraries.libraryclasspath"/> <path refid="Android Dependencies.libraryclasspath"/> </path> <path id="run.MainController.classpath"> <path refid="Android 4.4.2.libraryclasspath"/> <path refid="TomoTest.classpath"/> </path> <path id="run.MainController.bootclasspath"/> <target name="init"> <mkdir dir="bin"/> <copy includeemptydirs="false" todir="bin"> <fileset dir="src"> <exclude name="**/*.java"/> </fileset> </copy> <copy includeemptydirs="false" todir="bin"> <fileset dir="gen"> <exclude name="**/*.java"/> </fileset> </copy> </target> <target name="clean"> <delete dir="bin"/> </target> <target depends="clean" name="cleanall"/> <target depends="build-subprojects,build-project" name="build"/> <target name="build-subprojects"/> <target depends="init" name="build-project"> <echo message="${ant.project.name}: ${ant.file}"/> <javac debug="true" debuglevel="${debuglevel}" destdir="bin" includeantruntime="false" source="${source}" target="${target}"> <src path="src"/> <src path="gen"/>

以下省略

Page 10: AndroidStudioはじめました ~Gradle編~

Maeven(pom.xml)参考URLは後記

Page 11: AndroidStudioはじめました ~Gradle編~

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>sample</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>Maven Quick Start Archetype</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>

Page 12: AndroidStudioはじめました ~Gradle編~

Gradle(build.gradle)

Page 13: AndroidStudioはじめました ~Gradle編~

apply plugin: 'android' !android { compileSdkVersion 19 buildToolsVersion "19.0.1" ! defaultConfig { minSdkVersion 15 targetSdkVersion 19 versionCode 1 versionName "1.0" } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } } !dependencies { ! compile "com.android.support:support-v4:19.0.+" }

Page 14: AndroidStudioはじめました ~Gradle編~

見やすい!

Page 15: AndroidStudioはじめました ~Gradle編~

見やすい! (個人的)

Page 16: AndroidStudioはじめました ~Gradle編~

AndroidStudio + Gradle でできること1

Page 17: AndroidStudioはじめました ~Gradle編~

用途別build

Page 18: AndroidStudioはじめました ~Gradle編~

リリースorデバッグ+

独自定義したbuildタイプ(flavor)

Page 19: AndroidStudioはじめました ~Gradle編~

例android { ~省略~ productFlavors { ! normal { // 無料版build } payment { // 有料版build } } ! sourceSets { main { manifest.srcFile 'AndroidManifest.xml' ~省略~ } normal { } payment { } } }

Page 20: AndroidStudioはじめました ~Gradle編~

flavor毎に パッケージ名変更

Page 21: AndroidStudioはじめました ~Gradle編~

簡単ですandroid { ~省略~ productFlavors { ! normal { // 無料版build packageName "jp.tyabata.normal" } payment { // 有料版build packageName "jp.tyabata.payment" } } !}

Page 22: AndroidStudioはじめました ~Gradle編~

特定のflavorだけ 参照したいクラスやリソース

Page 23: AndroidStudioはじめました ~Gradle編~

flavor毎に フォルダ分けれます

Page 24: AndroidStudioはじめました ~Gradle編~

Manifestファイル

Page 25: AndroidStudioはじめました ~Gradle編~

合体できます基本の

AndroidManifest

normal用 AndroidManifest

payment用 AndroidManifest

+ +

通常のAndroidManifest

normal用 AndroidManifest

通常のAndroidManifest

payment用 AndroidManifest

Normalの Manifestファイル

paymentの Manifestファイル

Page 26: AndroidStudioはじめました ~Gradle編~

余談• 同パッケージの同クラスの場合

main(ベースになる部分) + flavor毎に配置するとduplicateで怒られますが

flavor毎だけに同パッケージの同クラスを置くと

ちゃっかりビルドできます

(赤くはなるので推奨ではなさそう)

Page 27: AndroidStudioはじめました ~Gradle編~

基本はmain+

差分はflavorへ

Page 28: AndroidStudioはじめました ~Gradle編~

ボタン一つで

Page 29: AndroidStudioはじめました ~Gradle編~

切り替わる

Page 30: AndroidStudioはじめました ~Gradle編~

AndroidStudio + Gradle でできること2

Page 31: AndroidStudioはじめました ~Gradle編~

外部ライブラリの 組み込み

Page 32: AndroidStudioはじめました ~Gradle編~

• git cloneして • プロジェクトを参照

すればいい?

Page 33: AndroidStudioはじめました ~Gradle編~

Yes!・・・でも

Page 34: AndroidStudioはじめました ~Gradle編~

Gradleで書くと

Page 35: AndroidStudioはじめました ~Gradle編~

repositories { mavenCentral() } !dependencies { ! compile 'jp.tyabata:normal:1.0.+' }

repositories { mavenCentral() } !dependencies { ! compile group: 'jp.tyabata', name: 'normal', version: '1.0.+' }

または

補足 1.0.+とした場合、

Maevenリポジトリから 1.0以上の最新版を 探して取得する

Page 36: AndroidStudioはじめました ~Gradle編~

リモートMaevenリポジトリ 又は

リモートlvyリポジトリにあるソースを build.gradleに記述するだけで

取りこんでくれる

Page 37: AndroidStudioはじめました ~Gradle編~

Gitリポジトリは?

Page 38: AndroidStudioはじめました ~Gradle編~

できないです・・・が

Page 39: AndroidStudioはじめました ~Gradle編~

Gradle用の Gitプラグインあるみたい (編集時点開発中だと思われます)

https://github.com/ajoberstar/gradle-git

Page 40: AndroidStudioはじめました ~Gradle編~

Groovy(java)で 書けるので

Page 41: AndroidStudioはじめました ~Gradle編~

夢も拡張もあるんだよ作れる

Page 42: AndroidStudioはじめました ~Gradle編~

参考• Gradle Documetation

http://www.gradle.org/documentation

• Gradleユーザーガイド(非公式)http://gradle.monochromeroad.com/docs/userguide/userguide.html

• Maven入門 2-4 pom.xmlについてhttp://www.techscore.com/tech/Java/ApacheJakarta/Maven/2-2/#maven-2-4

Page 43: AndroidStudioはじめました ~Gradle編~

サンプルはこちら

https://github.com/tyabata/demo-tomo

Page 44: AndroidStudioはじめました ~Gradle編~

author tyabata

“Thank you for your attention.”