WEBVTT

1
00:00.630 --> 00:03.120
Android 아키텍처에 대해 알아보겠습니다.

2
00:14.030 --> 00:20.630
이 다이어그램에서 위에서 아래로 볼 수 있듯이 A

3
00:20.630 --> 00:21.140
ndroid 시스템 아키텍처는 실패로 나뉩니다.

4
00:21.470 --> 00:28.520
먼저 시스템 앱과 일반 애플리케이션을 포함하는 애플리케이션 계층이 있고, 그
다음에는

5
00:28.520 --> 00:35.720
이러한 모든 관리자, 활동 관리자, 위치 관리자, 패키지 관리자 등을
포함하는 애플리케

6
00:35.720 --> 00:42.830
이션 프레임워크 계층 또는 Java API 프레임워크 계층이 있습니다.
그리고 네이티브

7
00:42.830 --> 00:48.260
C++ 라이브러리와 안드로이드 런타임을 포함하는 시스템 런타임 레이어가
있습니다.

8
00:48.680 --> 00:54.650
그 다음에는 오디오, 블루투스 카메라 센서 등에 필요한 로직이 포함된 하

9
00:54.680 --> 01:02.720
드웨어 추상화 계층 또는 선체가 있습니다. 그리고 가장 아래에는 Linu

10
01:02.720 --> 01:10.820
x 커널 계층이 있지만 오디오 바인더, 디스플레이, iPad, Bluet

11
01:10.940 --> 01:12.260
ooth 등을 위한 드라이버가 있고 가장 아래에는 전원 관리가 있습니다.

12
01:12.620 --> 01:15.860
이것이 바로 안드로이드 아키텍처의 다섯 가지 계층입니다.

13
01:16.430 --> 01:19.040
이러한 각 구성 요소에 대해 자세히 알아보겠습니다.

14
01:21.970 --> 01:28.840
애플리케이션 계층에는 기본 제공 애플리케이션과 비시스템 수준 애플리

15
01:29.290 --> 01:34.960
케이션이 모두 존재하지만 기본적으로 사용자와 직접 상호 작용하고 책

16
01:34.960 --> 01:36.760
임을 지며 일반적으로 Java 또는 Kotlin으로 개발됩니다.

17
01:37.060 --> 01:44.560
그리고 이러한 앱은 대부분 애플리케이션 개발자가 개발한 앱이며, 이후
세션에서 이러한

18
01:44.560 --> 01:51.820
시스템 앱이나 스톡 앱을 살펴보기 위해 AOSP의 일부로 제공되는 스톡 앱도
있습니다.

19
01:53.440 --> 01:59.530
애플리케이션 프레임워크 계층은 개발자에게 애플리케이션을 개발하는 데 필요한
API를 제공합니다.

20
02:00.190 --> 02:05.230
이 계층은 Java로 작성되며 Java 프레임워크라고도 할 수 있습니다.

21
02:05.440 --> 02:10.120
하지만 요즘에는 Kotlin으로 작성된 프레임워크 코드도 있습니다.

22
02:10.420 --> 02:17.500
우리는 보통 이 특정 계층에서 제공하는 API를 호출할 수

23
02:17.500 --> 02:18.760
있는 애플리케이션, 즉 안드로이드 애플리케이션을 개발합니다.

24
02:21.560 --> 02:25.400
애플리케이션 계층에서 제공하는 주요 구성 요소를 살펴보겠습니다.

25
02:26.210 --> 02:32.810
먼저 활동 관리자가 있는데, 활동 관리자는 주

26
02:32.810 --> 02:35.300
로 각 애플리케이션의 수명 주기를 관리합니다.

27
02:35.780 --> 02:40.580
따라서 각 애플리케이션은 서로 다른 활동 또는 조각으로 구축됩니다.

28
02:40.820 --> 02:48.650
따라서 각 애플리케이션 또는 애플리케이션 내의 각 활동의

29
02:48.650 --> 02:50.810
수명 주기를 관리하는 것은 활동 관리자의 책임입니다.

30
02:51.050 --> 02:52.760
다음은 위치 관리자입니다.

31
02:53.330 --> 02:59.060
위치 관리자는 지리적 위치 및 위치 기능 서비스를 제공합니다.

32
02:59.360 --> 03:04.910
예를 들어 지도는 위치 관리자를 사용하여 디바이스의 현재 위치를 가져옵니다.

