- 안드로이드 스튜디오를 사용해서 앱을 개발할 수 있다.
- 코틀린 언어를 이해하고 사용할 수 있다.
- 안드로이드 SDK의 다양한 API를 이해하고 앱 개발에 활용할 수 있다.
- 모바일 운영체제인 안드로이드의 특징과 구조를 설명할 수 있다.
- 안드로이드 스튜디오를 다운로드하고 설치할 수 있다.
- 안드로이드 스튜디오를 이용하여 프로젝트를 만들고 앱을 빌드하여 에뮬레이터에서 실행할 수 있다.
- 안드로이드 스튜디오를 이용하여 디버깅을 할 수 있다.
- 안드로이드 앱 자동 테스트를 할 수 있다.
- AI Agent에게 코드 생성이나 디버깅을 지시할 수 있다.
스마트폰 태블릿 등의 모바일 디바이스를 위한 모바일 운영체제
리눅스 커널을 기반으로 한 소프트웨어 스택
- 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 제공
모바일 앱 전용 자동화 테스트 도구
스마트폰 앱(ios, Android)이 제대로 작동하는지 사람이 일일이 클릭하지 않고 코드로 테스트할 수 있게 도와주는 프레임워크
특징
- 크로스 플랫폼(Cross Platform): 하나의 테스트 코드로 Android와 ios 양쪽 모두에서 테스트가 가능(코드 재사용성이 높음)
- 모든 앱 형태 지원
- 언어의 자유: 특정 언어에 종속되지 않음. Java, Python, JS 등 개발자가 익숙한 언어로 테스트 코드를 짤 수 있음
- 소스 코드 불필요: 앱의 소스 코드가 없어도 빌드된 파일(
.apk, or.ipa)만 있으면 테스트를 할 수 있음구조
클라이언트-서버 구조로 동작
- Appium Client: 개발자가 작성한 테스트 코드로, "버튼을 눌러라"와 같은 명령을 내림
- Appium Server: HTTP 서버 역할을 하며, 클라이언트의 명령을 받음
- 모바일 기기: 서버는 받은 명령을 모바일 OS가 이해할 수 있는 방식(UI Automator 등)으로 변환하여 기기(에뮬레이터나 실제 폰)에 전달
프레임워크란?
소프트웨어를 만들기 위한 뼈대나 틀
라이브러리 vs 프레임워크
- 라이브러리: 내가 필요할 때 마다 꺼내서 쓰는 도구
- 프레임워크: 내가 그 안에 들어가서 규칙을 따라야 하는 틀
사용하는 이유?
- 생산성 향상: 로그인, 데이터베이스 연결, 보안 설정 등 복잡하고 반복적인 기능을 프레임워크가 미리 다 만들어놓음
- 품질 보증: 이미 수많은 개발자가 검증한 틀이기 때문에, 초보자가 짜도 어느 정도 안정적인 구조의 코드가 만들어짐
- 유지보수 용이: 정해진 규칙에 따라 코드를 작성하기 때문에 다른 사람이 봐도 내 코드 어디에 무엇이 있는지 알 수 있음
예시
Android 분야의 Android SDK: 안드로이드 앱을 만드는 표준 틀
Java의 Spring: 대한민국 백엔드 개발의 표준
JavaScript의 React.js: 웹 화면을 체계적으로 구성할 때 사용
소스 코드란?
사람이 이해할 수 있는 언어로 작성된 컴퓨터 설계도