안드로이드 어플리케이션 apk 추출방법
마켓에서 다운받은 앱은, 내장메모리인 /data/app/ 디렉토리로 들어갑니다.
adb shell 이나 Astro 를 이용해도 해당 디렉토리에 접근할 수 없습니다.
다 되는 것은 아닐텐데 대부분은 되지 않을까 싶어 APK 추출 방법을 공유합니다.
먼저 정확한 apk 이름을 알아야 합니다. apk이름을 아는 방법은 여러가지 방법이 있는데, 여기서는 pm (package manager)의 도움을 받는 방법을 사용해 보겠습니다.
우선, 폰을 PC에 USB로 연결합니다. ADB 연결이 가능해야 합니다. (옵티머스Q의 경우 http://www.androidpub.com/443057 에 언급된 "LG Android Platform Driver"나 "LG mobile sync for android"를 설치합니다)
PC에서 command 창을 연 다음, 다음과 같이 adb shell 을 입력합니다. (adb.exe는 android-sdk의 tools에 있지요)
E:\AndroidDev\android-sdk_r04-windows\android-sdk-windows\tools>adb shell
$ pm list packages -f
위와 같이 명령어를 입력하면, 다음과 같이 패키지 리스트와 apk의 위치가 나옵니다.
package:/system/app/HangulIME.apk=com.lge.inputmethod.hangul
package:/data/app/com.dataviz.docstogoapp.apk=com.dataviz.docstogoapp
package:/data/app/org.connectbot.apk=org.connectbot
package:/system/app/HTMLViewer.apk=com.android.htmlviewer
package:/data/app/android.lgt.wipi.App0002E818.apk=android.lgt.wipi.App0002E818
package:/data/app/com.and.weather.apk=com.and.weather
앱이름과 패키지 이름이 차이가 있을수 있으니, 추출하고자 하는 apk를 잘 찾아봅니다. 여기서는 예를 들어 ConnectBot을 추출해 봅니다. /data/app/org.connectbot.apk 에 있군요.
exit로 adb shell을 빠져나와 명령어 프롬프트로 돌아옵니다.
다음과 같이 adb pull /data/app/org.connectbot.apk ConnectBot.apk 명령어를 하면 폰에서 apk를 추출할 수 있습니다.
E:\AndroidDev\android-sdk_r04-windows\android-sdk-windows\tools>adb pull /data/app/org.connectbot.apk ConnectBot.apk
1944 KB/s (360463 bytes in 0.181s)
E:\AndroidDev\android-sdk_r04-windows\android-sdk-windows\tools>
apk 추출 이후에는 저작권에 유의하여 사용하시기 바랍니다.
루트탐색기로 data/app에서 그냥 복사하면 되는군요. 어짜피 루팅했으니 astro보다 낫네요. 하지만 저작권때문에 이거 공유하기도 그렇고..



