SlideShare ist ein Scribd-Unternehmen logo
1 von 23
GRADLE + ANDROID
by 柯力中 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.

Weitere ähnliche Inhalte

Was ist angesagt?

給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發Weizhong Yang
 
JSDC 2015 React-Native 實戰
JSDC 2015 React-Native 實戰JSDC 2015 React-Native 實戰
JSDC 2015 React-Native 實戰Sam Lee
 
React-Native share
React-Native shareReact-Native share
React-Native shareEddie Hsu
 
Android gradle 从入门到gg 1
Android gradle 从入门到gg 1Android gradle 从入门到gg 1
Android gradle 从入门到gg 1Jun Liu
 
Continuous Delivery - 敏捷開發的最後一哩路
Continuous Delivery - 敏捷開發的最後一哩路Continuous Delivery - 敏捷開發的最後一哩路
Continuous Delivery - 敏捷開發的最後一哩路Miles Chou
 
A dev ops team's practice in trend micro in agile summit 2018
A dev ops team's practice in trend micro in agile summit 2018A dev ops team's practice in trend micro in agile summit 2018
A dev ops team's practice in trend micro in agile summit 2018Juggernaut Liu
 
數學系的資訊人生
數學系的資訊人生數學系的資訊人生
數學系的資訊人生Jintin Lin
 
Android gradle 从入门到gg 2
Android gradle 从入门到gg 2Android gradle 从入门到gg 2
Android gradle 从入门到gg 2Jun Liu
 
Why use dependency injection
Why use dependency injectionWhy use dependency injection
Why use dependency injection彥彬 洪
 
Go 語言基礎簡介
Go 語言基礎簡介Go 語言基礎簡介
Go 語言基礎簡介Bo-Yi Wu
 
SRE 讀書會 - 導讀:第 31 章
SRE 讀書會 - 導讀:第 31 章SRE 讀書會 - 導讀:第 31 章
SRE 讀書會 - 導讀:第 31 章Chen Cheng-Wei
 
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?Miles Chou
 
CICD Workshop 20180922
CICD Workshop 20180922CICD Workshop 20180922
CICD Workshop 20180922Earou Huang
 
20170905 dev ops in hiiir
20170905 dev ops in hiiir20170905 dev ops in hiiir
20170905 dev ops in hiiirIsaac Tseng
 
React native 開發快速上手 20171106
React native 開發快速上手 20171106React native 開發快速上手 20171106
React native 開發快速上手 20171106Phoebe Pan
 
SRE 讀書會 - 導讀:第一章
SRE 讀書會 - 導讀:第一章SRE 讀書會 - 導讀:第一章
SRE 讀書會 - 導讀:第一章Chen Cheng-Wei
 
台灣 AngularJS 社群小聚
台灣 AngularJS 社群小聚台灣 AngularJS 社群小聚
台灣 AngularJS 社群小聚Jimmy Ho
 
Phonegap入門
Phonegap入門Phonegap入門
Phonegap入門Roy Chen
 
Mvp in practice
Mvp in practiceMvp in practice
Mvp in practice彥彬 洪
 

Was ist angesagt? (20)

給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發
 
Swagger
SwaggerSwagger
Swagger
 
JSDC 2015 React-Native 實戰
JSDC 2015 React-Native 實戰JSDC 2015 React-Native 實戰
JSDC 2015 React-Native 實戰
 
React-Native share
React-Native shareReact-Native share
React-Native share
 
Android gradle 从入门到gg 1
Android gradle 从入门到gg 1Android gradle 从入门到gg 1
Android gradle 从入门到gg 1
 
Continuous Delivery - 敏捷開發的最後一哩路
Continuous Delivery - 敏捷開發的最後一哩路Continuous Delivery - 敏捷開發的最後一哩路
Continuous Delivery - 敏捷開發的最後一哩路
 
A dev ops team's practice in trend micro in agile summit 2018
A dev ops team's practice in trend micro in agile summit 2018A dev ops team's practice in trend micro in agile summit 2018
A dev ops team's practice in trend micro in agile summit 2018
 
數學系的資訊人生
數學系的資訊人生數學系的資訊人生
數學系的資訊人生
 
Android gradle 从入门到gg 2
Android gradle 从入门到gg 2Android gradle 从入门到gg 2
Android gradle 从入门到gg 2
 
