play/Android

[Android] 폴더 구조, APK파일 구조

카고형 2022. 9. 13. 10:58
728x90

안드로이드 폴더 구조

/data 폴더

이 폴더는 애플리케이션 데이터와 캐시, 기타 데이터를 저장하는 데 사용됩니다. 

일반적으로 이 폴더는 root 권한이 필요합니다. 

  • /data/data: 각 애플리케이션의 데이터가 저장되는 폴더입니다. 패키지 이름으로 구분됩니다.
  • /data/app: APK 파일이 설치되는 폴더입니다.
  • /data/cache: 캐시 파일이 저장되는 폴더입니다.
  • /data/dalvik-cache: Dalvik 가상 머신이 사용하는 캐시 파일이 저장되는 폴더입니다.


/system 폴더

안드로이드 운영체제와 관련된 파일이 저장되는 폴더입니다.
이 폴더의 파일은 루팅 된 기기에서 수정할 수 있지만, 그렇게 하면 안정성 문제가 발생할 수 있습니다.

  • /system/app: 기본적으로 설치된 애플리케이션 APK 파일이 저장되는 폴더입니다.
  • /system/bin: 시스템 바이너리 파일이 저장되는 폴더입니다.
  • /system/etc: 구성 파일이 저장되는 폴더입니다.
  • /system/framework: 안드로이드 시스템 프레임워크 파일이 저장되는 폴더입니다.
  • /system/lib: 라이브러리 파일이 저장되는 폴더입니다.
  • /system/media: 기본적으로 설치된 미디어 파일이 저장되는 폴더입니다.
  • /system/usr: 시스템 사용자 데이터가 저장되는 폴더입니다.
  • /system/vendor: 제조업체 관련 파일이 저장되는 폴더입니다.

/sdcard 폴더

이 폴더는 외부 저장소로 인식되며, 기본적으로 설치된 모든 애플리케이션은 이 폴더에 저장된 파일에 액세스 할 수 있습니다.

SD 카드의 루트 디렉토리입니다.
일부 안드로이드 버전에서는 /mnt/sdcard라는 이름으로 액세스 됩니다.

  • /sdcard/Android: 안드로이드 애플리케이션 데이터와 미디어 파일이 저장되는 폴더입니다.
  • /sdcard/DCIM: 카메라 애플리케이션이 생성하는 이미지와 동영상 파일이 저장되는 폴더입니다.
  • /sdcard/Downloads: 다운로드된 파일이 저장되는 폴더입니다.
  • /sdcard/Music: 음악 파일이 저장되는 폴더입니다.
  • /sdcard/Pictures: 사진 파일이 저장되는 폴더입니다.
  • /sdcard/Movies: 동영상 파일이 저장되는 폴더입니다.

그 외 폴더

더보기

/cache 폴더
앱이 사용하는 캐시 파일을 저장하는 폴더입니다.
앱이 캐시를 저장하기 위해 요청하면 시스템이 해당 폴더에 캐시를 저장합니다.
/mnt 폴더
마운트 된 파일 시스템을 포함하는 폴더입니다.
이 폴더의 하위 폴더 중 하나는 SD 카드를 나타낼 수 있습니다.


/storage 폴더
다른 저장소 위치를 가리키는 링크를 포함하는 폴더입니다.
이 폴더의 하위 폴더는 외부 SD 카드 또는 USB 디바이스를 나타낼 수 있습니다.


/etc 폴더
시스템 설정 파일이 포함된 폴더입니다.
이 폴더의 파일은 루팅 된 기기에서 수정할 수 있지만, 그렇게 하면 안정성 문제가 발생할 수 있습니다.


/proc 폴더
프로세스 및 시스템 정보를 포함하는 가상 폴더입니다.
이 폴더의 파일은 읽기 전용입니다.


/root 폴더
루트 사용자의 홈 디렉터리입니다.
이 폴더의 파일은 루팅 된 기기에서 액세스 할 수 있습니다.


/dev 폴더
장치 파일이 포함된 폴더입니다.
이 폴더의 파일은 시스템에서 사용됩니다.


/sbin 폴더
시스템 바이너리 파일이 포함된 폴더입니다.
이 폴더의 파일은 루팅 된 기기에서 실행할 수 있습니다.

 


APK 폴더 구조

apk 파일은 android Application Package의 줄임말이고 앱을 설치하는 역할을 함. zip 형식의 압축 파일이다. 

META-INF

 인증 서명과 관련한 정보가 담겨있는 폴더

 

assets

 앱 실행에 필요한 자원들이 보관되는 폴더

 res 폴더와 비슷하지만 용량이 큰 파일 위주로 저장

 res

 앱 실행에 필요한 자원들이 보관되는 폴더

  • Drawable : 프로젝트에 활용될 이미지
  • Layout : 안드로이드 화면을 담당하는 xml
  • Values
    • dimens.xml : 텍스트 크기, 도형 크기 등의 설정파일
    • string.xml : 문자열에 관련된 설정 파일
    • styles.xml : 색상, 액션바 유무, 배경 색 등의 화면 디자인 관련 설정을 정의

 res 폴더는 assets 비해 용량이 적은 파일 위주로 저장됨

lib

 라이브러리 파일들이 저장되는 폴더

AndroindManifest.xml 

 앱을 구성하는 컴포넌트 및 패키지명, 버전과 같은 앱의 정보가 저장되는 파일이다.

 AndroindManifest.xml의 주용 컨포넌트

  • Activity : 일반적으로 하나의 뷰를 말하며, 해당 Activity에 대한 속성을 정의함
  • Service : 백그라운드에서 실행되는 서비스
  • Broadcast Recriver : 안드로이드 내부 이벤트 핸들링을 위한 컴포넌트 ex) 문자수신, 배터리 부족등
  • Content Provide : apk 간 데이터 공유를 위한 컴포넌트

class.dex

 애플리케이션의 하위 요소이며  컴파일된 자바 및 클래스가 포함되어 있고, 여러 클래스가 들어있다

  Android SDK의 필수 분분인 DX 도구로 변환된 Java 바이트 코드이고 Dalvik 가상 머신 인스턴스를 사용하여 자체 프로세서를 생성  가능

 

resources.arsc

 res의 정보가 기록되어 있는 곳

 컴파일된 리소스(문자열, 스타일 등)가 존재하는 곳

 

 

참고 사이트

https://source.android.com/docs/core/architecture

https://source.android.com/docs/setup/start/glossary

https://developer.android.com/studio/build

728x90