SlideShare a Scribd company logo
1 of 41
第十一堂:
學習編譯與上架
柯力中 Jason Ko
Jason的Android 快樂應用程式學習班
課程內容
• 編譯輸出 APK 檔
• 上架到 Play Store
• 關於 Gradle
Jason的Android 快樂應用程式學習班
編譯輸出 APK 檔
Jason的Android 快樂應用程式學習班
輸出 APK 步驟一
Jason的Android 快樂應用程式學習班
• 點擊 Build, 接著 Generate Signed APK
輸出 APK 步驟二
Jason的Android 快樂應用程式學習班
• 先產生一個 Key store, 點 Create new (keystore 是用來儲存一些認
證資訊的, play store 商店會以此資訊來辨別有沒有權限更新APP)
輸出 APK 步驟二
Jason的Android 快樂應用程式學習班
• 先產生一個 Key store, 點 Create new (keystore 是用來儲存一些認
證資訊的, play store 商店會以此資訊來辨別有沒有權限更新APP)
輸出 APK 步驟三
Jason的Android 快樂應用程式學習班
• 上方是 key store 檔案的密碼, 下方是認證資訊
輸出 APK 步驟四
Jason的Android 快樂應用程式學習班
• 產生 key store 後, 會回到一開始的畫面並填妥資料
輸出 APK 步驟五
Jason的Android 快樂應用程式學習班
• 選擇 APK 輸出位置, 以及 Build Type, 按下 Finish 即可輸出
輸出 APK 步驟六
Jason的Android 快樂應用程式學習班
• 在位置資料夾可找到輸出的 apk
1. .jks 是 keystore 的檔案, 務必妥善保存, 之後產生
apk 更新檔時會再用到
2. .apk 就是我們要上架到 play store 的 APP 安裝檔
上架到 play store
Jason的Android 快樂應用程式學習班
上架到 play store 步驟一
Jason的Android 快樂應用程式學習班
• 搜索 google play developer console, 並點入
p.s 如沒有開發者帳號, google 會要求買一個, 約 NT$ 750
上架到 play store 步驟二
Jason的Android 快樂應用程式學習班
• 點選新增應用程式
上架到 play store 步驟三
Jason的Android 快樂應用程式學習班
• 上傳 APK
上架到 play store 步驟四
Jason的Android 快樂應用程式學習班
• 填寫商店資料, 有打 * 就是必須填
上架到 play store 步驟五
Jason的Android 快樂應用程式學習班
• 填寫其他資訊
上架到 play store 步驟六
Jason的Android 快樂應用程式學習班
• 發佈應用程式
• Title 會影響搜索的排名 (SEO)
• 內容關鍵字會影響搜不搜得到
Jason的Android 快樂應用程式學習班
上架須知
關於Gradle
Jason的Android 快樂應用程式學習班
什麼是 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
Gradle 參考資料

More Related Content

What's hot

JSDC 2015 React-Native 實戰
JSDC 2015 React-Native 實戰JSDC 2015 React-Native 實戰
JSDC 2015 React-Native 實戰Sam Lee
 
React native redux_sharing
React native redux_sharingReact native redux_sharing
React native redux_sharingSam Lee
 
導入 Flutter 前你應該知道的事
導入 Flutter 前你應該知道的事導入 Flutter 前你應該知道的事
導入 Flutter 前你應該知道的事Weizhong Yang
 
簡單上手Android studio
簡單上手Android studio簡單上手Android studio
簡單上手Android studio琨堯 林
 
數學系的資訊人生
數學系的資訊人生數學系的資訊人生
數學系的資訊人生Jintin Lin
 
Keyboard Extension sharing
Keyboard Extension sharingKeyboard Extension sharing
Keyboard Extension sharingGrady Zhuo
 
Android程式設計(6)
Android程式設計(6)Android程式設計(6)
Android程式設計(6)Roy Wang
 
轻松写出优雅的Java代码之check style
轻松写出优雅的Java代码之check style轻松写出优雅的Java代码之check style
轻松写出优雅的Java代码之check styleZhen Li
 
Android gradle 从入门到gg 0
Android gradle 从入门到gg 0Android gradle 从入门到gg 0
Android gradle 从入门到gg 0Jun Liu
 
Android gradle 从入门到gg 3
Android gradle 从入门到gg 3Android gradle 从入门到gg 3
Android gradle 从入门到gg 3Jun Liu
 
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發Edward Kuo
 