Why use dependency injection
Why use dependency injectionWhy use dependency injection
Why use dependency injection
 
Go 語言基礎簡介
Go 語言基礎簡介Go 語言基礎簡介
Go 語言基礎簡介
 
SRE 讀書會 - 導讀:第 31 章
SRE 讀書會 - 導讀:第 31 章SRE 讀書會 - 導讀:第 31 章
SRE 讀書會 - 導讀:第 31 章
 
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
 
CICD Workshop 20180922
CICD Workshop 20180922CICD Workshop 20180922
CICD Workshop 20180922
 
20170905 dev ops in hiiir
20170905 dev ops in hiiir20170905 dev ops in hiiir
20170905 dev ops in hiiir
 
React native 開發快速上手 20171106
React native 開發快速上手 20171106React native 開發快速上手 20171106
React native 開發快速上手 20171106
 
SRE 讀書會 - 導讀:第一章
SRE 讀書會 - 導讀:第一章SRE 讀書會 - 導讀:第一章
SRE 讀書會 - 導讀:第一章
 
台灣 AngularJS 社群小聚
台灣 AngularJS 社群小聚台灣 AngularJS 社群小聚
台灣 AngularJS 社群小聚
 
Phonegap入門
Phonegap入門Phonegap入門
Phonegap入門
 
Mvp in practice
Mvp in practiceMvp in practice
Mvp in practice
 

Andere mochten auch

第三堂 Java 語法 (2) 物件導向程式設計
第三堂  Java 語法 (2) 物件導向程式設計第三堂  Java 語法 (2) 物件導向程式設計
第三堂 Java 語法 (2) 物件導向程式設計力中 柯
 
第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發力中 柯
 
第七堂 Youtube 播放 app (2)
第七堂 Youtube 播放 app (2)第七堂 Youtube 播放 app (2)
第七堂 Youtube 播放 app (2)力中 柯
 
第十堂 Android 5.0 lollipop
第十堂 Android 5.0 lollipop第十堂 Android 5.0 lollipop
第十堂 Android 5.0 lollipop力中 柯
 
第四堂 Android 的架構與開發工具
第四堂 Android 的架構與開發工具第四堂 Android 的架構與開發工具
第四堂 Android 的架構與開發工具力中 柯
 
第五堂 計算機App與網站瀏覽app
第五堂 計算機App與網站瀏覽app第五堂 計算機App與網站瀏覽app
第五堂 計算機App與網站瀏覽app力中 柯
 
第九堂 手機的資料保存
第九堂 手機的資料保存第九堂 手機的資料保存
第九堂 手機的資料保存力中 柯
 
Admob and android
Admob and androidAdmob and android
Admob and android力中 柯
 
第八堂 學習使用 Service
第八堂 學習使用 Service第八堂 學習使用 Service
第八堂 學習使用 Service力中 柯
 
Android Development - Process & Tools
Android Development - Process & ToolsAndroid Development - Process & Tools
Android Development - Process & ToolsLope Emano
 
第一堂 進入 Android 的世界 --- Jason 的 Android 應用程式快樂學習班
第一堂 進入 Android 的世界 --- Jason 的  Android 應用程式快樂學習班第一堂 進入 Android 的世界 --- Jason 的  Android 應用程式快樂學習班
第一堂 進入 Android 的世界 --- Jason 的 Android 應用程式快樂學習班力中 柯
 
第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)力中 柯
 
Exploring the power of Gradle in android studio - Basics & Beyond
Exploring the power of Gradle in android studio - Basics & BeyondExploring the power of Gradle in android studio - Basics & Beyond
Exploring the power of Gradle in android studio - Basics & BeyondKaushal Dhruw
 
Creating the first app with android studio
Creating the first app with android studioCreating the first app with android studio
Creating the first app with android studioParinita03
 
Java 8 與 retrolambda
Java 8 與 retrolambdaJava 8 與 retrolambda
Java 8 與 retrolambdaJustin Lin
 
How I learn APP (2015)
How I learn APP (2015)How I learn APP (2015)
How I learn APP (2015)Ryan Chung
 
阿肯 - UI & UX 從核心資訊與路徑設計談起 (2015/01/27)
阿肯 - UI & UX 從核心資訊與路徑設計談起 (2015/01/27)阿肯 - UI & UX 從核心資訊與路徑設計談起 (2015/01/27)
阿肯 - UI & UX 從核心資訊與路徑設計談起 (2015/01/27)阿肯 KEN studio
 
