컴파일해서 생성된 apk를 설치하려고 하면 에러가 발생할 것이다.
서명이 안되있기 때문이다.
개발자에 의해 개발이 완료된 apk라는 인증을 남기는 것이다.
이전에는 개발자가 만든 앱 서명키를 가지고 구글 스토어에 업로드하는 방식이었지만, 현재는 개발자가 만든 키는 스토어에 업로드시에만 사용하고 이후에는 스토어에서 제공해주는 앱 서명키로 signing을 하여 업데이트할 수 있다고 한다.
key는 인증에 사용되는 서명을 말하고, keystore는 key가 저장되어있는 파일을 말한다.
서명은 여러가지 방식으로 만들 수 있다.
그리고 각각은 확장자가 다를 수 있다.
예를 들어 안드로이드 스튜디오에서 만든 서명은 .jks지만, keytool로 만든 서명은 .keystore를 갖게 된다.
하지만, 두 서명은 동일하게 취급되는 keystore라고 하니 큰 의미를 둘 필요는 없다.
apk에서 서명 정보가 담겨있는 위치이다.
apk를 압축해제했을 때 서명된 apk라면 이 디렉토리가 보일 것이고
그렇지 않다면 보이지 않을 것이다.
서명된 apk를 re컴파일해도 삭제된다.
https://stackoverrun.com/ko/q/12696882
: 서명에 대한 질문
https://en.wikipedia.org/wiki/Android_application_package
: apk wiki
먼저 jarsigner를 사용하기 위해 jdk를 설치하자.
#apt update
#sudo apt-get install default-jdk
#sudo apt-get install openjdk-8-jdk ;openjdk 8이 가장 많이 사용되는 버전이라고 한다.
설치가 다 되었으면 서명을 해보자.
keytool을 이용하여 keystore를 생성한다.
#keytool -genkey -alias bob -keyalg RSA -validity 20000 -keystore bob.keystore
jarsigner를 이용하여 생성한 서명을 apk에 적용하자.
#jarsigner -verbose -keystore ./bob.keystore bob.apk bob
이제 apk를 안드로이드 에뮬레이터에서 설치하면 성공할 것이다.
https://developer.android.com/studio/publish/app-signing?hl=ko
: 안드로이드 스튜디오, 서명에 대해
https://m.blog.naver.com/opusk/220985259485
: jdk 설치 on ubuntu
https://blog.naver.com/liapp/220376753817
: 네이버 블로그, 서명에 대해