在Android中使用2016新版Firebase加快開發過程(二)

作者 | 2016-05-20

[新版] 在新版Android Studio 2.2整合了Firebase功能,並提供更方便的方法導入與設計,可參考:

使用Android Studio 2.2.2 開發Firebase – Database篇

使用Android Studio 2.2.2 開發Firebase – E-mail 登入篇

使用Android Studio 2.2.2 開發Firebase – Database篇 part2


本篇介紹如何在Android專案中導入2016最新版的Firebase函式庫,以及必須注意與更新的項目與工具。在進行本篇實作內容之前應先參考:
在Android中使用2016新版Firebase加快開發過程(一)

Android端設計

使用一個全新專案練習與Firebase的連結,請建立一個新專案,名稱為「FireChat」,產生空白活動(Empty Activity)即可,如下:

A6084

導入Firebase Android API

專案必須導入Firebase所提供的Android API,這是專為Android程式設計師設計的類別庫,可快速使用API存取Firebase雲端資料庫,請在功能表上選擇「File/Project Structure」進入專案架構設定,如下圖:

A6085

請點擊左方的「Cloud」項目並勾選其右方的Firebase,可在本專案中啟用Firebase Android API,如下圖:

A6086

完成設定後,會自動為專案加入INTERNET網路連線權限,以下是AndroidManifest.xml的內容:

A6087

ListView與Adapter

請在「res/layout/activity_main.xml」中加入一個ListView,版面的原始碼如下:

再回到MainActivity的onCreate方法中,取得ListView元件,並為其設計一個ArrayAdapter,程式碼如下:

連結Firebase取得資料

在MainActivity內的onCreate中必須先設定Firebase,使用setAndroidContext方法,如下:

之後,再設計與Firebase資料庫連線的程式碼,本例將連結至「contacts」記錄,程式碼如下:

請在模擬器上執行專案,執行結果如下:

A6090

畫面上以ListView清單元件顯示目前Firebase雲端上的contacts記錄。

自動更新

請回到Firebase的Dashboard網頁頁面下,在contacts下再新增一筆id為3的記錄,如下圖:

A6091

在Android上的ListView會即時更新剛新增的資料(Eric),如下圖:

A6092

這是因為在Android的程式碼中,我們在實作的onChildAdded中設計以下程式碼的原因:

這個範例的目的是為了能夠先熟悉Firebase的使用方式,範例APP使用的是共用的一個資料集(contacts),並未提供個別使用者的儲存方式,下一篇將介紹的是如何儲存每個APP使用者其個人化的資料。

本階段完成的程式碼為

檔案庫(Repository): https://github.com/android66/FireChat.git

版本名稱: Initial Commit

導入Firebase至Android專案

自2016年5月Google IO發表新版Firebase服務後,Firebase的網址由舊的「firebase.com」改為「firebase.google.com」,因此,自2016年5月後申請的Firebase專案使用主控台使用的是新的網址,如:

https://console.firebase.google.com/project/xxx

新版的專案在Android中實作如帳號驗證、註冊等功能時,都必須在Android Studio中設定Firebase的類別庫與服務,請讀者按照以下步驟進行導入。

更新SDK工具

新版的Google Play Services函式庫才支援新版Firebase,必須將SDK工具中的「Google Play Services(版本30以上)」與「Google Repository(版本26以上)」都更新到規定的版本之上,請在Android Studio中點擊功能表的「Tools/Android/SDK Manager」開啟SDK管理器,並切換至「SDK Tools」頁籤,如下圖:

A6111

在下方勾選更新Google Play Services與Google Repository兩項,並按下「Apply」套用進行下載與安裝,如下圖:

A6050

確認安裝兩項工具時請按下OK,如下圖:

A6051

安裝完成後,再進行下一節更新模擬器

更新模擬器到最新版本

由於新版的Firebase在Android中的許多功能必須使用到裝置內的「Google Play Services」服務,而Firebase新版才推出不久,若模擬器的版本不夠新,可能會在執行時出現「Google Play services out of date. Requires 9080000 but found 8489470」這類的錯誤,這表示並不是專案的版本問題,而是模擬器內的Google Play Services版本太舊,不支援新的Firebase的功能。

請讀者先關閉目前正執行的模擬器,並在SDK管理器中切換至「SDK Platforms」頁籤,再勾選「Show Package Details」顯示套件進一步的詳細資訊,如下圖:

A6140

勾選後在Android 6.0項目下的「Google APIs Intel x86 Atom System Image」的右方若有「Update Available:14」時,代表有新版本可更新,請勾選該項目左邊,再按下「Apply」套用並更新,如下圖:

A6141

出現更新項目的對話框,請按下OK,如下圖:

A6121

安裝完成後再開啟模擬器,即擁有可運行最新版本Firebase的測試環境,接下來可關閉SDK Manage後回到Android Studio畫面。

取得開發環境金鑰的指紋碼

