APK란? [안드로이드]

 APK ( Android package ) ?안드로이드 앱 확장자로 안드로이드 앱 설치하기 역할.따라서, apk 파일을 Android 디바이스에 넣어서 실행하면 앱이 인스톨 된다.구글플레이에서 앱을 다운받을 때도 apk파일이 다운돼 설치된다.안드로이드 스튜디오에서 앱을 실행하면 자동으로 apk 파일이 생성되고 코드를 다시 작성하고 실행할 때마다 새로운 apk 파일이 계속 생성된다.

APK 구조

apk 파일 내용 1) META-INF 서명(Sign) 관련 정보가 담겨져 있는 곳

2)com 컴파일 후 클래스 파일(*.class)이 모인 자리, 즉 “패키지”(c언어의 헤더와 비슷함) 또는 org, properties 폴더 등과 같이 기타 파일이 들어가 있거나 앱별로 없는 경우도 있으며, 다소 다른 존재

3) assets 용량이 큰 파일을 관리하는 폴더 유니티 엔진으로 개발된 앱은 라이브러리가 이 폴더 아래에 존재한다.

4) lib 일반적인 라이브러리 파일(*.so)이 들어있는 폴더 * 라이브러리 : 주로 공통적인 함수 등을 미리 만들어 놓고 읽어 사용할 수 있도록 해 놓은 파일들, 달빅바이트 코드가 디컴파일이 간단하기 때문에 확인하기 어렵게 하기 때문에 일부러 라이브러리로 해 놓기도 한다.

5) res 해당 앱이 사용하는 데이터 또는 자료 등이 들어있는 폴더*리소스: 해당 어플리케이션이 동작할 때 사용하는 텍스트 문자열, 화상, 아이콘, 오디오, 동영상 등을 가리킨다.

res에 저장되어 있는 폴더들 1) anim: 트윈 애니메이션의 변환 방법을 정의*트윈 애니메이션: 위치나 크기, 회전을 지정한 시간 내에 실행하는 애니메이션 1)drawable*: 이미지 리소스를 관리하는 파일로 -hdpi, -ldpi, -mdpi, -xhdpi, -xhdpi, -xhdpi, -xhdpi, -xhdpi 등이 존재하며,

resassets 용량 아이콘과 같은 작은 파일 동영상과 같은 큰 파일 컴파일되는 원본 상태에서 저장 사용 빈도 종종 6) Android Manifest.xml 앱 설치 정보가 들어있는 파일 패키지명, 버전 정보 등 *.xml 파일은 바이너리로 되어 있으며 내용을 보고 싶은 경우 apk manager와 같은 툴로 디컴파일이 필요함

7) classes.dex 파일은 *.class 파일이 바이트 코드로 변환된 소스 파일 Android 에서는 각각의 클래스 파일을 지원한다.dex 파일을 작성하지 않고 모든 클래스를 컴파일해서 classes.dex라는 하나의 파일을 작성하는데 여기에는 앱의 모든 소스 코드와 라이브러리가 들어가 있다.

8) resources.arsc 리소스의 배열이라는 의미위의 res정보가 들어있는 파일