안드로이드 APK 재서명하기
이 방법을 시도해보기 전에 더 간단한 방법이 있으므로 시도해보길 추천함
http://yonoo88.tistory.com/808
이미 릴리즈 된 안드로이드 apk 를 내 개인 서명키로 바꾸는 방법
여기서는 이미 있는 debug.keystore 파일을 이용하여 해보았다.
우선 재서명할 apk를 준비한다.
압축프로그램이 있다면 우클릭을 하고 압축을 푼다. (ex. astro apk)
압축을 풀고 나서 해당 폴더에 들어가면 파일이 많이 있는데 여기서
META-INF 폴더를 삭제한다. 이 폴더에 서명관련한 파일들이 있기 때문이다.
삭제한 다음 다시 이 폴더를 압축하는데 꼭 폴더 내부로 들어가서 모든파일 선택 후 압축을 해야한다.!
그럼 압축파일이 생기는데 보기 편한 곳으로 이동시켜놓고
확장자를 ,apk로 바꿔준다.
그럼 위처럼 apk 로 변경된다 (기존 apk와 이름이 같아 resign으로 변경해주었다)
혹시 뒤에 확장자가 안보이면 폴더옵션에서
알려진 파일 형식의 파일 확장명 숨기기를 체크 해제 해준다.
그럼 cmd 창을 연다.
해당 폴더가 있는 경로로 진입한다. 여기서는 d:\astro 이다
그리고 서명할 키가 있어야 하는데 여기서는 debug.keystore를 이용하겠다.
이 키스토어는 C:\Users\Administrator\.android 폴더에 위치하고 있다.
그럼 이제 서명을 해줘야 하는데 명령어는 다음과 같다.
출처
http://developer.android.com/tools/publishing/app-signing.html
$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1
-keystore my-release-key.keystore my_application.apk alias_name
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore [키스토어경로] [서명할apk경로] [키스토어별명]
여기서 jarsigner 경로가 환경변수에 등록되어 있어야한다.
하지만 자바를 처음 설치할 때
%JAVA_HOME%\jdk\bin
이런 식으로 환경변수를 등록해주므로 아마 이미 되었을 것이다.
기본 경로는 다음과 같다(64비트)
C:\Program Files\Java\jdk1.8.0_05\bin
이렇게 해주면 된다.
기본적으로 debug.keystore 는 다음과 같은 정보를 가지고 있다
키스토어 별명은 확인은
keytool -list -v -keystore [키스토어경로]
로 확인할 수 있다.
그럼 다음과 같이 입력 후
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore c:\.android\debug.keystore com.metago.resign.apk androiddebugkey
실행하면 암호를 치라고 나오는데 android 라고 써준다.
그럼 뭐가 좌르륵 나오면서 끝에 jar signed 라고 뜰 것이다.
이제 서명은 되었고 apk를 다시 재정렬?시켜줘야 한다.
그러기 위해서는
zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk
zipalign -v 4 [서명한apk] [apk 새이름]
위 명령어를 실행해 줘야 하는데 zipalign 경로가 환경변수 Path에 추가 되어 있어야 한다.
Path 변수 값 예시C:\ProgramData\Oracle\Java\javapath;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;%JAVA_HOME%\bin;D:\backup\eclipse\adt-bundle-windows-x86_64-20140702\sdk\platform-tools;%ANDROID_HOME%\tools;%ANDROID_HOME%\build-tools\android-4.4W |
zipalign 은 sdk 폴더에 buiild-tools 에서 안드로이드 아무 버전이나 폴더에 들어가면 있다.
ex ) C:\adt-bundle-windows-x86_64-20140702\sdk\build-tools\android-4.4W
그래서
zipalign -v 4 com.metago.astro.resign.apk astro.apk
라고 실행해주면
아까보다 더 많은 좌르륵이 나오면서
Verification succesful
이라고 뜰 것이다.
해당 폴더에 가보면 apk 가 생성되어 있을 것이다.
확인을 해보고 싶다면
jarsigner -verify my_application.apk //간단히 서명확인할 때
jarsigner -verify -verbose -certs my_application.apk //서명 외 다른 정보도 자세히 확인할 때
다음과 같이 실행해준다.
원본 apk 파일인 com.metago.astro.apk 의 서명 정보 확인
jarsigner -verify -verbose -certs com.metago.astro.apk
debug.keystore 로 재서명한 astro.apk
jarsigner -verify -verbose -certs astro.apk
재서명한 astro.apk를 보면 Android Debug로 바뀐게 보인다.
그럼 재서명 완료!!