33
03:05.150 --> 03:11.480
패키지 관리자, 패키지 관리자, 관리자, Android 시스템에 설치된 모든
애플리케이션.

34
03:11.930 --> 03:17.220
기본적으로 설치, 제거 및 권한 부여를 담당합니다.

35
03:17.410 --> 03:23.720
Android 시스템에 설치된 기타 애플리케이션 알림 관리자 알림 관리자를
사용하

36
03:23.720 --> 03:27.920
면 애플리케이션이 상태 표시줄에 사용자 지정 프롬프트 정보를 표시할 수
있습니다.

37
03:28.160 --> 03:34.630
예를 들어 Gmail 앱에서 이메일을 받으면 알림 관리자를

38
03:34.760 --> 03:39.200
통해 이메일이 수신되었다는 메시지가 알림창에 표시됩니다.

39
03:39.560 --> 03:41.450
그리고 리소스 관리자가 등장합니다.

40
03:41.660 --> 03:47.930
현지화된 두 개의 문자열, 그림, 레이아웃 파일, 색상 파일 등
애플리케이션이

41
03:48.320 --> 03:54.710
사용하는 다양한 비핵심 리소스를 제공합니다. 따라서 안드로이드 애플리케이션
개발

42
03:54.800 --> 04:00.170
배경이 있다면 안드로이드 애플리케이션을 개발할 때 사용하는 문자열 그림,
레이

43
04:00.170 --> 04:03.110
아웃 파일, 색상 파일, 종료 색상에 대한 현지화를 확실히 알고 있을
것입니다.

44
04:03.200 --> 04:07.370
따라서 이를 유지하는 것은 리소스 관리자의 책임입니다.

45
04:07.610 --> 04:09.260
그런 다음 전화 통신 관리자가 등장합니다.

46
04:09.440 --> 04:17.720
SIM 관리 및 네트워크 관리 등과 같은 모든 모바일 장치 기능을
관리합니다.

47
04:17.900 --> 04:26.630
그런 다음 창 관리자, 창 관리자 관리자, 열려 있는 모든

48
04:26.630 --> 04:28.640
창이 있으므로 각 활동은 기본적으로 모든 창으로 구축됩니다.

49
04:28.850 --> 04:35.180
따라서 Windows 관리 시스템에 대해 설명하는 다음

50
04:35.180 --> 04:36.140
세션에서 Windows에 대해 더 자세히 알아보겠습니다.

51
04:36.350 --> 04:42.860
콘텐츠 제공업체와 제공업체는 시스템 내의 여러

52
04:42.860 --> 04:43.340
애플리케이션 간에 데이터를 공유할 수 있습니다.

53
04:43.610 --> 04:50.420
보기 시스템 보기 시스템은 애플리케이션의 필수 새 구성 요소를 구축하는 일을
담당합니다.

54
04:50.870 --> 04:58.220
따라서 기본적으로 레이아웃을 부풀리는 역할을 하며, 이러한 레이아웃에는 여러
유형의 보기가 있습니다.

55
04:58.690 --> 05:04.700
뷰 시스템은 기본적으로 이러한 다양한 뷰를 화면에 렌더링하는 역할을
담당합니다.

56
05:05.210 --> 05:08.720
시스템 런타임 라이브러리 계층은 두 부분으로 나뉩니다.

57
05:08.930 --> 05:12.440
C++ 라이브러리 및 Android 런타임 라이브러리.

58
05:12.590 --> 05:17.600
이에 대해서는 별도로 논의하기로 하고 먼저 C++ 라이브러리를
살펴보겠습니다.

59
05:17.840 --> 05:25.310
C++ 라이브러리는 다양한 안드로이드 시스템 구성 요소에서 사용할 수 있으

60
05:25.310 --> 05:27.110
며 애플리케이션 프레임워크를 통해 개발자에게 서비스를 제공할 수 있습니다.

61
05:27.260 --> 05:34.220
따라서 애플리케이션 전체에서 사용하는 모든 비자는 이 C++ 라이브러리에
의존합니다.

62
05:34.580 --> 05:37.940
다음은 C++ 라이브러리의 몇 가지 예입니다.

63
05:38.210 --> 05:43.100
첫 번째는 임베디드 시스템용 OpenGL ES OpenGL입니다.

