IT/Android(비공개)

1. Android 기본

상짱 2020. 2. 7. 17:37
반응형

1. 프로젝트 구조

- app

- manifests / java / res

- 설정및환경정보 / 코드 / 리소스

 

- manifests

- 앱의 코드를 실행하기 위해 반드시 알아야 하는 정보들

- android:allowBackup : 데이터를 백업하고 복원할지 여부 , default : true

- android:icon : 아이콘

- android:label : 전체 어플리케이션에 대한 사용자가 읽을 수 있는 레이블

- android:roundIcon : 원형 아이콘

- android:supportsRtl : 어플리케이션이 오른쪽에서 왼쪽으로(RTL) 레이아웃을 지원할지 여부 , default : false

- android:theme : 기본 테마 스타일

 

- res

- res/layout : 화면의 UI 를 담당하는 레이아웃 리소스

- res/mipmap : 어플리케이션 아이콘 등 이미지

- res/values : 문자열, 컬러 등

 

- Gradle

- 빌드 시스템

- Project / Module

- android / dependencies

- android 속성

compileSdkVersion : 앱을 컴파일하기 위해 사용해야하는 Android API 레벨을 지정

buildToolsVersion : 앱을 빌드할 때 사용해야하는 SDK 빌드 도구.

defaultConfig.applicationId : 게시할 패키지를 고유하게 식별하기 위한 속성 / 패키지 이름을 참조

defaultConfig.minSdkVersion : 앱 실행에 필요한 최소 API 레벨

defaultConfig.targetSdkVersion : 앱 구현에 사용되는 API 레벨

defaultConfig.versionCode : 앱의 버전

defaultconfig.testInstrumentationRunner : 기본 테스트 계측 실행기를 설정

 

- dependencies

- 어플리케이션이 작동하기 위해 필요한 라이브러리

 

* 안드로이드 프로젝트는 크게 코드( java ) , 리소스( res ) , 매니페스트( AndroidManifest.xml ) , 빌드 스크립트( build_gradle ) 등으로 이루어져 있다.

* 코드 는 [ app / java ] 하위 경로에 있으며 프로그램의 동작을 작성한다.

* 리소스는 [ app / res ] 경로에 있으며 앱이 사용하는 화면 레이아웃, 아이콘 이미지, 문자열 등이 있다.

* AndroidManifest.xml 파일은 안드로이드 시스템이 알아야하는 필수 정보를 가지고 있으며 Application 의 권한정보, Activity 정보 등을 가지고 있다.

* 빌드 스크립트 는 앱의 설정 정보( 버전코드, 최소 SDK 버전 등 )를 가지고 있으며 기타 앱이 의존하는 라이브러리의 정보 역시 포함된다.

 

 

2. 컴파일( Complie ) 과 빌드 ( Build )

* 사람이 사용하는 프로그램밍 언와 기계가 이해할 수 있는 언어는 다르다

* Compile 은 고수준언어를 저수준언어로 바꾸고 최종적으로 기계가 이해할수 있는 언어로 바꾸는 것이다.

* 기계어로 바꾸어도 바로 실행할 수 는 없고 각각 분리된 기계어 코드가 통합되고 메모리에 올라가는 Linking 과정과 Load 과정이 필요하다.

* 빌드는 Compile , Linking , Load 과정을 포함해 소스 코드를 기계가 실행할 수 있는 독립적인 형태로 바꾸는 모든 과정을 말한다.

 

 

3. 시작점( Entry Point ) 와 매니페이스( Manifest ) 파일

- Android 4대 컴포넌트 
- Activity : 화면에 포커싱되어 사용자와 상호 작용을 하는 컴포넌트 
- Service : 백그라운드에서 실행되는 구성 요소 / 사용자 UI 를 제공X 
- BroadCastReceiver : 시스템 변경사항의 알림을 받기 위해 존재 
- ContentProvider : 데이터 공유 / 데이터가 필요한 앱은 데이터를 제공할 앱의 ContentProvider 를 통해서만 데이터를 제공받을 수 있다. 

 

* Entry Point 는 시스템에서 작성한 프로그램에서 애플리케이션으로 제어권이 넘어오는 최초 진입점을 말한다.
* 대부분의 운영체제나 언어에서는 하나의 단일 Entry Point 를 가지고 있고 보통 main 이라는 함수로 사용한다.
* Android 는 main 이라는 단일 진입점이 존재하지 않으며 대신에 Application 의 4대 구성요소라 불리우는 Activity, Service, BroadCastReceiver, ContentProvider 가 존재한다.
* Entry Point 를 통해 시스템에서 컴포넌트로 제어권을 넘기기 위해서는 AndroidManifest.xml 파일에 적어 두어야 한다.

 

 

4. 변수와 데이터형식

- 변수 : 프로그램 동작시 그 값이 변할 수 있는 메모리 공간

- char : 문자형 / 2byte를 사용하는 한글 또는 영문 

- String : 문자형 / 문자열

- byte : 정수형 / 1바이트

- short : 정수형 / 2바이트

- int : 정수형 / 4바이트

- long : 정수형 / 8바이트

- float : 실수형 / 4바이트

- double : 실수형 / 8바이트

- boolean : 불리언형 / 1바이트 true , false

 

 

5. 제어와 분기 ( if , else , for , while )

* 코드의 실행 흐름을 조건에 따라 변경시키는 문법을 조건문 or 분기문 이라고 부른다.

* if / else / else if 를 사용

* 조건에 따라 같은 작업을 반복하는 구문을 반복문 이라고 부른다.

* for / while 을 사용

* 반복문을 빠져나오기 위해서는 break 키워드를 사용한다.

 

 

