최근 수정 시각 : 2025-04-15 16:24:17

APK

파일:다른 뜻 아이콘.svg  
#!if 넘어옴1 != null
''''''{{{#!if 넘어옴2 != null
, ''''''}}}{{{#!if 넘어옴3 != null
, ''''''}}}{{{#!if 넘어옴4 != null
, ''''''}}}{{{#!if 넘어옴5 != null
, ''''''}}}{{{#!if 넘어옴6 != null
, ''''''}}}{{{#!if 넘어옴7 != null
, ''''''}}}{{{#!if 넘어옴8 != null
, ''''''}}}{{{#!if 넘어옴9 != null
, ''''''}}}{{{#!if 넘어옴10 != null
, ''''''}}}은(는) 여기로 연결됩니다. 
#!if 설명 == null && 리스트 == null
{{{#!if 설명1 == null
다른 뜻에 대한 내용은 아래 문서를}}}{{{#!if 설명1 != null
{{{#!html APK는 이 문서로 연결되며 대한민국의 프로게임단의 옛이름인 APK Prince}}}에 대한 내용은 [[GOnGO Prince]] 문서{{{#!if (문단1 == null) == (앵커1 == null)
를}}}{{{#!if 문단1 != null & 앵커1 == null
의 [[GOnGO Prince#s-|]]번 문단을}}}{{{#!if 문단1 == null & 앵커1 != null
의 [[GOnGO Prince#|]] 부분을}}}}}}{{{#!if 설명2 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단2 == null) == (앵커2 == null)
를}}}{{{#!if 문단2 != null & 앵커2 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단2 == null & 앵커2 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명3 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단3 == null) == (앵커3 == null)
를}}}{{{#!if 문단3 != null & 앵커3 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단3 == null & 앵커3 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명4 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단4 == null) == (앵커4 == null)
를}}}{{{#!if 문단4 != null & 앵커4 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단4 == null & 앵커4 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명5 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단5 == null) == (앵커5 == null)
를}}}{{{#!if 문단5 != null & 앵커5 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단5 == null & 앵커5 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명6 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단6 == null) == (앵커6 == null)
를}}}{{{#!if 문단6 != null & 앵커6 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단6 == null & 앵커6 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명7 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단7 == null) == (앵커7 == null)
를}}}{{{#!if 문단7 != null & 앵커7 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단7 == null & 앵커7 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명8 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단8 == null) == (앵커8 == null)
를}}}{{{#!if 문단8 != null & 앵커8 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단8 == null & 앵커8 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명9 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단9 == null) == (앵커9 == null)
를}}}{{{#!if 문단9 != null & 앵커9 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단9 == null & 앵커9 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명10 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단10 == null) == (앵커10 == null)
를}}}{{{#!if 문단10 != null & 앵커10 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단10 == null & 앵커10 != null
의 [[#|]] 부분을}}}}}}
#!if 설명 == null
{{{#!if 리스트 != null
다른 뜻에 대한 내용은 아래 문서를}}} 참고하십시오.

#!if 리스트 != null
{{{#!if 문서명1 != null
 * {{{#!if 설명1 != null
APK는 이 문서로 연결되며 대한민국의 프로게임단의 옛이름인 APK Prince: }}}[[GOnGO Prince]] {{{#!if 문단1 != null & 앵커1 == null
문서의 [[GOnGO Prince#s-|]]번 문단}}}{{{#!if 문단1 == null & 앵커1 != null
문서의 [[GOnGO Prince#|]] 부분}}}}}}{{{#!if 문서명2 != null
 * {{{#!if 설명2 != null
: }}}[[]] {{{#!if 문단2 != null & 앵커2 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단2 == null & 앵커2 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명3 != null
 * {{{#!if 설명3 != null
: }}}[[]] {{{#!if 문단3 != null & 앵커3 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단3 == null & 앵커3 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명4 != null
 * {{{#!if 설명4 != null
: }}}[[]] {{{#!if 문단4 != null & 앵커4 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단4 == null & 앵커4 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명5 != null
 * {{{#!if 설명5 != null
: }}}[[]] {{{#!if 문단5 != null & 앵커5 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단5 == null & 앵커5 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명6 != null
 * {{{#!if 설명6 != null
: }}}[[]] {{{#!if 문단6 != null & 앵커6 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단6 == null & 앵커6 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명7 != null
 * {{{#!if 설명7 != null
: }}}[[]] {{{#!if 문단7 != null & 앵커7 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단7 == null & 앵커7 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명8 != null
 * {{{#!if 설명8 != null
: }}}[[]] {{{#!if 문단8 != null & 앵커8 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단8 == null & 앵커8 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명9 != null
 * {{{#!if 설명9 != null
: }}}[[]] {{{#!if 문단9 != null & 앵커9 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단9 == null & 앵커9 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명10 != null
 * {{{#!if 설명10 != null
: }}}[[]] {{{#!if 문단10 != null & 앵커10 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단10 == null & 앵커10 != null
문서의 [[#|]] 부분}}}}}}

1. 개요2. 위험성
2.1. 대처법2.2. 관련 기사
3. AAB로 세대교체4. 관련 도구5. 관련 문서

1. 개요

APK는 Android Application Package의 약자로[1], 안드로이드에서 프로그램 형태로 배포되는 형식의 확장자이다. 보통 안드로이드에서 APK 파일이 설치된다면 기본적으로 아래와 같이 데이터 파일과 APK 파일 위치가 복사된다.
  • /data/app[2]
  • /data/data/<패키지명>[3]
  • /storage/emulated/0/Android/data
  • /storage/emulated/0/Android/obb[4]

APK 파일은 모두 실제 보이는 앱 이름과 다른 패키지 이름을 가지고 있다.
예 - com.google.android.gms

이 APK 파일은 iOSipa 파일과 달리 Java 플랫폼에서 사용하는 JAR 포맷[5][6]을 그대로 이용하고 있어 어느 정도 디컴파일이 가능하기에 해킹이 많은 편. 또한 바이트코드 언어들은 대부분 원본 소스코드를 유추하기 상대적으로 쉬운 편이기도 하다. 그리고 어떤 경우에는 파일 다운로드 시간이 점점 늘어나는 경우도 있으니, 주의해야 한다.

2. 위험성

앱을 APK 파일로 직접 설치하는 일은 보안 관점에서 매우 위험하다. 구글이 검수한 뒤에 안전한 앱만 등록되는 플레이 스토어와 달리, 사용자의 스마트폰을 해킹하기 위해 만든 앱일 가능성도 있기 때문이다.

몸캠 피싱, 스미싱 등 범죄를 저지를 때 APK파일을 다운받게 유도하여 피해자의 폰을 해킹하는 것은 물론이고, 유료 앱을 무료로 쓰게 해준다면서 유혹한 뒤 폰을 해킹하는 수법도 있다.

실제로 이스트시큐리티 보안동향보고서 2020년 9월호에 따르면 수사기관을 사칭한 스미싱 문자를 통해 기기 정보와 문자메시지 내용을 탈취하는 악성 앱이 유포됐다.

이러한 위험 때문에 Google은 기본적으로 Play Store 외에서 가져온 파일로 앱을 설치하는 것을 제한하고, 사용자 책임 하에 이를 설치할 수 있는 기능을 제공한다.

일부 스마트폰 제조사들은 APK 파일 설치 전 자체적으로 바이러스 검사를 수행한다.

2.1. 대처법

APK 파일로 앱을 설치할 때는, 다음 조건에 부합하는지 따져 보고 신중하게 설치해야 한다.
  1. 꼭 공식 앱스토어가 아니라, APK 파일을 통해 다운받아야만 하는 앱인가?
    웬만하면 앱을 깔 때는 APK 파일이 아니라, Google Play같은 공식 앱스토어를 통해 다운받는 게 좋다. 위에서도 말했지만 APK 파일 자체가 보안에 취약하다.
  2. 이 APK 파일의 배포자를 믿을 수 있는가?
    APK 파일의 배포자가 누군지도 중요하다. 예를 들어 신뢰할 수 있는 대기업의 홈페이지에서 APK 파일을 설치하는 것은 괜찮다. 그들은 이미 충분히 검증된 기업이기 때문이다. 그러나 모르는 사람이 보낸 문자메세지의 링크를 눌렀는데 APK 파일이 들어있다면, 그건 절대로 설치하면 안된다. 아마 그 앱은 100% 당신의 개인정보를 훔치기 위해 만든 악성 앱일 것이다.
  3. 오픈 소스 앱인가?
    오픈 소스라면 더욱 신뢰성이 올라간다. 이 앱에 채굴기나 개인정보 탈취 프로그램 등 이상한 걸 심어놓지 않았다고 증명하는 셈이기 때문이다.

2.2. 관련 기사

악성 앱으로부터 보호, '출처 알 수 없는 앱 설치' 제대로 차단하기
모바일 해킹 유행한다는데, 어떻게 확인해야 할까?

3. AAB[7]로 세대교체

2021년 8월부터는 APK를 개선한 AAB 형식으로 올릴 것을 권고하고 있다. 단, AAB 파일은 기기에 직접 설치할 수 있는 파일이 아니라 Google Play를 통해 배포되는 형식이며, 실제 기기에 설치되는 과정에서 APK 파일로 변환된다.

4. 관련 도구

  • 안드로이드 스튜디오: APK 분석 기능이 존재한다.
  • apkanalyzer: 안드로이드 SDK에 포함된 APK 디버깅 도구다.
  • apktool: APK 리버스 엔지니어링 도구로, APK 파일의 리소스를 디컴파일하고 바이트코드를 분해하여 수정할 수 있도록 해 주며, 디컴파일된 APK를 다시 빌드해 준다.
    • smali/baksmali: 위 apktool에 포함된 도구이며. APK 파일의 바이트코드를 smali 코드로 분해해 주고 다시 빌드해 준다.
  • bundletool: AAB 파일을 빌드하고, AAB를 APK로 변환시키는 기능을 제공한다.

5. 관련 문서



[1] 또는, Application Package[2] 실제 APK 파일이 위치하는 경로.[3] 설치한 앱에서 생성하는 데이터 파일이 위치하는 경로. 참고로 /data/data는 루팅해야 접근할 수 있는 경로다.[4] 앱을 설치할 때 추가 데이터 파일이 위치하는 경로.[5] ZIP 기반이라 일반 압축 프로그램으로도 간단히 풀린다.[6] 피처폰에서도 사용한다.[7] 안드로이드 앱 번들(Android App Bundle)의 약자.

분류