萬解,遺失 Keystore 密碼但 IDE 還記得?用 Build Log 把密碼「抓」出來
kidneyweakx
December 6, 2025 (Updated: December 19, 2025)
最遙遠的距離,是密碼就在 IDE 裡但我看不見
相信很多 Android 開發者都遇過這個崩潰瞬間:準備打包 Release 版本時,發現很久沒輸入的 Keystore 密碼忘記了!雖然 Android Studio 很貼心地顯示「Remember passwords」並自動填入,但它就是只給你看 ••••••••,死都不肯顯示明文。
難道只能向 Google 申請重置 Upload Key 或是暴力破解嗎?
別急!只要 Android Studio 還記得密碼,我們就能透過 Gradle 把它「攔截」下來。
# 原理說明
當我們執行 Generate Signed Bundle / APK 時,Android Studio 為了讓 Gradle 能夠進行簽署,必須在背後將密碼「注入」給 Gradle。我們只要在 build.gradle 裡埋伏一段程式碼,監聽這個注入動作,就能把密碼印在 Log 裡。
# 實作步驟 (Kotlin DSL 版本)
Step 1:埋伏監聽腳本
打開你的 App 層級 build.gradle.kts 檔案,將以下這段程式碼貼到檔案的最尾端:
Kotlin
// ==========================================
// 密碼攔截腳本 (用完請務必刪除!!!)
// ==========================================
project.afterEvaluate {
val storePass = project.properties["android.injected.signing.store.password"]
val keyPass = project.properties["android.injected.signing.key.password"]
if (storePass != null || keyPass != null) {
println("\n========== [抓到了!密碼在這裡] ==========")
println("Store Password: $storePass")
println("Key Password: $keyPass")
println("=========================================\n")
}
}
Step 2:觸發打包
- 點擊 Android Studio 頂部選單 Build > Generate Signed Bundle / APK...。
- 依照正常流程,填選 Keystore 路徑。
- 關鍵一步: 務必確認 "Remember passwords" 是勾選狀態(這樣 IDE 才會把密碼吐出來)。
- 點擊 Next > Create 開始打包。
Step 3:查看 Log
打包開始後,打開底部的 Build 分頁,點擊左側的 "Toggle view" (清單圖示) 切換成純文字模式。
在茫茫 Log 海中搜尋關鍵字:抓到了。
你會看到類似這樣的畫面:
Plaintext
========== [抓到了!密碼在這裡] ==========
Store Password: your_lost_password_123
Key Password: your_lost_password_123
=========================================
Step 4:備份與銷毀 (最重要!)
恭喜你找回密碼!
- 請立刻把密碼記在 1Password 或安全的地方。
- 立刻刪除
build.gradle.kts裡剛剛那段程式碼。 - 如果這段程式碼不小心被 Commit 到 Git,請務必修改 Git History 或視為密碼已洩漏。
# 結語
這個方法利用了 Gradle 的 project.properties 機制,直接讀取 IDE 注入的參數,不需要安裝任何破解工具,安全又快速。希望能幫到同樣金魚腦的開發者們!
Related Articles
No File is an Island: Unraveling Swift Dependencies and Architecture
在 Swift 的世界中,我們習慣了強大的 Xcode 和簡潔的語法,但隨著專案規模的成長,一個隱形的怪獸會開始在程式碼中徘徊:那就是失控的依賴關係
Hexo 升級 V5 排除疑難雜症
因為剛好把電腦重灌,然後這個 blog 就躺在D槽等著我幫他換新的環境,然後他就被我快樂的升級了。 hexo 更新 v5.0 hexo 更新到 V5 的步驟相當容易 就可以自動更新了,但是版本大更新,往往都會附帶一些小問題,像他就給我了幾個warning 更新後 Error 解決方法 修改\ config.yml的部分成新版的,原始external\ link只有true的選項,更新後可決定是否開...
C# 用 VID 和 PID 自動連線 serialport
原本 C 的 serial port function官方範例,是類似這樣的 這種方法每次開啟都還要再去跟改port相當的麻煩,所以就找了別人針對windows寫的function,再返回靜態的 port string 給 ,效果相當好。 完整內容可參照下方連結😁 code來源