How to setup unit testing in Android Studio
How to setup unit testing in Android StudioHow to setup unit testing in Android Studio
How to setup unit testing in Android Studiotobiaspreuss
 
My Project Report Documentation with Abstract & Snapshots
My Project Report Documentation with Abstract & SnapshotsMy Project Report Documentation with Abstract & Snapshots
My Project Report Documentation with Abstract & SnapshotsUsman Sait
 

Andere mochten auch (20)

第三堂 Java 語法 (2) 物件導向程式設計
第三堂  Java 語法 (2) 物件導向程式設計第三堂  Java 語法 (2) 物件導向程式設計
第三堂 Java 語法 (2) 物件導向程式設計
 
第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發
 
Mobile app works
Mobile app worksMobile app works
Mobile app works
 
第七堂 Youtube 播放 app (2)
第七堂 Youtube 播放 app (2)第七堂 Youtube 播放 app (2)
第七堂 Youtube 播放 app (2)
 
第十堂 Android 5.0 lollipop
第十堂 Android 5.0 lollipop第十堂 Android 5.0 lollipop
第十堂 Android 5.0 lollipop
 
第四堂 Android 的架構與開發工具
第四堂 Android 的架構與開發工具第四堂 Android 的架構與開發工具
第四堂 Android 的架構與開發工具
 
第五堂 計算機App與網站瀏覽app
第五堂 計算機App與網站瀏覽app第五堂 計算機App與網站瀏覽app
第五堂 計算機App與網站瀏覽app
 
第九堂 手機的資料保存
第九堂 手機的資料保存第九堂 手機的資料保存
第九堂 手機的資料保存
 
Admob and android
Admob and androidAdmob and android
Admob and android
 
第八堂 學習使用 Service
第八堂 學習使用 Service第八堂 學習使用 Service
第八堂 學習使用 Service
 
Android Development - Process & Tools
Android Development - Process & ToolsAndroid Development - Process & Tools
Android Development - Process & Tools
 
第一堂 進入 Android 的世界 --- Jason 的 Android 應用程式快樂學習班
第一堂 進入 Android 的世界 --- Jason 的  Android 應用程式快樂學習班第一堂 進入 Android 的世界 --- Jason 的  Android 應用程式快樂學習班
第一堂 進入 Android 的世界 --- Jason 的 Android 應用程式快樂學習班
 
第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)
 
Exploring the power of Gradle in android studio - Basics & Beyond
Exploring the power of Gradle in android studio - Basics & BeyondExploring the power of Gradle in android studio - Basics & Beyond
Exploring the power of Gradle in android studio - Basics & Beyond
 
Creating the first app with android studio
Creating the first app with android studioCreating the first app with android studio
Creating the first app with android studio
 
Java 8 與 retrolambda
Java 8 與 retrolambdaJava 8 與 retrolambda
Java 8 與 retrolambda
 
How I learn APP (2015)
How I learn APP (2015)How I learn APP (2015)
How I learn APP (2015)
 
阿肯 - UI & UX 從核心資訊與路徑設計談起 (2015/01/27)
阿肯 - UI & UX 從核心資訊與路徑設計談起 (2015/01/27)阿肯 - UI & UX 從核心資訊與路徑設計談起 (2015/01/27)
阿肯 - UI & UX 從核心資訊與路徑設計談起 (2015/01/27)
 
How to setup unit testing in Android Studio
How to setup unit testing in Android StudioHow to setup unit testing in Android Studio
How to setup unit testing in Android Studio
 
My Project Report Documentation with Abstract & Snapshots
My Project Report Documentation with Abstract & SnapshotsMy Project Report Documentation with Abstract & Snapshots
My Project Report Documentation with Abstract & Snapshots
 

Ähnlich wie Gradle 和 Android Studio --- Jason Ko

Grails敏捷项目开发
Grails敏捷项目开发Grails敏捷项目开发
Grails敏捷项目开发Michael Yan
 
淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle淺談 Groovy 與 Gradle
淺談 Groovy 與 GradleJustin Lin
 
Groovy:Candy for Java Developers
Groovy:Candy for Java DevelopersGroovy:Candy for Java Developers
Groovy:Candy for Java Developersfoxgem
 
