發表文章

目前顯示的是 2019的文章

如何在Mac建立Flutter開發環境

圖片
這篇是以Mac搭配以Android Studio做為開發環境的說明文章 1.到 官方Flutter SDK 下載SDK 下載後預設會是在~/Download底下 下載後的sdk是一個zip檔,所以先建立一個要放置Flutter sdk資料夾,假設在「我的文件」下建立一個名為「sdk」的資料夾 接著切換到sdk目錄底下 指令:  cd ~/Documents/sdk  2.解壓縮 假設從官網下載的版本為: flutter_macos_v1.7.8+hotfix.4-stable.zip 指令:  unzip ~/Downloads/flutter_macos_v1.7.8+hotfix.4-stable.zip  此時會開始進行解壓縮... 於是在sdk資料夾就會出現解壓縮後的Flutter SDK 3.加入環境變數 開啟設定檔 指令: 如果你是用bash:     vi ~/.bash_profile  如果你是用zsh:   vi ~/.zshrc  在設定檔內填入下列路徑  export PATH="$PATH:/Users/使用者名稱/Documents/sdk/flutter/bin"  重新讀入設定檔,如果是用bash:   source ~/.bash_profile  重新讀入設定檔,如果是用zsh:   source ~/.zshrc  於是Flutter的sdk就已經建立好了 4.在Android studio加入Flutter Plugin a.打開偏好設定(Preference),可以從工具列的「IntelliJ IDEA/Preference」或是直接按下「command + ,」 b.搜尋「plugin」,找到「Flutter」,按下「install」 接下來會提醒你也要安裝Dart語言的外掛,按下Yes 安裝完後會要求重啟Android Studio。重啟之後進入「Preference」設定Flutter SDK的路徑 將路徑設定為原本放置sdk的路徑,例如: ~/Document/sdk/flutter 如果路徑指定正確的話,也會同時顯示Flutter的版本 設定Dart SDK的路徑 一樣是在「Languages & Framewor

Gson發生錯誤訊息: JsonParseException: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT

圖片
這個算是剛開始用Gson的時候很容易發生的問題, 這個錯誤訊息是在告訴你:API 回傳的結果是JSON的Array結構,但你的程式卻寫為處理Object結構。 首先看一下你的API回傳的格式,以下列的API為例: https://jsonplaceholder.typicode.com/users 回傳的結果為: 從API的回傳結果可以看得出來,最外層是用Array包住,所以如果程式如同下列使用Object包覆的方式撰寫, (下列使用Kotlin的語法撰寫, response為API回傳後的結果) val gson = Gson() val type = object : TypeToken<UserGson>() {}.type val user = gson.fromJson<UserGson>(response,type) 就會出現 JsonParseException: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT 所以只要將程式改寫為用ArrayList去包住Gson的資料物件,即可解決這個錯誤 val gson = Gson() val type = object : TypeToken<ArrayList<UserGson>>() {}.type val users = gson.fromJson<ArrayList<UserGson>>(response, type) 範例程式碼: https://github.com/ukyo99999/gsonexample Reference: https://github.com/google/gson/blob/master/UserGuide.md https://stackoverflow.com/questions/9598707/gson-thro

如何在Mac架設Gitlab (How to install Gitlab using Docker on Mac)

圖片
1.下載Docker Desktop for Mac https://hub.docker.com/editions/community/docker-ce-desktop-mac 2.安裝Docker Desktop for Mac a. 將下載後的Docker.app拖曳到Application資料夾之後即可完成安裝 b.安裝後第一次開啟時,會要求輸入使用者登入密碼, 之後就會自動完成安裝與啟動Docker服務 c.啟動完成後,可檢查已安裝的docker版本,如果可以正確顯示版本號碼,表示已安裝完成 ,打開Terminal輸入指令 指令: docker -v 3.下載Gitlab的docker image 官方下載頁: https://hub.docker.com/r/gitlab/gitlab-ce/ 這個頁面,其實是要你使用docker指令下載這個image, 所以打開你的terminal,輸入以下的指令 docker pull gitlab/gitlab-ce 下載完成後可以使用指令查看下載後的內容 指令: docker images 4.啟動container 把port從80改成你要想開啟此服務的port,假設為8787 將名稱改成你要的,假設為gitlab 指令: docker run --detach --publish 8787 :80 --name gitlab gitlab/gitlab-ce:latest 檢查container是否已啟動 指令: docker ps -a STATUS的health: 會從starting,變成Up 2 minutes (healthy),就表示已啟動Gitlab這個container成功了 5.開啟Gitlab 在網址列輸入: http://localhost:8787/ 由於初次開啟,所以會自動導入變更密碼頁面,此時只要輸入你的新密碼之後即可開始使用Gitlab了

如何在Facebook開發者後台(Facebook developer console) 使用Google Play代管的key

圖片
有時候開發者會發生過將之前打包apk的key遺失而再也無法上架到Google Play的情形,於是Google後來開放了新的功能:「 由 Google 管理及保護您的應用程式簽署金鑰」 如果你選擇了使用這項功能,則Google play會產生一組key,然後將開發者上架到Google play的apk裡面的key換掉重新簽署。 這樣的好處是,之後開發者就不用再擔心key遺失,等於是Google幫你代管,而且如果你是做App外包的人也很方便,不用幫客戶保管key。 但是因為在開發Facebook api相關的app的過程時,需在Facebook developer console填寫「 開發密鑰雜湊 」,而你很有可能在之前的過開發過程已經簽署了自己做的key(或是Android 內建的debug key),為了debug你可能就已經有在Facebook開發者後台就加入了debug key的SHA-1,所以當你使用「 由 Google 管理及保護您的應用程式簽署金鑰」 的功能時就 會造成facebook無法登入的情型發生。 解決方法 1.開啟Google play到下列的路徑: Google play console/應用程式簽署, SHA-1 憑證指紋, 2.開啟Terminal key入下面的指令 echo [SHA1] | xxd -r -p | openssl base64 例如: echo 19:00:39:0D:4E:C5:87:3F:B5:E4:7A:45:45:BA:C4:25:C9:40:F6:D1   | xxd -r -p | openssl base64 3.將運算出來的結果復製到Facebook開發者後台貼上

Eclipse 安裝失敗: Eclipse/plugins/org.eclipse.equinox.launcher_1.5.200.v20180922-1751.jar

最近重新下載新的Eclipse,發現新下載的Eclipse安裝時就會發生錯誤訊息而直接停止執行:  Failed to find a Main Class in "/Applications/STS.app/Contents/MacOS//../Eclipse/plugins/org.eclipse.equinox.launcher_1.5.200.v20180922-1751.jar". 連帶的 STS(Spring Tool Suite) , 由於也是使用Eclipse,所以也出現了相同的錯誤而無法安裝  上網查到的解決方法,說要更新至最新版的jdk,即可解決。而上Java官網才發現,JDK 8已於2019一月份停止更新了,目前最新的版本是JDK 11,直接下載 Oracle JDK 安裝後就解決了。