스마트웹앱콘텐츠전문가/안드로이드

[안드로이드]APK

9D4U 2018. 1. 30. 17:40
728x90
반응형

1. 안드로이드 스튜디오


- Project : 이클립스의 Workspace 개념.


- Module : 이클리스의 Project 개념. 따라서 신규 앱을 생성해야 하는 경우 [마우스우클릭] - [New] - [Module]


--> 신규 앱을 추가하기 위해서는 Module을 만들어야 함.


[모듈 구성 정보]


- Manifests : AndroidManifest.xml 파일을 가지고 있으며, 안드로이드 앱의 패키지명, 앱버전, 앱이름, 앱 권한 등을 설정 할 수 있음.

- Java : 안드로이드 앱의 자바 소스가 위치하며 패키지로 구분하여 구성할 수 있음.

- res : 안드로이드 앱의 리소스에 해당하는 모든 파일이 존재. 이미지(.png), 레이아웃(.xml), 지원언어 설정 등과 같은 것들이 있음.


[빌드 vs 컴파일] 서로 다르므로 주의!!!


안드로이드 스튜디오의 Gradle 빌드 시스템


- 빌드 : 하나의 앱은 단순히 기계어로 변역된 소스로만 구성되지 않음. 기계어로 번역된 소스와 이미지, 레이아웃, 언어 등과 같은 많은 리소스들을 연결시키고, 하나의

설치가 가능한 바이너리 형태의 파일을 만들어 주는 과정. -> 안드로이드 APK(Android Package)파일


- 컴파일 : 소스의 문법을 분석해 컴퓨터가 읽을 수 있는 기게어로 번역.



cf) 이클립스의 Ant, Mavern과 비슷한 쓰임새로 안드로이드 스튜디오에서는 빌드를 자동화할 수 있도록 Gradle을 제공함.


[자주 다룰 그래들 빌드 시스템]


- build.gradle(MyApplication)

- seeting.gradle

- build.gradle(Module:app)



-> Gradle cript를 히용하여 안드로이드 배포인 .APK 파일을 생성할 수 있음.



[AVD 생성]



[디버깅]


- 브레이크 포인터 사용 <- 개발 시에 많이 사용


- 로그캣 사용 : 디버깅을 위해 앱 실행 중에 필요한 정보를 Android Monitor화면에 출력하는 것 <- 앱 배포 후 문제 발생 시에 확인할 수 있는 내용을 사전에 파악하여 남겨 놓을 때 사용.

○ Log.v(String '태그', String '출력할 내용') : 로그레벨(Verbose) - 중요하지 않는 내용을 표시하는 용도로 사용.

○ Log.i(String '태그', String '출력할 내용') : 로그레벨(info) - info의 줄임말로 실행 중인 앱에서 확인이 필요한 정보가 있는 경우에 해당 

○ Log.d(String '태그', String '출력할 내용') : 로그레벨(Debug) - debug의 줄임말로 디버깅을 위해 필요한 내용을 표시하기 위해 사용.

○ Log.w(String '태그', String '출력할 내용') : 로그레벨(Warn) - warn의 줄임말로 실행 중인 앱에서 주의가 필요한 위치에 추가.

○ Log.e(String '태그', String '출력할 내용') : 로그레벨(Error) - error의 줄임말로 실행 중인 앱에서 오류가 발생할 수 있는 곳에 추가할 수 있음.




[배포용 설치 파일 = Android Package = APK파일]


- 안드로이드 스튜디오에서 앱을 실행만 시켜주면 안드로이드 기기에서 앱이 설치됨.


why? 각 모듈의 build - outputs 경로 확인.


- Android project -> Compliation and Packaging -> Android Package(.apk) -> Signing -> Device or Emulator 


- APK 파일 생성 3단계 : 컴파일 - 패키징 - 서명




Signing 단계에서,

JarSigner를 통해 서명이 안료되면, 안드로이드 기기에 설치하는 것은 문제가 없음.

BUT,

구글 플레이 스토어를 통해 배포를 하기 전에는 한 가지 더 진행을 해야 함. 바로 Zipalign.(안드로이드에서 리소스를 읽을 때 좀 더 빠르고 효울적으로 읽기위해서 제공되는 툴)

Zipalign으로 만들어진 .api 파일을 구글 플레이 스토어에 배포하면 됨.






[APK]

1. 실행영역 : dex파일(달빅 실행파일)

2. 설정영역 : AndroidManifest.xml

   [AndroidManifest.xml 주요 설정 항목]


○ AndroidManifest 주요 설정

- Package Name : 앱을 구분하는 단위로, 하나의 앱은 중복되지 않은 Package Name을 가져야 함. = 구글 플레이에 중복된 Package Name이 등록될 수 없다.

중복을 일으키지 않기 위해 일반적으로 따르는 Package Name 포맷 ; orgType.orgName.appName.compName

- Version Code : 안드로이드 앱이 단말에 설치될 때, 구글 플레이 스토어에 등록될 때 버전 비교에 사용되는 항목.

1 부터 시작하며.. 앱이 업데이트 버전이 나올 때마다 증가되어야 한다.(예시 : 세자리 추천 4.5.0) [숫자].[숫자].[숫자]

- Version Name : 각 개발사가 가지는 버전 체계로 개발사에서 관리를 위해 사용되는 부분으로, 앱이 업그레이드 되거나 기타 동작을 할 때 영향을 주지 않는다.

- Permission : 안드로이드 앱에 사용할 수 있는 권한을 설정하는 부분. 예시) 인터넷 권한, 연락처 정보,sms 권한 등...


3. 리소스 영역 : 해당 앱이 동작할 때 사용하는 텍스트 문자열, 이미지, 레이아웃을 가리킴. 

apk 내의 res 폴더에서 관리됨.

4. 서명 영역 : 파일 정보와 서명 정보가 있음.

- 안드로이드 apk 서명은 공개 키 암호화 방식으로 사용함.(공개 킴 암호화 중 RSA 알고리즘 사용)

728x90