Android 키 스토어 입력에 쉼표를 사용하지 마십시오.

Azure DevOps의 Android Signing



Xamarin 앱 빌드를 Azure DevOps(이전 VSTS)에 맡기고 있습니다. 서명도 Android Signing 작업에서 할 수 있습니다.

Android Signing 버전 3.*



최근 Android Signing의 Version 3.*이 나왔으므로 조속히 시도해 보았습니다. 버전 3.*에서는 서명에 apksigner.jar을 사용합니다. .

apksigner 실패



그런데 잘 되지 않았던 것입니다. 빌드가 Android Signing에서 실패합니다. jarsigner.exe를 사용하는 버전 2. *는 괜찮습니다.

apksigner만 로컬 PC에서 실행해 보았습니다만, 마찬가지로 실패하는 상태입니다.

"Invalid trailing backslash" 예외



다음과 같은 예외가 발생합니다.
>apksigner.bat sign -ks Hoge.keystore HogeApp.apk
Keystore password for signer #1:
Exception in thread "main" java.security.SignatureException: Failed to generate v1 signature
...
Caused by: java.security.cert.CertificateException: Failed to sign using signer "HOGE"
...
Caused by: java.security.cert.CertificateParsingException: Failed to parse signer certificate issuer name
...
Caused by: java.io.IOException: Invalid trailing backslash
...

원인은 "~ Co., Ltd."



키 저장소를 만들 때 조직에 Hoge Co., Ltd.를 입력했지만 이것이 원인이었습니다. 키스토어에 입력한 정보는, 콤마를 백슬래시로 이스케이프 해, Piyo, OU=Fuga, O=Hoge Co.\, Ltd., L=Minato-ku, S=Tokyo, C=JP 라고 하는 형태로 .keystore 파일에 포함되고 있습니다. apksigner.jar가이 이스케이프 해제에 실패한 것 같습니다.

쉼표를 사용하지 않도록 방지



따라서 쉼표를 포함하지 않도록 조직을 HOGE로 변경하여 .keystore 파일을 다시 만들고 피했습니다.

참조



  • APK에 수동으로 서명 - Xamarin | Microsoft Docs
  • 좋은 웹페이지 즐겨찾기