[Cordova] 在 Mac 上編譯 Android app 時,出現 java.awt.HeadlessException

[Cordova] 在 Mac 上編譯 Android app 時,出現 java.awt.HeadlessException

呃呃… 一陣子沒用 Cordova,

就接連爆了一些問題 Orz…

 

昨天解決了 用 Cordova 編譯 Android app 時找不到 Gradle? 的問題之後,

cordova compile 又冒出另一個錯誤訊息,

說 Failed to create component for ‘dialog’ reason: java.awt.HeadlessException:

BUILD FAILED in 1s
(node:55870) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: /MultiLibraryLogin/platforms/android/gradlew: Command failed with exit code 1 Error output:
FAILURE: Build failed with an exception.

* Where:
Script '/MultiLibraryLogin/platforms/android/CordovaLib/cordova.gradle' line: 147

* What went wrong:
Failed to create component for 'dialog' reason: java.awt.HeadlessException
> java.awt.HeadlessException (no error message)

 

原本想說是不是跟我有用 cordova-plugin-dialogs 這個外掛有關,

但升級了這個 plugin 也沒用 (真的是看到黑影就開槍)…

上網查了一下,好像是因為在 sign APK 的時候,

原本會跳出對話框要求輸入密碼,

但新版的 Gradle 在 Mac 上跑到對話框時會出現問題…

 

簡單的解法,就是把密碼寫在 platforms/android/release-signing.properties 裡面,

(可參考 建立 sign 過的 Android APK 版本 這篇)

雖然密碼寫在裡面有點不太安全,不過我也懶得找別的方法了…

 

這是我的 release-signing.properties 的內容,

keyPassword 和 storePassword 就分別填 key 的密碼和 key store 的密碼:

storeFile=/AndroidKeyStore
storeType=jks
keyAlias=androidkeystore
keyPassword=myKeypassword
storePassword=myStorepassword

 

這樣子再執行 cordova compile,在對 APK 簽章時就沒出現問題了~

(本頁面已被瀏覽過 24 次)

發表迴響

你的電子郵件位址並不會被公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料