每一台安裝Android SDK工具的系統中都會自動產生開發專用金鑰,稱為「debug keystore」,開放金鑰檔放在使用者家目錄的「.android」目錄下,檔名為「debug.keystore」,使用JDK的keytool工具可以下指令列出該金鑰的指紋碼,常需要在申請Google服務時提供指紋碼。而Android Studio使用的Gradle工具已提供很方便的建置設定,讓開發者可以更快速方便地取得開發金鑰的指紋碼,請按一下在Android Studio畫面最右邊(偏上方)的Gradle工具邊緣視窗,可展開Gradle工具,如下圖:

A6114

展開後,若未出現如上圖的專案(如FireChat)項目時,請按下上方的重新整理按鈕,即可掃描出專案的Gradle工作項目,如下圖:

A6115

請展開專案名稱下的「Task/android/」連擊以執行「signingReport」項目,它是一個能夠執行簽署金鑰的項目,如下圖:

A6103

執行後,在Android Studio的下方「Run」視窗會出現執結果,請選取並複製「SHA1」後方的指紋碼,如下圖:

A6106

在下一個步驟將會需要這個指紋碼。

取得google-services.json設定檔

在Android應用程式上使用Google Services服務與功能時,大都需先到Google網站上申請,近年來Google開始建議使用「google-services.json」設定檔方式在Android應用程式中導入功能,它是一個內有Google帳號與API資訊的設定檔,必須由Google網站自動依設定產生後,放在Android Studio的專案特定目錄下,請回到Firebase的主控台網頁中,按下左上方的專案名稱,也就是總覽功能,如下圖:

A6116

在總覽頁面中,點擊「將Firebase加入您的Android應用程式」(如上圖右方),進入設定畫面,請在套件名稱欄中輸入目前Android Studio專案使用的套件名稱,如筆者的「com.tom.firechat」,再將前一步驟已複製的指紋碼貼在「偵錯簽署憑證SHA1」中,如下圖:

A6105

完成後請按下「新增應用程式」,進入第二個設定畫面,在這畫面中會出現設定檔的下載對話框,詢問要將產生好的「google-services.json」存放在那個資料夾,請讀者先放在桌面或找得到的地方,複製該檔案,畫面如下圖:

A6108

畫面中提示如何將檔案放置在專案的app資料夾下,請先將Android Studio中的專案畫面由「Android」切換為「Project」真實路徑,如下圖:

A6142

完成後請回到Firebase主控台中按下「繼續」,進入最後一個設定畫面,如下圖:A6109

最後一個畫面說明如何在build.gradle中加入必要的函式庫與外掛語法,請參考以下步驟。

設定類別庫與外掛

請將Android Studio專案視窗下拉切回Android配置,進行後續的第三方類別庫與外掛設定,如下圖:

A6117

1. 專案層級build.gradle

展開專案中的「Gradle Scripts」,開啟「build.gradle(Project:FireChat) 」,如下圖:

A6118

在dependencies區塊中加入「classpath ‘com.google.gms:google-services:3.0.0′」,如下:

2. app模組的build.gradle

再開啟「build.gradle(Module:app」,在檔案的最尾端加上:

 apply plugin: ‘com.google.gms.google-services’

完成後,請讀者在dependencies區塊中再多加一行:

compile ‘com.google.firebase:firebase-auth:9.0.0’

最後完成如下的片段:

最後請按下上方同步功能按鈕,或功能表中的「Tools/Android/Sync Project with Gradle Files」,完成後,即可進行後續的功能實作。

在depenencies區塊中加入的是Firebase的功能項目類別庫,需要什麼功能就在app模組的build.gradle中加入,功能項目有:

功能類別庫名稱與版本對應的功能
com.google.firebase:firebase-core:9.0.0Analytics
com.google.firebase:firebase-database:9.0.0Realtime Database
com.google.firebase:firebase-storage:9.0.0Storage
com.google.firebase:firebase-crash:9.0.0Crash Reporting
com.google.firebase:firebase-auth:9.0.0Authentication
com.google.firebase:firebase-messaging:9.0.0Cloud Messaging / Notifications
com.google.firebase:firebase-config:9.0.0Remote Config
com.google.firebase:firebase-invites:9.0.0Invites
com.google.firebase:firebase-invites:9.0.0Dynamic Links
com.google.firebase:firebase-ads:9.0.0AdMob
com.google.android.gms:play-services-appindexing:9.0.0App Indexing

本例加入的是下一篇文章需使用的Authentication認證類別庫。

下一篇談的是使用Firebase的Email認證功能,快速開發出會員登入功能:

Android中使用Firebase的E-mail登入功能 (三)

相關文章:

Category: Android Firebase 標籤:, , , ,

關於 Hank Tom

專長為程式語言、雲端服務開發,Linux系統管理, 任職:利拓科技 技術長,海林行動科技 技術總監 輔仁大學 兼任助理教授 ,為 Android高效入門>深度學習、CentOS 7建置、管理與伺服器架設實戰、Java網路程式設計、雲端網頁程式設計-Google App Engine應用實作 等書作者

使用Facebook直接回應

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *