為何捐款
API 瀏覽器
升級指南
新功能!
quasar.config 檔案
將專案轉換為搭配 Vite 的 CLI
瀏覽器相容性
支援 TypeScript
目錄結構
命令列表
CSS 預處理器
路由
懶加載 - 代碼分割
處理資源
啟動檔案
預取功能
API 代理
處理 Vite
處理 process.env
使用 Pinia 進行狀態管理
使用 Vuex 進行狀態管理
Linter
測試與稽核
開發行動應用程式
Ajax 請求
開放開發伺服器給公眾
Quasar CLI 搭配 Vite - @quasar/app-vite
Capacitor 疑難排解與提示

$q.capacitor

當您使用 Capacitor 模式開發行動應用程式時,可以在您的 Vue 檔案中存取 $q.capacitor。這是全域 Capacitor 物件的別名。

Android 提示

Android 遠端偵錯

如果您正在偵錯 Android 應用程式,可以使用 Google Chrome 遠端偵錯 透過 USB 纜線連接到您的 Android 手機/平板電腦。它也可用於模擬器。

這樣一來,您就可以直接使用 Chrome 開發人員工具來偵錯在模擬器/手機/平板電腦上執行的應用程式。檢查元素、查看主控台輸出等等。

接受授權

如果您在完成 Android 建置時遇到問題,並看到類似以下訊息:

> Failed to install the following Android SDK packages as some licenses have not been accepted.

如果是這種情況,您需要接受所有授權。幸好有一個工具可以做到這點:

  • Linux: sdkmanager --licenses
  • macOS: ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
  • Windows: %ANDROID_SDK_ROOT%/tools/bin/sdkmanager --licenses

安裝 SDK 後找不到 Android SDK

WARNING

環境變數 ANDROID_HOME 已被棄用,並由 ANDROID_SDK_ROOT 取代。根據您的 Android Studio 版本,您可能需要其中一個或另一個。同時設定兩者也無妨。

某些較新的 Debian 基礎作業系統(例如 ubuntu、elementary OS)在您安裝並(正確)設定環境後,可能會讓您遇到 Android SDK not found. 的問題。

這可能有兩個不同的原因:通常路徑配置不正確。第一步是驗證您的路徑是否設定正確。這可以透過執行以下命令來完成

$ echo $ANDROID_HOME

# or

$ echo $ANDROID_SDK_ROOT

預期輸出應該是類似於 $HOME/Android/Sdk 的路徑。之後執行

$ ls -la $ANDROID_HOME

# or

$ ls -la $ANDROID_SDK_ROOT

確保資料夾包含 SDK。預期輸出應該包含類似「tools」、「sources」、「platform-tools」等資料夾。

$ echo $PATH

輸出應包含 Android SDK 的「tools」資料夾和「platform-tools」工具的各一個項目。這可能看起來像這樣

/home/your_user/bin:/home/your_user/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/your_user/Android/Sdk/tools:/home/your_user/Android/Sdk/platform-tools

如果您確定您的路徑已正確設定,但仍然收到錯誤訊息,您可以嘗試以下修復方法:手動替換 Android Studio 的「tools」資料夾

Android Studio

在 Android Studio 中(如果您在 /src-capacitor/android 上開啟它),您會看到一則訊息,建議您升級 Gradle 版本。請勿升級 GRADLE,因為這會破壞 Capacitor 專案。任何其他要求的升級也是如此。

Gradle upgrade

如果您遇到任何 IDE 錯誤,請點擊 File > Invalidate caches and restart。

Gradle upgrade

在 Linux 上設定裝置

當您嘗試直接在 Android 手機/平板電腦上執行您的應用程式時,可能會遇到 ?????? no permissions 問題。

以下是如何解決此問題

# create the .rules file and insert the content
# from below this example
sudo vim /etc/udev/rules.d/51-android.rules
sudo chmod 644   /etc/udev/rules.d/51-android.rules
sudo chown root. /etc/udev/rules.d/51-android.rules
sudo service udev restart
sudo killall adb

51-android.rules 的內容

SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0e79", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="413c", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="091e", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="24e3", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2116", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0482", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="17ef", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0409", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2080", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2257", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="10a9", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1d4d", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0471", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04da", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1f53", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04dd", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0930", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1bbb", MODE="0666"

現在執行 adb devices 應該可以找到您的裝置。

iOS 提示

iOS 遠端偵錯

如果您正在偵錯 iOS 應用程式,可以使用 Safari 開發人員工具透過 USB 纜線遠端偵錯連接到您的 iOS 手機/平板電腦。它也可用於模擬器。

這樣一來,您就可以直接使用 Safari 開發人員工具來偵錯在模擬器/手機/平板電腦上執行的應用程式。檢查元素、查看主控台輸出等等。

首先在 Safari 的「設定」中啟用「開發人員」選單選項。然後,如果您導航到「開發人員」選單選項,您將在頂部附近看到列出的模擬器或已連接裝置。從這裡您可以開啟開發人員工具。

狀態列和螢幕缺口安全區域

由於手機有狀態列和/或螢幕缺口,因此在 Capacitor 上建置時,您的應用程式樣式可能需要進行一些調整。為了防止應用程式的部分內容跑到狀態列後面,有一個全域 CSS 變數可用於建立「安全區域」。然後,此變數可以應用於應用程式的頂部和底部內距或邊距。

Quasar 預設在 QHeader/QFooter 和 Notify 中支援這些 CSS 安全區域。然而,務必始終在多個型號上檢查您的 Capacitor 建置,以查看您的應用程式的所有情況是否都正確處理安全區域。

如果您需要手動調整 CSS,可以使用

// for your app's header
padding-top: constant(safe-area-inset-top) // for iOS 11.0
padding-top: env(safe-area-inset-top) // for iOS 11.2 +
// for your app's footer
padding-bottom: constant(safe-area-inset-bottom)
padding-bottom: env(safe-area-inset-bottom)

當然,您也可以根據您的應用程式,將上述範例與 margin 而非 padding 一起使用。