64
05:43.310 --> 05:49.610
따라서 기본적으로 임베디드 디바이스를 위해 특별히 설계된 3D 드로잉 함수
라이브러리입니다.

65
05:49.910 --> 05:51.200
그리고 립시가 있습니다.

66
05:51.410 --> 05:57.890
Lipsy는 기본적으로 BSD에서 상속된 표준 C 시스템 함수
라이브러리입니다.

67
05:58.310 --> 06:04.970
BSD는 버클리 소프트웨어 배포의 약자로, 특히 임베디

68
06:05.120 --> 06:05.840
드 Linux 기반 장치에 맞게 맞춤화되어 있습니다.

69
06:06.110 --> 06:08.110
그리고 미디어 프레임워크가 있습니다.

70
06:08.120 --> 06:15.620
여기에는 MP, 3, MP, 4 등과 같이 일반적으로 사용되는 다양한 오디오
및 비디오 형

71
06:15.620 --> 06:21.650
식의 녹음과 재생을 지원하는 라이브러리가 포함되어 있습니다. 그리고 A
라이트가 있습니다.

72
06:21.740 --> 06:24.650
경량 관계형 데이터베이스 엔진입니다.

73
06:24.920 --> 06:28.970
역시 모바일 디바이스용으로 개발된 경량 솔루션입니다.

74
06:29.090 --> 06:33.800
그리고 여전히 단순한 그래픽 라이브러리를 의미합니다.

75
06:33.980 --> 06:38.510
이것이 바로 안드로이드의 기본 2D 그래픽 렌더링 엔진입니다.

76
06:38.510 --> 06:40.160
그리고 SSL이 있습니다.

77
06:40.280 --> 06:46.820
보안 소켓 계층은 네트워크 통신에 보안과 데이터 무결성을 제공하는

78
06:46.820 --> 06:50.310
보안 프로토콜이지만, 이는 매우 일반적인 보안 프로토콜입니다.

79
06:50.450 --> 06:52.370
마지막으로 무료 유형이 있습니다.

80
06:52.610 --> 06:56.180
이는 기본적으로 다양한 종류의 휴대폰을 관리하기 위한 것입니다.

81
06:56.600 --> 06:59.420
따라서 이것은 기본적으로 휴대용 전화 엔진입니다.

82
06:59.720 --> 07:04.970
다양한 글꼴 파일 형식에 액세스할 수 있는 통합 인터페이스를 제공합니다.

83
07:05.240 --> 07:13.820
안드로이드 시스템 런타임 레이어 런타임 라이브러리에서 찾을 수 있는 주요
C++ 라이브러리

84
07:13.820 --> 07:20.960
는 코어 라이브러리와 코드 라이브러리에서 가장 많이 제공하는 안드로이드
원으로 나뉩니다.

85
07:21.030 --> 07:27.990
자바 언어 중 Gore 라이브러리는 개발자가 자바 언어를 사용하여

86
07:27.990 --> 07:29.140
안드로이드 애플리케이션을 작성할 수 있도록 지원하는 기능을 합니다.

87
07:29.160 --> 07:35.460
따라서 코드 라이브러리의 목적은 단순히 라이브러리 함수라는 Java 언어를
제공하는 것입니다.

88
07:35.890 --> 07:42.990
이제 Dalvik 가상 머신 또는 RPA와 관련하여 자동화를 Java 가상
머신과 비교할 수

89
07:42.990 --> 07:49.020
있지만 John Dalvik 가상 머신은 모바일 장치에 맞게 특별히
맞춤화되어 있습니다.

90
07:49.260 --> 07:56.940
제한된 메모리에서 여러 가상 머신 인스턴스를 동시에 실행할 수 있으며

91
07:56.940 --> 08:01.260
, 각 동적 애플리케이션은 독립적인 Linux 프로세스로 실행됩니다.

92
08:01.410 --> 08:09.450
따라서 별도의 프로세스가 있기 때문에 가상 머신이 충돌할 때 모든 프로그램이
종료되는 것을 방지합니다.

93
08:09.750 --> 08:12.810
따라서 프로세스가 다르다는 점이 가장 큰 장점입니다.

94
08:13.020 --> 08:20.510
가상 머신이 충돌하는 경우에도 모든 앱이나

95
08:20.520 --> 08:23.010
프로그램에 접근하지 못하도록 차단합니다.

