다른 사람이 만든 App의 코드를 참고해보고 싶을 때는 어떻게 해야 할까.
APK를 디컴파일 한다.

가장 먼저 디컴파일을 할 어플의 APK를 준비한다.

구글 플레이 스토어에 등록된 어플은 APKMirror 사이트나 APK Downloader 사이트를 이용해 APK 파일을 받을 수 있다.
필자는 백업 기능을 가진 파일 관리자 어플을 설치하여 APK를 추출해봤다.



ASTRO 어플을 이용하여 APK 추출하기

ASTRO는 왼쪽 상단의 화살표 버튼을 클릭하면 메뉴 화면이 나온다.
거기서 하단의 공구 모양을 버튼(하단 첫 번째 버튼)을 클릭하면 ASRTO 도구 화면이 나온다.
도구 화면에서 앱 관리로 들어가면 스마트폰에 설치된 어플들이 나온다.
그 중 APK를 추출할 어플을 백업한다.


백업한 APK 파일은 스마트폰 내부 저장소의 backups 안에 위치한다.
스마트폰 안에 있는 APK를 컴퓨터로 가져온다.

코드를 보고자 하는 어플의 APK 파일이 준비됐다면 이제 jar로 변환하자.
(APK 파일의 확장자를 ZIP으로 바꿔 파일 안에 있는 classs.dex를 이용하기도 한다.)



Dex2jar

pxb1988님의 Github에서 ‘dex2jar-[버전명].zip’ 을 다운로드 받는다.
(다운로드 바로 찾아가기 1 / 2)

다운로드 한 dex2jar.zip 파일의 압축을 푼 뒤 그 안에 APK 파일을 넣어둔다.

Windows + S 로 CMD를 검색하여 명령 프롬프트를 실행한다.
명령어 cd 를 통해 압축 해제한 파일이 있는 경로를 찾아간다.

C:\Users\My>
C:\Users\My>cd Downloads\dex2jar-2.0 

d2j-dex2jar.bat [APK명].apk‘를 입력하여 명령어를 실행한다.
(Mac은 d2j-dex2jar.sh [APK명].apk 이라고 한다. 필자는 windows라 테스트해보지 못했다.)

C:\Users\My\Downloads\dex2jar-2.0>d2j-dex2jar.bat [APK명].apk
d2j-dex2jar.bat [APK명].apk -> .\[APK명]-dex2jar.jar 

[APK명]-dex2jar.jar 파일이 생성된다.

생성된 jar 파일의 내용을 보기 위해 다음 프로그램을 다운로드 한다.



JD-GUI

jar 파일의 소스코드를 볼 수 있게 해주는 GUI 툴이다.
Java Decompiler 또는 Java Decompiler Github에서 ‘jd-gui-[운영체제]-[버전명].zip‘을 다운로드 받는다.

압축 파일을 해제한 후 ‘jd-gui.exe’ 프로그램을 실행한다.
파일 열기로 생성한 jar을 선택하면 끝.

디컴파일된 코드는 난독화(proguard)되어 있는 경우가 많으므로 참고용으로만 사용하자.