JJANG-JOON
article thumbnail
반응형

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

APK 파일의 구조

 

 

APK 파일은 ZIP 형식으로 압축되어 있으며, 내부에는 여러 가지 디렉토리와 파일이 포함되어 있다.

apk 파일의 구조는 다음과 같다.

APK 파일
│
├── META-INF/
│   ├── MANIFEST.MF
│   ├── CERT.SF
│   └── CERT.RSA
│
├── AndroidManifest.xml
│
├── res/
│   ├── drawable/
│   ├── layout/
│   ├── values/
│   └── ...
│
├── assets/
│   ├── fonts/
│   ├── sounds/
│   └── ...
│
├── lib/
│   ├── arm64-v8a/
│   ├── armeabi-v7a/
│   ├── x86/
│   └── ...
│
├── classes.dex
│
└── resources.arsc

 

 

 

 

 

 

 

 

META-INF 디렉토리

 

 

META-INF 디렉토리에는 apk 파일의 메타데이터가 포함되며 이 디렉토리에는 다음과 같은 파일이 포함된다.

  • MANIFEST.MF 파일: apk 파일의 메타데이터를 포함하는 XML 파일이다.
  • CERT.SF 파일: apk 파일의 서명에 대한 정보를 포함하는 파일이다.
  • CERT.RSA 파일: apk 파일의 서명을 포함하는 파일이다.

 

 

 

 

 

 

AndroidManifest.xml 파일

 

AndroidManifest.xml 파일은 apk 파일의 루트 디렉토리에 위치한 XML 파일로, 앱의 매니페스트 정보를 포함한다. 매니페스트 파일은 앱의 구성, 권한, 액티비티, 서비스, 리시버 등의 정보를 정의한다.

 

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">

    <application>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

 

 

 

 

 

 

 

classes.dex 파일

 

classes.dex 파일은 apk 파일의 루트 디렉토리에 위치한 디렉토리로, 앱의 코드를 포함한다. classes.dex 파일은 앱의 소스 코드를 Dalvik 가상 머신이나 ART(Art Runtime)에 의해 실행 가능한 형태로 변환한 것이다.

 

 

 

 

 

 

resources.arsc 파일

 

resources.arsc 파일은 apk 파일의 루트 디렉토리에 위치한 파일로, 앱의 리소스를 포함한다. 리소스 파일은 레이아웃, 문자열, 이미지, 특정한 값들을 포함하고 있다.

 

 

 

 

 

 

 

lib 디렉토리

 

lib 디렉토리는 apk 파일의 루트 디렉토리에 위치한 디렉토리로, 특정 CPU 아키텍처용 네이티브 코드 라이브러리를 포함한다. 예를 들어, ARM 아키텍처에 대한 라이브러리는 lib/armeabi/에 위치할 수 있다.

 

 

 

 

 

 

assets 디렉토리

 

assets 디렉토리는 apk 파일의 루트 디렉토리에 위치한 디렉토리로, 앱에서 사용하는 임의의 파일이나 자원을 포함한다. 이 디렉토리에 있는 파일들은 코드에서 직접 접근할 수 있다.

 

 

 

 

 

res 디렉토리

 

res 디렉토리는 apk 파일의 루트 디렉토리에 위치한 디렉토리로, 리소스 파일들을 담고 있다. res/ 디렉토리에는 레이아웃, 문자열, 그림 등의 리소스가 담겨 있다.

 

  • raw 디렉토리: 일반 텍스트, 이미지, 오디오, 비디오 등의 리소스를 포함하는 디렉토리이다.
  • drawable 디렉토리: 이미지 리소스를 포함하는 디렉토리다.
  • layout 디렉토리: 레이아웃 리소스를 포함하는 디렉토리다.
  • menu 디렉토리: 메뉴 리소스를 포함하는 디렉토리다.
  • mipmap-anydpi-v26 디렉토리: 모든 DPI(화면 밀도)에 대해 단일 이미지를 사용하는 리소스를 포함하는 디렉토리다.
  • mipmap-hdpi 디렉토리: HDP(높은 밀도) 화면에 사용되는 리소스를 포함하는 디렉토리다.
  • mipmap-mdpi 디렉토리: MDP(중간 밀도) 화면에 사용되는 리소스를 포함하는 디렉토리다.
  • mipmap-xhdpi 디렉토리: XHDP(매우 높은 밀도) 화면에 사용되는 리소스를 포함하는 디렉토리다.
  • mipmap-xxhdpi 디렉토리: XXHDPI(매우 매우 높은 밀도) 화면에 사용되는 리소스를 포함하는 디렉토리다.
  • mipmap-xxxhdpi 디렉토리: XXXHDPI(매우 매우 매우 높은 밀도) 화면에 사용되는 리소스를 포함하는 디렉토리다.

 

 

 

 

APK 파일의 빌드

 

APK 파일은 Android Studio나 다른 빌드 도구를 사용하여 빌드되며 빌드 프로세스에서는 다음과 같은 단계들이 수행된다.

  1. 소스 코드를 컴파일하여 바이트 코드를 생성한다.
  2. 바이트 코드를 Dalvik 가상 머신이나 ART(Art Runtime)에서 실행 가능한 형태로 변환한다.
  3. 리소스 파일을 압축한다.
  4. 앱의 메타데이터를 포함하는 파일을 생성한다.
  5. 모든 파일을 하나의 ZIP 파일로 압축한다.

 

 

 

 

APK 파일의 실행

 

안드로이드 운영 체제는 apk 파일을 압축을 풀고, 앱의 코드와 리소스를 메모리에 로드하여 앱을 실행한다.

 

 

 


 

 

 

 

 

 

 

 

반응형
profile

JJANG-JOON

@JJANG-JOON

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...