[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 簽章時就沒出現問題了~
(本頁面已被瀏覽過 566 次)