Gradle 和 Android Studio --- Jason Ko

23
GRADLE + ANDROID by 柯力中 Jason Ko
  • Upload

    -
  • Category

    Software

  • view

    175
  • download

    4

Transcript of Gradle 和 Android Studio --- Jason Ko

GRADLE + ANDROIDby 柯力中 Jason Ko

什麼是 GRADLE

• Automation Tool 自動化建置工具

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

(ship), project dependencies…

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

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

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

為什麼是 GROOVY

• 語言精簡 ( Less verbose )

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

• DSL ( Domain Specific Language)

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

就好了!

DSL 舉例

Java 的 Swing GUI Toolkit

Groovy 的 SwingBuilder

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

基本指令

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

mode

• gradle -q help => look help guide

• gradle properties => 列出此 project 的

properties

BUILD.GRADLE

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

點~

• ex.

run by => gradle compileTask

JAVA PLUGIN

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

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

Java 有 4 種不同的 Configuration

• compile, runtime, testCompile, testRuntime

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

不同的 dependencies

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

compile

Example 1

Marven Central 是遠端的資料庫,

Gradle 會到此資料庫下載,

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

Example 2

Multiple Projects

settings.gradle

build.gradle

settings.gradle:

build.gradle:

ex. Project 的 build.gradle

Project 的 build.gradle 分拆

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

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

project,

api, app 為 module

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

module

Android Studio 下的 gradle

執行檔是 gradlew

Project 的 gradle 版本

gradle-wrapper.properties

在 project 檔案夾下

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

記得 sync project with

gradle

有修改 gradle 的 file, 就要 sync

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

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

會覆蓋 AndroidManifiest.xml

Compile SDK version

決定如何打包 APP,

有 release 跟 debug 兩種可用

App 的 build.gradle

include Libs 裡面的 jar 檔

jar 檔放這裡面

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

version

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

product flavors

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

值得學的

• 使用 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

參考內容:

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.