6. 함수 / 메소드( Method ) / 리소스( Resource )

* 프로그래밍에서 함수란 전달받은 매개변수로 특정 작업을 수행한다.

* 함수는 작업 수행 뒤 반환값을 돌려줄수도 있고 반환값없이 동작할 수도 있다.

* 함수를 사용하는 이유는 공통된 코드를 하나로 묶어 재사용성을 높이고 코드의 중복을 줄여 수정을 쉽게 하기 위해서이다.

* 리소스의 사용 목적은 레이아웃, 문자열 등 정적인 요소를 분리하여 재사용성을 높이고 수정을 쉽게 하기 위해서이다.

* 안드로이드에서 UI는 보통 레이아웃 리소스로 작성하며 리소스로 분리하였기 때문에 쉽게 재사용이 가능하다.

* 특정 레이아웃을 재사용해서 사용하려면 <include> 태그를 사용한다.

 

 

7. 객체 지향(OOP) / 클래스(Class) / 인스턴스(Instance)

- Class 는 객체를 위한 설계도 , Instance 는 설계도를 통해 생성된 실제 객체

ex) 사람 이라는 객체에 대한 설계도가 Class / 실제로 존재하는 철수,영희 등은 Instance

 

* 객체 지향은 프로그램밍 패러다임이다.

* 객체 지향의 목적은 코드의 재사용성을 높이고 유지보수를 쉽게 하는 것이다.

* 객체는 자신만의 속성을 가지고 외부에 인터페이스를 제공한다.

* Class 는 객체의 설계도, Instance 는 설계도대로 생성된 실제 객체를 말한다.

* 객체 지향에서 갭슐화란 내부 처리과정을 외부로부터 은닉하여 인터페이스를 간편화하고 자기자신의 데이터를 보호하는 것이다.

* 객체 지향에서 상속(확장)은 이미 설계된 클래스의 기능을 그대로 재사용하면서 자신만의 기능을 추가하는 것이다.

* 메소드 오버로딩은 파라미터가 서로 다른 메소드를 같은 이름으로 쓰게 해주는 다형성을 위해 존재한다.

* 메소드 오버라이딩은 부모에게 받은 기능을 그대로 쓰지 않고 재정의해서 쓰는 것이며, 이것 역시 사용하는 입장에서는 같은 메소드를 사용하지만 다양하게 변경이 가능하므로 다양성을 위한 예 중 하나로 볼 수 있다.

 

 

8. 라이브러리( Library ) / 프레임워크( FrameWork ) / 콜백( Callback )

- 라이브러리 : 개발의 생산성 향상을 위하여 자주 사용하는 기능을 여러 곳에서 사용할 수 있도록 묶은 것

- 프레임워크 : 라이브러리처럼 자주 사용하는 기능을 묶어 개발 생산성 향상을 하는 것이 목적

- 프레임워크는 동작하는 일련의 과정 중 공통적인 요소들은 상위 클래스에서 정의하고, 서로 다르게 적용되어야 하는 부분은 하위 클래스에 구현된 CallBack 함수를 부르는 형태로 작동

- 내가 메소드를 불러서 사용하면 라이브러리 / 나의 메소드가 불려 사용되면 프레임워크

 

* 라이브러리와 프레임워크는 코드의 공통적인 부분을 별도로 분리하여 개발의 생산성 향상에 목적이 있다.

* 라이브러리는 API형태로 기능을 제공한다.

* 라이브러리와 프레임워크의 차이는 코드 흐름의 제어권을 누가 가지고 있는가에 대한 차이이다.

* 개발자가 직접 부르는 것이 아닌, 외부에서 불려지는 함수를 CallBack함수라고 한다.

* 프레임워크는 프로그램이 해야할 공통적인 부분은 상위 클래스에서 구현하고 추가적으로 구현할 사항을 하위 클래스의 Callback 을 호출하는 형태로 동작한다.

* 안드로이드 애플리케이션 개발은 프레임워크 기반으로 개발된다.

 

 

 개념정리

- 프로젝트 : 일정한 기간 안에 특정한 목적을 달성하기 위해 수행하는 업무의 묶음

- 코드 : 프로그램이 어떻게 동작하는지를 기술해 놓은 파일들

- 리소스 : 프로그램 실행과 관계된 정적 데이터

- 설정 및 환경정보 : 프로젝트가 가져야 하는 환경 정보의 모음

- SDK : 개발하기 위해 필요한 표준 도구들의 묶음

- API : 어플리케이션을 프로그래밍하기 위한 인터페이스

- Unit Test : 프로그래밍 단계에서 소스코드가 의도한 대로 정상 동작하고 있는지 기능별로 테스트하는 것을 의미

- JVM ( Java Virtual Machine ) : 자바 가상 머신

- Dalvik VM : Android Runtime

- 빌드 : 프로젝트의 여러 파일을 취합하고 변환하여 안드로이드 시스템이 실행할 수 있는 소프트웨어를 만드는 과정

- 모듈 : 서로 관련성이 높은 기능들을 하나로 묶고 독립적으로 관리하여 생성을 높이는 방식 중 하나

 

※ android studio 단축키

[Ctrl + Q] : 주석요약

 

반응형

'IT > Android(비공개)' 카테고리의 다른 글

[Android] View / Theme  (0) 2020.03.05
Activity / Intent  (0) 2020.03.04
Android-studio / svn 연결  (0) 2020.03.04
4. Kotlin(코틀린)_3  (0) 2020.03.02
3. Kotlin(코틀린)_2  (0) 2020.02.26
2. Kotlin(코틀린)_1  (0) 2020.02.20
Android 재시작  (0) 2020.02.07