96
08:23.010 --> 08:30.840
달빅 가상 머신을 RPA로 마이그레이션한 이유는 Arrow가

97
08:30.840 --> 08:32.490
기존 자동화에 비해 몇 가지 이점을 제공하기 때문입니다.

98
08:32.640 --> 08:39.030
따라서 Dalbec에서는 바이트코드를 Just-In-Time 컴파일러를 통해
머신 코드로 변환해야 합니다.

99
08:39.150 --> 08:45.570
애플리케이션이 실행될 때마다 Dalvik은 기본적으로 저스트 인 타임
캠페인을 사용했습니다.

100
08:45.750 --> 08:50.460
따라서 애플리케이션이 실행될 때마다 미션 코드의 코드를 변환해야 합니다.

101
08:50.580 --> 08:56.520
이렇게 하면 애플리케이션이 시작될 때마다 먼저 머신 코드로 변환한

102
08:56.520 --> 09:00.570
다음 앱을 실행해야 하므로 애플리케이션의 상승 효율이 느려집니다.

103
09:01.050 --> 09:08.460
안드로이드 파일에 RTM을 도입하면

104
09:08.460 --> 09:08.970
실제로 앱 실행 속도가 느려집니다.

105
09:09.270 --> 09:16.290
모든 애플리케이션의 코드는 기기에 처음 설치

106
09:16.290 --> 09:16.980
될 때 미리 컴파일된 정보 코드가 됩니다.

107
09:17.160 --> 09:20.730
이렇게 하면 애플리케이션이 진정한 로컬 애플리케이션이 됩니다.

108
09:20.910 --> 09:27.570
이러한 방식으로 R.T는 Dalvik에 비해 더 빠르게 앱을 보호할 수
있습니다.

109
09:28.790 --> 09:33.800
이제 하드웨어 추상화 계층을 살펴보겠습니다. 하드웨어 추상화에

110
09:33.800 --> 09:37.340
는 운영 체제 커널과 하드웨어 사이의 인터페이스가 있습니다.

111
09:37.430 --> 09:44.210
그 목적은 하드웨어 제조업체의 지적 재산권을 보호하기 위해 하드웨어를
추출하는 것입니다.

112
09:44.570 --> 09:52.010
하드웨어 인터페이스, 특정 플랫폼의 세부 정보를 숨기고 운영 체제에

113
09:52.010 --> 09:56.300
가상 하드웨어 플랫폼을 제공하여 하드웨어 독립성을 갖도록 합니다.

114
09:56.310 --> 10:03.410
소프트웨어 및 하드웨어 테스트의 관점에서 다양한 플랫폼에 이식할 수
있습니다.

115
10:03.710 --> 10:09.890
하드웨어 추상화 계층을 기반으로 소프트웨어와 하드웨어 테스트를 모두 완료할

116
10:09.890 --> 10:13.880
수 있으므로 소프트웨어와 하드웨어 테스트를 동시에 수행할 수 있습니다.

117
10:14.090 --> 10:20.210
쉽게 말해서 하드웨어 추상화 계층의 위 퍼즐은 하드웨어를 제어하는 것입니다.

118
10:21.810 --> 10:27.610
이제 Android의 가장 아래 계층인

119
10:27.610 --> 10:27.960
Linux 커널 계층을 살펴 보겠습니다.

120
10:27.960 --> 10:35.220
서비스는 Linux 커널에 따라 달라지며 오디오 디스플레이, 키패드,
Bluetooth

121
10:35.340 --> 10:40.560
USB 등과 같은 일부 Android 전용 드라이버가 이를 기반으로
추가되었습니다.

122
10:40.830 --> 10:47.970
안드로이드 시스템 보안, 메모리 관리 프로세스 관리 네트워크 프로토콜 스택
및 드라이버

123
10:47.970 --> 10:54.780
모델은 이 리눅스 커널에 의존하므로 안드로이드가 더욱 안전하고 안정적으로
작동합니다.

124
10:55.080 --> 11:01.740
여기까지 안드로이드 아키텍처에 대해 알아봤는데, 이 이중 계층 안드로이드
아키텍처

125
11:01.740 --> 11:06.930
를 이해하면 이후 튜토리얼에서 시스템 소스 코드를 분석할 때 도움이 될
것입니다.


