在 Eclipse 中導出簽名 APK 時,常遇到兩大阻礙:Lint 錯誤導致導出中斷、Keystore 信息中包含逗號導致 keytool 失敗。本文提供完整解決方案,助你順利完成發布簽名。
右鍵項目 → Android Tools → Export Signed Application Package 時,彈出致命錯誤:
Lint found fatal errors while assembling a release target. The following issues were found: MissingTranslation: "app_name" is not translated in "af" (Afrikaans), "am" (Amharic), "ar" (Arabic) ...
原因:ADT 預設啟用 Run full error check when exporting app,且 MissingTranslation 級別為 Fatal。項目依賴 appcompat_v7 等庫帶入大量語言資源,導致主項目 strings.xml 被要求翻譯所有語言。
MissingTranslationFatal 改為 Warning 或 Ignore優勢:保留其他 Lint 檢查(如未使用資源、性能隱患),僅放寬翻譯檢查。
同頁面取消勾選 Run full error check when exporting app。缺點:跳過所有 Lint 檢查,可能漏掉真正錯誤。
創建新 Keystore 時,填寫 City or Locality(城市/地區)欄位輸入 Beijing, China 或 GuangXi, China,點擊下一步報錯:
keytool error: java.io.IOException: Incorrect AVA format
keytool 解析 Distinguished Name (DN) 時,將逗號 , 視為字段分隔符(RFC 2253)。DN 格式為:
CN=Common Name, OU=Organizational Unit, O=Organization, L=Locality, ST=State, C=Country
若 L=GuangXi, China,解析器誤以為 L=GuangXi 結束,China 為下一字段,導致格式錯誤。
GuangXi China 或 GuangXi; ChinaGuangXi\, China(Windows 下可能需雙轉義 GuangXi\\, China)其他特殊字符同理需轉義:+ " \ < > ; 等。
my-release-key.keystore) → 設置密碼my-key-alias25(建議 25 年以上,Google Play 要求 2033 年後仍有效)Your NameDepartmentCompany NameBeijing China (無逗號)BeijingCN# 1. 生成 Keystore
keytool -genkeypair -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 9125 -dname "CN=Your Name, OU=Dept, O=Company, L=Beijing China, ST=Beijing, C=CN" -storepass keystorePass -keypass keyPass
# 2. 簽名 APK (使用 apksigner,Android 24.0.3+ 推薦)
apksigner sign --ks my-release-key.keystore --ks-pass pass:keystorePass --key-pass pass:keyPass --out app-signed.apk app-unsigned.apk
# 3. 驗證簽名
apksigner verify --print-certs app-signed.apk
命令行方式支持 DN 中包含逗號(用引號包裹整個 -dname 值),且適合 CI/CD 自動化流水線。
signingConfigs 統一管理,構建腳本化,避免 Eclipse 歷史包袱。掌握這兩大核心問題的解決之道,Eclipse 簽名 APK 將不再是攔路虎,而是順暢的發布環節。