炎炎夏日學 Android 課程 - Part 0: 環境搭建
炎炎夏日學 Android 課程 - Part 0: 環境搭建炎炎夏日學 Android 課程 - Part 0: 環境搭建
炎炎夏日學 Android 課程 - Part 0: 環境搭建Johnny Sung
 
Angular Conf 2018 - 原來 Angular 可以這樣玩設定
Angular Conf 2018 - 原來 Angular 可以這樣玩設定Angular Conf 2018 - 原來 Angular 可以這樣玩設定
Angular Conf 2018 - 原來 Angular 可以這樣玩設定Poy Chang
 
Mvp in practice
Mvp in practiceMvp in practice
Mvp in practice彥彬 洪
 

What's hot (16)

JSDC 2015 React-Native 實戰
JSDC 2015 React-Native 實戰JSDC 2015 React-Native 實戰
JSDC 2015 React-Native 實戰
 
React native redux_sharing
React native redux_sharingReact native redux_sharing
React native redux_sharing
 
導入 Flutter 前你應該知道的事
導入 Flutter 前你應該知道的事導入 Flutter 前你應該知道的事
導入 Flutter 前你應該知道的事
 
簡單上手Android studio
簡單上手Android studio簡單上手Android studio
簡單上手Android studio
 
數學系的資訊人生
數學系的資訊人生數學系的資訊人生
數學系的資訊人生
 
Keyboard Extension sharing
Keyboard Extension sharingKeyboard Extension sharing
Keyboard Extension sharing
 
Android程式設計(6)
Android程式設計(6)Android程式設計(6)
Android程式設計(6)
 
轻松写出优雅的Java代码之check style
轻松写出优雅的Java代码之check style轻松写出优雅的Java代码之check style
轻松写出优雅的Java代码之check style
 
Android gradle 从入门到gg 0
Android gradle 从入门到gg 0Android gradle 从入门到gg 0
Android gradle 从入门到gg 0
 
Banquet 14
Banquet 14Banquet 14
Banquet 14
 
Android gradle 从入门到gg 3
Android gradle 从入门到gg 3Android gradle 从入门到gg 3
Android gradle 从入门到gg 3
 
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
[2018 .NET Conf].NET Core與Azure DevOps應用於企業開發
 
炎炎夏日學 Android 課程 - Part 0: 環境搭建
炎炎夏日學 Android 課程 - Part 0: 環境搭建炎炎夏日學 Android 課程 - Part 0: 環境搭建
炎炎夏日學 Android 課程 - Part 0: 環境搭建
 
Swagger
SwaggerSwagger
Swagger
 
Angular Conf 2018 - 原來 Angular 可以這樣玩設定
Angular Conf 2018 - 原來 Angular 可以這樣玩設定Angular Conf 2018 - 原來 Angular 可以這樣玩設定
Angular Conf 2018 - 原來 Angular 可以這樣玩設定
 
Mvp in practice
Mvp in practiceMvp in practice
Mvp in practice
 

Viewers also liked

第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發力中 柯
 
第三堂 Java 語法 (2) 物件導向程式設計
第三堂  Java 語法 (2) 物件導向程式設計第三堂  Java 語法 (2) 物件導向程式設計
第三堂 Java 語法 (2) 物件導向程式設計力中 柯
 
第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)力中 柯
 
第五堂 計算機App與網站瀏覽app
第五堂 計算機App與網站瀏覽app第五堂 計算機App與網站瀏覽app
第五堂 計算機App與網站瀏覽app力中 柯
 
第十堂 Android 5.0 lollipop
第十堂 Android 5.0 lollipop第十堂 Android 5.0 lollipop
第十堂 Android 5.0 lollipop力中 柯
 
第九堂 手機的資料保存
第九堂 手機的資料保存第九堂 手機的資料保存
第九堂 手機的資料保存力中 柯
 
Admob and android
Admob and androidAdmob and android
Admob and android力中 柯
 
Java Basic(1)
Java Basic(1)Java Basic(1)
Java Basic(1)Brad Chao
 
Java_06:Collection
Java_06:CollectionJava_06:Collection
Java_06:CollectionBrad Chao
 
Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制Brad Chao
 
Java_07:Thread
Java_07:ThreadJava_07:Thread
Java_07:ThreadBrad Chao
 
