01. 안드로이드 개요

하이솝·2026년 3월 4일

수업 목표

  • 안드로이드 스튜디오를 사용해서 앱을 개발할 수 있다.
  • 코틀린 언어를 이해하고 사용할 수 있다.
  • 안드로이드 SDK의 다양한 API를 이해하고 앱 개발에 활용할 수 있다.

학습 목표

  • 모바일 운영체제인 안드로이드의 특징과 구조를 설명할 수 있다.
  • 안드로이드 스튜디오를 다운로드하고 설치할 수 있다.
  • 안드로이드 스튜디오를 이용하여 프로젝트를 만들고 앱을 빌드하여 에뮬레이터에서 실행할 수 있다.
  • 안드로이드 스튜디오를 이용하여 디버깅을 할 수 있다.
  • 안드로이드 앱 자동 테스트를 할 수 있다.
  • AI Agent에게 코드 생성이나 디버깅을 지시할 수 있다.

01. 안드로이드

스마트폰 태블릿 등의 모바일 디바이스를 위한 모바일 운영체제

리눅스 커널을 기반으로 한 소프트웨어 스택

  • C/C++ 라이브러리, 안드로이드 런타임,
    응용 프레임워크(Application Framework)

오픈소스 프로젝트 (Android Open Source Project, AOSP)

  • 구글은 AOSP를 기반으로 구글 버전 안드로이드를 출시함
  • AOSP를 기반으로 한 다른 OS도 존재하지만 영향력은 크지 않음

안드로이드 소프트웨어 스택

  • Linux Kernal: 스레드, 저수준 메모리 관리 기능 등 기능 제공, 리눅스 커널의 보안 기능
  • HAL: 위쪽 레이어에 표준화된 하드웨어 접근 인터페이스 제공
  • ART: DEX 코드를 수행하기 위한 가상 머신, 앱 마다 프로세스가 할당되고 ART 인스턴스가 생성됨. AOT, JIT, OPTIMIZED GC
  • C/C++ 라이브러리: ART, HAL 등에서 필요로 하는 C/C++ 라이브러리, 일부 라이브러리는 JAVA API를 통해 앱에서도 사용함
    NDK를 사용하면 직접 C/C++ libs 사용 가능
  • Java API Framework: 앱에서 사용하는 모든 API 제공

Appium

모바일 앱 전용 자동화 테스트 도구

스마트폰 앱(ios, Android)이 제대로 작동하는지 사람이 일일이 클릭하지 않고 코드로 테스트할 수 있게 도와주는 프레임워크

특징

  • 크로스 플랫폼(Cross Platform): 하나의 테스트 코드로 Android와 ios 양쪽 모두에서 테스트가 가능(코드 재사용성이 높음)
  • 모든 앱 형태 지원
  • 언어의 자유: 특정 언어에 종속되지 않음. Java, Python, JS 등 개발자가 익숙한 언어로 테스트 코드를 짤 수 있음
  • 소스 코드 불필요: 앱의 소스 코드가 없어도 빌드된 파일(.apk, or .ipa)만 있으면 테스트를 할 수 있음

구조

클라이언트-서버 구조로 동작

  1. Appium Client: 개발자가 작성한 테스트 코드로, "버튼을 눌러라"와 같은 명령을 내림
  2. Appium Server: HTTP 서버 역할을 하며, 클라이언트의 명령을 받음
  3. 모바일 기기: 서버는 받은 명령을 모바일 OS가 이해할 수 있는 방식(UI Automator 등)으로 변환하여 기기(에뮬레이터나 실제 폰)에 전달

Question

프레임워크란?

소프트웨어를 만들기 위한 뼈대나 틀

라이브러리 vs 프레임워크

  • 라이브러리: 내가 필요할 때 마다 꺼내서 쓰는 도구
  • 프레임워크: 내가 그 안에 들어가서 규칙을 따라야 하는 틀

사용하는 이유?

  • 생산성 향상: 로그인, 데이터베이스 연결, 보안 설정 등 복잡하고 반복적인 기능을 프레임워크가 미리 다 만들어놓음
  • 품질 보증: 이미 수많은 개발자가 검증한 틀이기 때문에, 초보자가 짜도 어느 정도 안정적인 구조의 코드가 만들어짐
  • 유지보수 용이: 정해진 규칙에 따라 코드를 작성하기 때문에 다른 사람이 봐도 내 코드 어디에 무엇이 있는지 알 수 있음

예시
Android 분야의 Android SDK: 안드로이드 앱을 만드는 표준 틀
Java의 Spring: 대한민국 백엔드 개발의 표준
JavaScript의 React.js: 웹 화면을 체계적으로 구성할 때 사용

소스 코드란?

사람이 이해할 수 있는 언어로 작성된 컴퓨터 설계도

0개의 댓글