使用 Eclipse ADT 匯出簽名版 APK 時,常遇到兩大阻礙:Lint 缺少翻譯報錯、Keystore 憑證資訊含逗號導致 keytool 失敗。
錯誤訊息:MissingTranslation: "app_name" is not translated in af, am, ar, bg, bn-rBD, ca, cs, da, de...
原因:專案依賴 appcompat_v7 內含大量語系字串,導出時預設啟用完整 Lint 錯誤檢查。
解決:
或在專案 lint.xml 針對特定字串抑制警告,保持嚴格檢查同時避免誤報。
錯誤訊息:keytool error: java.io.IOException: Incorrect AVA format
原因:keytool 視逗號、加號、引號、斜線、大小於號、分號為特殊字元。慣例填寫 City: "Taipei, Taiwan" 會導致解析失敗。
解決:
Taipei Taiwan。Taipei\, Taiwan(僅限命令列 keytool,Eclipse GUI 不支援)。其他特殊字元同理需跳脫或避免使用。
keytool -genkeypair -alias mykey -keystore my.keystore \
-dname "CN=MyApp, OU=Dev, O=MyCompany, L=Taipei\, Taiwan, ST=Taiwan, C=TW"
jarsigner -keystore my.keystore -signedjar app_signed.apk app_unsigned.apk mykey
zipalign -v 4 app_signed.apk app_aligned.apk
命令列 keytool 支援跳脫逗號,彈性較高。