Java_03:進階物件導向觀念
Java_03:進階物件導向觀念Java_03:進階物件導向觀念
Java_03:進階物件導向觀念Brad Chao
 
Java8 time
Java8 timeJava8 time
Java8 timekoji lin
 
Java_02:初探物件導向程式設計
Java_02:初探物件導向程式設計Java_02:初探物件導向程式設計
Java_02:初探物件導向程式設計Brad Chao
 
Java 基本程式設計
Java 基本程式設計Java 基本程式設計
Java 基本程式設計Brad Chao
 
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
 
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)Kuo-Chun Su
 

Viewers also liked (20)

第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發
 
第三堂 Java 語法 (2) 物件導向程式設計
第三堂  Java 語法 (2) 物件導向程式設計第三堂  Java 語法 (2) 物件導向程式設計
第三堂 Java 語法 (2) 物件導向程式設計
 
第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)
 
第五堂 計算機App與網站瀏覽app
第五堂 計算機App與網站瀏覽app第五堂 計算機App與網站瀏覽app
第五堂 計算機App與網站瀏覽app
 
第十堂 Android 5.0 lollipop
第十堂 Android 5.0 lollipop第十堂 Android 5.0 lollipop
第十堂 Android 5.0 lollipop
 
第九堂 手機的資料保存
第九堂 手機的資料保存第九堂 手機的資料保存
第九堂 手機的資料保存
 
Admob and android
Admob and androidAdmob and android
Admob and android
 
Java Basic(1)
Java Basic(1)Java Basic(1)
Java Basic(1)
 
Java_06:Collection
Java_06:CollectionJava_06:Collection
Java_06:Collection
 
Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制
 
Java_07:Thread
Java_07:ThreadJava_07:Thread
Java_07:Thread
 
Java_03:進階物件導向觀念
Java_03:進階物件導向觀念Java_03:進階物件導向觀念
Java_03:進階物件導向觀念
 
Java8 time
Java8 timeJava8 time
Java8 time
 
Java_08:SQL
Java_08:SQLJava_08:SQL
Java_08:SQL
 
Java_02:初探物件導向程式設計
Java_02:初探物件導向程式設計Java_02:初探物件導向程式設計
Java_02:初探物件導向程式設計
 
Java 基本程式設計
Java 基本程式設計Java 基本程式設計
Java 基本程式設計
 
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)
 
沒有 GUI 的 Git
沒有 GUI 的 Git沒有 GUI 的 Git
沒有 GUI 的 Git
 
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
 

Similar to 第十一堂 學習編譯與上架

淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle淺談 Groovy 與 Gradle
淺談 Groovy 與 GradleJustin Lin
 
Grails敏捷项目开发
Grails敏捷项目开发Grails敏捷项目开发
Grails敏捷项目开发Michael Yan
 
如何與全世界分享你的 Library
如何與全世界分享你的 Library如何與全世界分享你的 Library
如何與全世界分享你的 LibraryMu Chun Wang
 
Android 逆向工程心得分享
Android 逆向工程心得分享Android 逆向工程心得分享
Android 逆向工程心得分享EnPing Eric Hsieh
 
Java Build Tool course in 2011
Java Build Tool course in 2011Java Build Tool course in 2011
Java Build Tool course in 2011Ching Yi Chan
 
Android gradle 从入门到gg 1
Android gradle 从入门到gg 1Android gradle 从入门到gg 1
Android gradle 从入门到gg 1Jun Liu
 
Android 程式設計(1)
Android 程式設計(1)Android 程式設計(1)
Android 程式設計(1)Roy Wang
 
3.android 应用程序通用自动脱壳方法研究
3.android 应用程序通用自动脱壳方法研究3.android 应用程序通用自动脱壳方法研究
3.android 应用程序通用自动脱壳方法研究Hsiao Tim
 
1, java intro
1, java intro1, java intro
1, java introted-xu
 
CICD Workshop 20180922
CICD Workshop 20180922CICD Workshop 20180922
CICD Workshop 20180922Earou Huang
 
Vic weekly learning_20160504
Vic weekly learning_20160504Vic weekly learning_20160504
Vic weekly learning_20160504LearningTech
 
專案啟動與設定
專案啟動與設定專案啟動與設定
專案啟動與設定Shengyou Fan
 
Groovy:Candy for Java Developers
Groovy:Candy for Java DevelopersGroovy:Candy for Java Developers
Groovy:Candy for Java Developersfoxgem
 
