[Android/안드로이드] apk파일 assets, res 변경 후 리패키징하기
기존의 apk파일을 별도의 프로그램 없이 리패키징하는 방법입니다.
먼저 apk파일의 확장자를 zip으로 변경 후 압축을 풀어줍니다.
파일의 확장자가 보이지 않는 경우,
도구 - 폴더 옵션의 보기 탭에서 '알려진 파일 형식의 파일 확장명 숨기기' 항목을 선택 해제합니다.
압축을 풀고 나면 다음의 구성요소들을 확인할 수 있습니다.
assets |
패키지 내에 포함된 비 리소스 파일 |
META-INF |
apk 배포시 서명한 내용. 파일 변조 시 패키지 손상 오류가 뜨며 기기에 설치가 되지 않음 |
res |
리소스 파일 |
AndroidManifest.xml |
Manifest |
classes.dex |
달빅에서 동작하는 컴파일 된 실행 파일 |
resouces.arsc |
컴파일 된 리소스 파일 |
assets과 res 폴더에는 파일이 그대로 들어있기 때문에 수정 및 변경이 가능합니다.
소스코드의 경우 별도의 디컴파일 툴들(Dex2jar, JD-GUI, Apk manager, Apktool 등)을
사용해야만 확인할 수 있습니다.
수정이 끝나면 기존 서명은 효력을 잃게 되기 때문에
패키지 폴더 내의 'META-INF' 폴더를 삭제한 후 다시 zip파일로 압축해줍니다.
이 때, 고급설정 - 압축방법 - 압축 안함 옵션을 선택해 압축합니다. (알집의 경우)
마지막으로, zip파일 확장자를 다시 apk로 변경 후 재서명하면 리패키징이 완료됩니다.
서명을 위해 JDK 내에 포함된 'jarsigner'를 사용합니다.
cmd창에서 다음의 명령어 입력 후 패스워드를 입력하면 서명이 완료됩니다.
'개발 > Android' 카테고리의 다른 글
[Android/안드로이드] jarsigner로 서명 시 발생하는 timestamp 관련 경고 해결 방법 (0) | 2017.04.28 |
---|---|
[Android/안드로이드] 손쉽게 스와이프가 가능한 액션바 탭 만들기 (ViewPager, Fragment) 이용 (0) | 2017.04.25 |
[Android/안드로이드] 무음/방해금지 모드 설정과 해제를 위한 방해금지 설정 변경 권한 얻기 (0) | 2017.04.15 |
[Android/안드로이드] progressDialog에서 풀스크린 설정 (상태바, 소프트키 없애기) (0) | 2017.03.14 |
[Android/안드로이드] Android studio에서 AVD실행 시 HAXM 오류 해결 방법 (1) | 2017.03.14 |