[External] 2021 twhk gdsc summer boot camp student guide
[External] 2021 twhk gdsc  summer boot camp student guide [External] 2021 twhk gdsc  summer boot camp student guide
[External] 2021 twhk gdsc summer boot camp student guide shin
 
Go语言学习指南
Go语言学习指南Go语言学习指南
Go语言学习指南清平 张
 
從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby建興 王
 
20121115 Slides
20121115 Slides20121115 Slides
20121115 SlidesTonyq Wang
 
基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映heyfluke
 
基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映heyfluke
 
HDInsight for Microsoft Users
HDInsight for Microsoft UsersHDInsight for Microsoft Users
HDInsight for Microsoft UsersKuo-Chun Su
 
1, java intro
1, java intro1, java intro
1, java introted-xu
 
Introduction to Golang final
Introduction to Golang final Introduction to Golang final
Introduction to Golang final Paul Chao
 
J Ruby和Rails 让Ruby语言融入Java项目
J Ruby和Rails 让Ruby语言融入Java项目J Ruby和Rails 让Ruby语言融入Java项目
J Ruby和Rails 让Ruby语言融入Java项目George Ang
 
Static Code Analysis 靜態程式碼分析
Static Code Analysis 靜態程式碼分析Static Code Analysis 靜態程式碼分析
Static Code Analysis 靜態程式碼分析Bill Lin
 
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)悦 温
 
DrupalCamp Taipei 2012 迷人的有「型」網站
DrupalCamp Taipei 2012 迷人的有「型」網站DrupalCamp Taipei 2012 迷人的有「型」網站
DrupalCamp Taipei 2012 迷人的有「型」網站Hipfox
 
專案啟動與設定
專案啟動與設定專案啟動與設定
專案啟動與設定Shengyou Fan
 
Rwd設計 不是你想的那樣
Rwd設計 不是你想的那樣Rwd設計 不是你想的那樣
Rwd設計 不是你想的那樣Loren Hsu
 

Ähnlich wie Gradle 和 Android Studio --- Jason Ko (20)

Grails敏捷项目开发
Grails敏捷项目开发Grails敏捷项目开发
Grails敏捷项目开发
 
淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle
 
Groovy:Candy for Java Developers
Groovy:Candy for Java DevelopersGroovy:Candy for Java Developers
Groovy:Candy for Java Developers
 
[External] 2021 twhk gdsc summer boot camp student guide
[External] 2021 twhk gdsc  summer boot camp student guide [External] 2021 twhk gdsc  summer boot camp student guide
[External] 2021 twhk gdsc summer boot camp student guide
 
Go语言学习指南
Go语言学习指南Go语言学习指南
Go语言学习指南
 
Docker基礎
Docker基礎Docker基礎
Docker基礎
 
從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby
 
Build Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratchBuild Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratch
 
20121115 Slides
20121115 Slides20121115 Slides
20121115 Slides
 
基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映
 
基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映
 
HDInsight for Microsoft Users
HDInsight for Microsoft UsersHDInsight for Microsoft Users
HDInsight for Microsoft Users
 
1, java intro
1, java intro1, java intro
1, java intro
 
Introduction to Golang final
Introduction to Golang final Introduction to Golang final
Introduction to Golang final
 
J Ruby和Rails 让Ruby语言融入Java项目
J Ruby和Rails 让Ruby语言融入Java项目J Ruby和Rails 让Ruby语言融入Java项目
J Ruby和Rails 让Ruby语言融入Java项目
 
Static Code Analysis 靜態程式碼分析
Static Code Analysis 靜態程式碼分析Static Code Analysis 靜態程式碼分析
Static Code Analysis 靜態程式碼分析
 
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
 
DrupalCamp Taipei 2012 迷人的有「型」網站
DrupalCamp Taipei 2012 迷人的有「型」網站DrupalCamp Taipei 2012 迷人的有「型」網站
DrupalCamp Taipei 2012 迷人的有「型」網站
 
專案啟動與設定
專案啟動與設定專案啟動與設定
專案啟動與設定
 
Rwd設計 不是你想的那樣
Rwd設計 不是你想的那樣Rwd設計 不是你想的那樣
Rwd設計 不是你想的那樣
 

Gradle 和 Android Studio --- Jason Ko