极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)Will Huang
 
和Android源代码一起工作 | 海豚浏览器 胡继堂
和Android源代码一起工作 | 海豚浏览器 胡继堂和Android源代码一起工作 | 海豚浏览器 胡继堂
和Android源代码一起工作 | 海豚浏览器 胡继堂imShining @DevCamp
 
Phonegap入門
Phonegap入門Phonegap入門
Phonegap入門Roy Chen
 
用 Drone 打造 輕量級容器持續交付平台
用 Drone 打造輕量級容器持續交付平台用 Drone 打造輕量級容器持續交付平台
用 Drone 打造 輕量級容器持續交付平台Bo-Yi Wu
 
Android 2.2 手機應用程式設計:第四章 第一個程式
Android 2.2 手機應用程式設計:第四章 第一個程式Android 2.2 手機應用程式設計:第四章 第一個程式
Android 2.2 手機應用程式設計:第四章 第一個程式Robert Chi
 
Google app engine安裝教學
Google app engine安裝教學Google app engine安裝教學
Google app engine安裝教學勝億 曾
 
Android基礎課程3 - APP上架、廣告與 Facebook 登入
Android基礎課程3 - APP上架、廣告與 Facebook 登入Android基礎課程3 - APP上架、廣告與 Facebook 登入
Android基礎課程3 - APP上架、廣告與 Facebook 登入Duran Hsieh
 

Similar to 第十一堂 學習編譯與上架 (20)

淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle
 
Grails敏捷项目开发
Grails敏捷项目开发Grails敏捷项目开发
Grails敏捷项目开发
 
如何與全世界分享你的 Library
如何與全世界分享你的 Library如何與全世界分享你的 Library
如何與全世界分享你的 Library
 
Android 逆向工程心得分享
Android 逆向工程心得分享Android 逆向工程心得分享
Android 逆向工程心得分享
 
Java Build Tool course in 2011
Java Build Tool course in 2011Java Build Tool course in 2011
Java Build Tool course in 2011
 
Android gradle 从入门到gg 1
Android gradle 从入门到gg 1Android gradle 从入门到gg 1
Android gradle 从入门到gg 1
 
Android 程式設計(1)
Android 程式設計(1)Android 程式設計(1)
Android 程式設計(1)
 
3.android 应用程序通用自动脱壳方法研究
3.android 应用程序通用自动脱壳方法研究3.android 应用程序通用自动脱壳方法研究
3.android 应用程序通用自动脱壳方法研究
 
1, java intro
1, java intro1, java intro
1, java intro
 
CICD Workshop 20180922
CICD Workshop 20180922CICD Workshop 20180922
CICD Workshop 20180922
 
Vic weekly learning_20160504
Vic weekly learning_20160504Vic weekly learning_20160504
Vic weekly learning_20160504
 
專案啟動與設定
專案啟動與設定專案啟動與設定
專案啟動與設定
 
Groovy:Candy for Java Developers
Groovy:Candy for Java DevelopersGroovy:Candy for Java Developers
Groovy:Candy for Java Developers
 
极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)
 
和Android源代码一起工作 | 海豚浏览器 胡继堂
和Android源代码一起工作 | 海豚浏览器 胡继堂和Android源代码一起工作 | 海豚浏览器 胡继堂
和Android源代码一起工作 | 海豚浏览器 胡继堂
 
Phonegap入門
Phonegap入門Phonegap入門
Phonegap入門
 
用 Drone 打造 輕量級容器持續交付平台
用 Drone 打造輕量級容器持續交付平台用 Drone 打造輕量級容器持續交付平台
用 Drone 打造 輕量級容器持續交付平台
 
Android 2.2 手機應用程式設計:第四章 第一個程式
Android 2.2 手機應用程式設計:第四章 第一個程式Android 2.2 手機應用程式設計:第四章 第一個程式
Android 2.2 手機應用程式設計:第四章 第一個程式
 
Google app engine安裝教學
Google app engine安裝教學Google app engine安裝教學
Google app engine安裝教學
 
Android基礎課程3 - APP上架、廣告與 Facebook 登入
Android基礎課程3 - APP上架、廣告與 Facebook 登入Android基礎課程3 - APP上架、廣告與 Facebook 登入
Android基礎課程3 - APP上架、廣告與 Facebook 登入
 

第十一堂 學習編譯與上架