動手使用 Cordova

其實比較想打成動手踩坑 Cordova… 為啥不是 install 完就可以用啊,還有一堆有的沒的版本套件問題

分享

其實比較想打成動手踩坑 Cordova…
為啥不是 install 完就可以用啊,還有一堆有的沒的版本套件問題

以下主要流程都參照這位前輩的文章操作,然後遇到問題再去問谷哥
[Apache Cordova]實作第一個Hello Cordova,並且同時build到Web、iOS

第一步:安裝 nvm

下面兩句挑一個執行curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash`wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

接著將下面這段export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

然後去執行 mac 預設的 .zshrc 檔案 source ~/.zshrc

如果執行完上面後執行command -v nvm 後出現nvm: command not found 表示你安裝失敗了 You failed

才第一個步驟就失敗,太挫折了吧!

你需要先安裝 xcode 然後再把上面的 source ~/.zshrc 跑一次應該就會可以讀到nvm了 吧?

第二步:安裝 node.js

這邊我們直接粗暴不解釋安裝最新的 lts 版nvm install --lts
nvm use v16.13.1 #在這個當下這個是最新的 lts 版本

第三步:安裝cordovanpm install -g cordova

接著到你喜歡的地方建立專案 cordova create [project-name]
然後再粗暴的直接建立 web, android, ios 版本的 platformcordova platform add browser
cordova platform add ios
cordova platform add android

建立起來是一回事,要能跑又是另一回事。

第四步:運行

Android

接下來要載 android 對應的運行軟體 android-studio 安裝完後 輸入
codorva requirements 這時候會出現提示說有東西沒安裝……暗 人生好黑暗

找到這個 SDK Manager 打開它,把喜歡的 android 版本勾一勾,還有 command tool 也要

安裝好之後 匯入剛剛的 android app platform 路徑後,就可以開始測試這個專案能不能跑啦~ 我開玩笑的,一進專案就看到下方 event log 有一些錯誤訊息,說抓不到蝦咪蛙哥設定檔

有兩種方可以解決這個問題,第一個方法是先用 android studio 建立一個新的專案,然後他會自動產出這個檔案 local.properties 然後內容如下

將這個檔案複製到剛剛 cordova 的 app/platforms/android/local.properties 之後重新開啟這個專案讓系統重新讀檔完就可以 try run 了。

(第二個方法就是照著我上面的圖片直接見一個相同的檔案在合適的位置)

###第三步:嘗試修改 html 內容看看結果

修改 app/www/index.html 的內容然在 app路徑進行編譯: cordova build
很高的機率會出現一些錯誤訊息說 請指定 ANDROID_SDK_ROOT 路徑等…或是 JAVA 版本不吻合。

這時候就要去下載那個版本的 JAVA 然後把這段貼在
~/.zsh_profile 裡面,一般來說 JAVA 會是在那個路徑JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_311.jdk/Contents/Home
export JAVA_HOMEANDROID_HOME="/Users/cl/Library/Android/sdk/"
export ANDROID_HOME;ANDROID_SDK_ROOT="/Users/cl/Library/Android/sdk/"
export ANDROID_SDK_ROOT;

之後再在 ~/.zsh 貼上下面這段後,執行 source ~/.zshrc 再回到去執行build指令看看會出現什麼# include .zsh_profile if it exists
if [ -f $HOME/.zsh_profile ]; then
   . $HOME/.zsh_profile
fi

如果出現這段錯誤訊息
Could not find an installed version of Gradle either in Android Studio,
or on your system to install the gradle wrapper. Please include gradle
in your path, or install Android Studio

我參考這篇 ionic 2 — Error Could not find an installed version of Gradle either in Android Studio

於是就在 ~/.zsh_profile 裡面再增加GRADLE_PATH="/Users/[account]/.gradle/wrapper/dists/gradle-[x.x.x]-bin/[--token--]/gradle-[x.x.x]/bin"
export GRADLE_PATHANDROID_STUDIO="/Applications/Android Studio.app/Contents/MacOS"
export ANDROID_STUDIOexport PATH="$PATH:$GRADLE_PATH:$ANDROID_STUDIO"

接著繼續重新執行 build

終於成功編譯 android app 啦

IOS

上個步驟有可能會跳出個錯誤訊息說找不到 Xcode,這時候你就要去下載 Xcode。可以去官網下載或是從 App store 下載

安裝完後再 build 一次後會出現 ** BUILD SUCCEEDED **
接著執行 cordova emulate ios 然後讓子彈飛一下會彈出 ios 的運行畫面
我是用 vscode 的 terminal 也可以順利呼叫出 ios 模擬器

大工告成

Read more

Gaze Guard 短影片旁白的 TTS 成本與隱私防護示意圖

短影片旁白的成本,其實比我想像低

我最近在做一支 Gaze Guard 的 20 秒產品介紹影片。 原本想說簡單做個動畫就好。 後來想說如果有配音,會感覺比較生動也比較能夠描述使用的情境和達成的效果。 這次我測了什麼 我測的是產品介紹影片用的英文旁白。 工具底層使用的是 Edge TTS,也就是 Microsoft Edge 的線上 Text-to-Speech 服務。常見的底層工具是 edge-tts。 這不是正式 Azure Speech API 的計費路徑。 在我這次的環境裡,它沒有要求 API key,也沒有回傳可見的 per-use billing。 所以這次測試本身,比較像是快速 prototype。 如果未來要正式商用、穩定大量產出,就要回頭看 Azure Speech、OpenAI TTS、ElevenLabs 這類正式付費方案。

By SteepingLogic
用 Cloudflare Tunnel,從外面連回本機 Hermes Dashboard

用 Cloudflare Tunnel,從外面連回本機 Hermes Dashboard

# 用 Cloudflare Tunnel,從外面連回本機 Hermes Dashboard 我有一台 local Hermes。 平常它就在自己的機器上跑。 可能是家裡的桌機。 可能是 NAS。 可能是一台一直開著的 Linux box。 也可能只是我自己的筆電。 問題是,人一離開那個網路,Hermes dashboard 就變成一個只存在於 localhost 的東西。 我想在外面打開它。 但我沒有 static IP。 沒有買網域。 也不想進路由器開 port forwarding。 因為那條路通常長這樣: * 找 public IP * 設定 NAT * 開 port * 處理防火牆 * 補 HTTPS * 設定憑證 * 再擔心 origin IP 被掃 非常友善。 所以這篇先走另一條路:

By SteepingLogic
Invoshot 開發日記|正向回饋

Invoshot 開發日記|正向回饋

想信很多人在開發的時候都常常會做一件事,那就是: 不斷地反覆思考,在腦袋內把流程跑過很多次,然後思考哪裡可以做得更好 不限坐在電腦前的時後,可能是在捷運上,在人行道上, 在馬桶上或是在洗澡的時候 🤪 我不斷地在想:AI 辨識完一張發票後,使用者接下來最需要的是什麼? 每個欄位都要核對嗎? 這麼多欄位真的不會漏看嗎? 所以我在 Invoshot 裡加了提醒功能。 辨識結果出來後,系統會把比較需要注意的地方標出來。 不是把所有不確定都丟給使用者,而是把他真正需要介入的那幾秒鐘留出來。 今天收到一則訊息: 今天用了有新增提醒功能很棒! 真的有變輕鬆 😎 看到這句的時候,我第一個想到的是: 原來那些只是我腦內風暴的優化項目,使用者是真的可以感受到差異的! 感覺又有動力了!

By SteepingLogic