Top Banner
GRADLE + ANDROID by 柯力中 Jason Ko
23

Gradle 和 Android Studio --- Jason Ko

Jul 16, 2015

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Gradle 和 Android Studio --- Jason Ko

GRADLE + ANDROIDby 柯力中 Jason Ko

Page 2: Gradle 和 Android Studio --- Jason Ko

什麼是 GRADLE

• Automation Tool 自動化建置工具

• 可以做的事: compile, test, package, deploy

(ship), project dependencies…

• Gradle 是使用 Groovy 語言的腳本語言

(腳本語言是為了縮短 edit, compile, link, run

而開發的語言, 一行行地運行, 像 shell 一樣)

Page 3: Gradle 和 Android Studio --- Jason Ko

為什麼是 GROOVY

• 語言精簡 ( Less verbose )

• 支援多種程式語言 ( Very flexible)

• DSL ( Domain Specific Language)

=> 很優, 而且不用學 ! 我們只要會叫 Gradle 跑

就好了!

Page 4: Gradle 和 Android Studio --- Jason Ko

DSL 舉例

Java 的 Swing GUI Toolkit

Groovy 的 SwingBuilder

取自:http://www.codedata.com.tw/java/groovy-tutorial-1-understanding-groovy/

Page 5: Gradle 和 Android Studio --- Jason Ko

基本指令

• gradle -q tasks => 列出 tasks, -q 是 in quiet

mode

• gradle -q help => look help guide

• gradle properties => 列出此 project 的

properties

Page 6: Gradle 和 Android Studio --- Jason Ko

BUILD.GRADLE

• build. gradle 是所有指令的集合檔, 是學習的重

點~

• ex.

run by => gradle compileTask

Page 7: Gradle 和 Android Studio --- Jason Ko

JAVA PLUGIN

• 使用 plugin => apply plugin: <plugin-name>

• 使用 java plugin => apply plugin: “Java”

Page 8: Gradle 和 Android Studio --- Jason Ko

Java 有 4 種不同的 Configuration

• compile, runtime, testCompile, testRuntime

• 在這 4 種不同的 configuration, 我們可以指定

不同的 dependencies

• for Android Project 大部份我們只用到

compile

Page 9: Gradle 和 Android Studio --- Jason Ko

Example 1

Marven Central 是遠端的資料庫,

Gradle 會到此資料庫下載,

我們還需指定所需 library 的 group, name, version

Page 10: Gradle 和 Android Studio --- Jason Ko

Example 2

Page 11: Gradle 和 Android Studio --- Jason Ko

Multiple Projects

settings.gradle

build.gradle

settings.gradle:

build.gradle:

Page 12: Gradle 和 Android Studio --- Jason Ko

ex. Project 的 build.gradle

Page 13: Gradle 和 Android Studio --- Jason Ko

Project 的 build.gradle 分拆

看看 Android Studio 內的 Project, 是不是長這樣!

Page 14: Gradle 和 Android Studio --- Jason Ko

p.s 為了不搞混, 我們稱HelloCloudEndpoints 為

project,

api, app 為 module

此例子中, app 為手機程式module, api 為 google cloud

module

Page 15: Gradle 和 Android Studio --- Jason Ko

Android Studio 下的 gradle

執行檔是 gradlew

Page 16: Gradle 和 Android Studio --- Jason Ko

Project 的 gradle 版本

gradle-wrapper.properties

在 project 檔案夾下

改這裡即可使用不同的 gradle 版本

Page 17: Gradle 和 Android Studio --- Jason Ko

記得 sync project with

gradle

有修改 gradle 的 file, 就要 sync

Page 18: Gradle 和 Android Studio --- Jason Ko

App 的 build.gradle 1. apply “com.android.application” 的 plugin

2. 因為 apply 上面這個 plugin 所以有 android{} 這個 configuration element 可以用

會覆蓋 AndroidManifiest.xml

Compile SDK version

決定如何打包 APP,

有 release 跟 debug 兩種可用

Page 19: Gradle 和 Android Studio --- Jason Ko

App 的 build.gradle

include Libs 裡面的 jar 檔

jar 檔放這裡面

Page 20: Gradle 和 Android Studio --- Jason Ko

product flavors• 同一個專案, 輸出不同的 APP ex. Demo version, Full

version

• 在 gradle.build 裡的 Android {} 添加 productFlavors{}

Page 21: Gradle 和 Android Studio --- Jason Ko

product flavors

將不同的檔案放在各自的資料夾裡

Page 22: Gradle 和 Android Studio --- Jason Ko

值得學的

• 使用 Android Studio + App Engine + Cloud Endpoints

=>

1. 節省寫 web server api 的時間!

2. 節省解析文檔 (json, xml) 的時間

節省 50% 時間!

• 可以參考 "App Engine Java Endpoints Module" Template

https://github.com/GoogleCloudPlatform/gradle-appengine-

templates/tree/master/HelloEndpoints

Page 23: Gradle 和 Android Studio --- Jason Ko

參考內容:

1. IROMIN Gradle Tutorial

http://rominirani.com/2014/07/28/gradle-tutorial-series-an-

overview/

2. Wiki

https://en.wikipedia.org/wiki/Gradle

That’s All.