Android
기본 정보
- 명칭: Android
- 개발사: Google
- 분류: 모바일 운영체제
- 기반: Linux Kernel
- 주요 사용 기기: 스마트폰, 태블릿, TV, 웨어러블, 차량용 기기
- 주요 개발 언어: Kotlin, Java
- 주요 개발 도구: Android Studio
- 앱 배포 방식: Google Play Store, APK, AAB
- 관련 기술: Kotlin, Java, Android Studio, Gradle, PWA
개요
Android는 Google이 개발한 모바일 운영체제이다.
스마트폰, 태블릿, TV, 웨어러블, 자동차 시스템 등 다양한 기기에서 사용되며, 전 세계에서 가장 널리 사용되는 모바일 운영체제 중 하나이다.
Android 앱은 일반적으로 Android Studio를 사용해 개발하며, Kotlin 또는 Java를 주로 사용한다.
웹 개발 관점에서는 Android Chrome, PWA, 모바일 반응형, WebView, 푸시 알림, 파일 업로드, 앱 링크 등과도 관련이 깊다.
Android 구조
사용자
↓
Android 기기
↓
Android OS
↓
앱
↓
Linux Kernel
↓
하드웨어
앱 실행 구조
사용자 터치
↓
Android 이벤트 처리
↓
Activity 실행
↓
View 렌더링
↓
화면 표시
주요 특징
- 오픈소스 기반 운영체제
- 다양한 제조사 기기 지원
- Google Play Store 중심 앱 배포
- Kotlin과 Java 기반 앱 개발
- 높은 커스터마이징 가능성
- 다양한 화면 크기 지원
- 위젯, 알림, 백그라운드 작업 지원
- 카메라, 위치, 블루투스, 센서 등 하드웨어 접근 가능
- APK 또는 AAB 형태로 배포 가능
Android 앱 개발 방식
Android 앱 개발은 크게 세 가지 방식으로 나눌 수 있다.
| 방식 | 설명 |
|---|---|
| Native App | Kotlin, Java로 Android 앱 직접 개발 |
| Cross Platform App | Flutter, React Native 등으로 개발 |
| Web App / PWA | HTML, CSS, JavaScript 기반으로 개발 |
Native App
Native App은 Android 환경에 맞춰 직접 개발하는 앱이다.
주요 기술은 다음과 같다.
Kotlin 예제
fun main() {
println("Hello Android")
}
Jetpack Compose
Jetpack Compose는 Android의 선언형 UI 프레임워크이다.
데이터
↓
Composable Function
↓
상태 변경
↓
UI 자동 갱신
예시:
@Composable
fun Greeting(name: String) {
Text(text = "Hello $name")
}
XML Layout
Android에서는 XML을 사용해 화면을 구성할 수도 있다.
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello Android" />
XML Layout은 기존 Android 프로젝트에서 많이 사용되며, Jetpack Compose 이전의 대표적인 UI 구성 방식이다.
Activity
Activity는 Android 앱의 화면 단위이다.
앱 실행
↓
MainActivity
↓
화면 표시
Kotlin 예시:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
}
Fragment
Fragment는 Activity 안에서 재사용 가능한 UI 조각이다.
Activity
├── Fragment A
├── Fragment B
└── Fragment C
Fragment는 화면 일부를 교체하거나, 태블릿처럼 큰 화면에서 여러 영역을 나눌 때 자주 사용된다.
Android Studio
Android Studio는 Google 공식 Android 개발 도구이다.
주요 기능:
- Android 앱 개발
- Kotlin / Java 코드 작성
- 에뮬레이터 실행
- 디버깅
- Gradle 빌드
- APK / AAB 생성
- UI 미리보기
- 성능 분석
- Google Play 배포 준비
Android 프로젝트 구조
MyApp/
├── app/
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ ├── res/
│ │ │ └── AndroidManifest.xml
│ └── build.gradle
│
├── build.gradle
└── settings.gradle
AndroidManifest.xml
AndroidManifest.xml은 Android 앱의 핵심 설정 파일이다.
앱 이름, 권한, Activity, Service, Receiver 등을 등록한다.
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:theme="@style/Theme.MyApp"
android:label="MyApp">
<activity android:name=".MainActivity" />
</application>
</manifest>
Gradle
Gradle은 Android 프로젝트의 빌드 도구이다.
라이브러리 추가, 앱 버전 설정, SDK 설정, 빌드 설정 등을 담당한다.
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}
android {
namespace 'com.example.myapp'
compileSdk 35
defaultConfig {
applicationId 'com.example.myapp'
minSdk 23
targetSdk 35
versionCode 1
versionName '1.0'
}
}
앱 배포 과정
앱 개발
↓
테스트
↓
빌드 생성
↓
AAB 생성
↓
Google Play Console 업로드
↓
검토
↓
출시
APK와 AAB
| 항목 | 설명 |
|---|---|
| APK | Android 앱 설치 파일 |
| AAB | Google Play 배포용 앱 번들 |
| Debug APK | 개발 테스트용 빌드 |
| Release APK | 실제 배포용 빌드 |
최근 Google Play 배포에서는 AAB 형식을 주로 사용한다.
Android 권한 관리
Android는 개인정보와 보안을 위해 권한 시스템을 사용한다.
대표 권한:
| 권한 | 설명 |
|---|---|
| INTERNET | 인터넷 사용 |
| CAMERA | 카메라 접근 |
| RECORD_AUDIO | 마이크 접근 |
| ACCESS_FINE_LOCATION | 정확한 위치 정보 |
| READ_MEDIA_IMAGES | 이미지 접근 |
| POST_NOTIFICATIONS | 알림 권한 |
| BLUETOOTH_CONNECT | 블루투스 연결 |
런타임 권한
일부 권한은 앱 실행 중 사용자에게 직접 허용을 받아야 한다.
앱 실행
↓
권한 필요
↓
사용자에게 요청
↓
허용 또는 거부
↓
기능 실행
Android와 iOS 비교
| Android | iOS |
|---|---|
| Google 중심 | Apple 중심 |
| 다양한 제조사 기기 | Apple 기기 중심 |
| Kotlin, Java 사용 | Swift, Objective-C 사용 |
| Google Play 배포 | App Store 배포 |
| 커스터마이징 자유도 높음 | 생태계 통제 강함 |
| 기기 다양성 높음 | 기기 최적화 우수 |
| APK 설치 가능 | App Store 중심 설치 |
Android와 PWA
Android에서는 PWA를 비교적 잘 지원한다.
Chrome 브라우저에서 웹사이트를 홈 화면에 추가하면 앱처럼 사용할 수 있다.
웹사이트
↓
Chrome
↓
홈 화면에 추가
↓
앱처럼 실행
Android PWA 기본 구성
프로젝트/
├── index.html
├── manifest.json
├── service-worker.js
└── icons/
Web App Manifest
Android PWA에서는 manifest.json 설정이 중요하다.
{
"name": "My App",
"short_name": "MyApp",
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#222222",
"icons": [
{
"src": "/icons/icon-192.png",
"sizes": "192x192",
"type": "image/png"
}
]
}
Android WebView
WebView는 Android 앱 안에서 웹페이지를 보여주는 컴포넌트이다.
Android App
↓
WebView
↓
HTML / CSS / JavaScript
활용 예시:
- 하이브리드 앱
- 관리자 페이지 앱
- 웹 기반 서비스 앱
- 내부 업무용 앱
WebView 주의사항
- JavaScript 사용 여부 설정 필요
- 파일 업로드 처리 필요
- 뒤로가기 처리 필요
- 외부 링크 처리 필요
- 보안 설정 주의
- HTTPS 사용 권장
- 앱과 웹 간 통신 설계 필요
모바일 반응형 설정
Android Chrome에서도 viewport 설정은 중요하다.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
게임처럼 확대/축소를 막고 싶을 때는 다음처럼 사용하기도 한다.
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
단, 접근성 측면에서는 확대 제한을 신중하게 사용해야 한다.
Android에서 Canvas 사용
Android 웹 게임에서 Canvas를 사용할 때는 다음을 고려해야 한다.
- 터치 입력
- 화면 비율
- devicePixelRatio
- 저사양 기기 성능
- 브라우저별 차이
- 스크롤 방지
- 사운드 자동 재생 제한
const dpr = Math.min(window.devicePixelRatio || 1, 2);
canvas.width = 420 * dpr;
canvas.height = 640 * dpr;
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
Android 앱 개발 흐름
아이디어
↓
화면 설계
↓
Android Studio 프로젝트 생성
↓
Kotlin / Java 개발
↓
에뮬레이터 테스트
↓
실기기 테스트
↓
Google Play 배포
Android 웹앱 개발 흐름
HTML
↓
CSS 반응형
↓
JavaScript 기능 구현
↓
PWA 설정
↓
Android Chrome 테스트
↓
홈 화면 추가 테스트
장점
- 다양한 기기에서 사용 가능
- 오픈소스 기반
- 앱 배포 방식이 비교적 유연함
- Kotlin으로 생산성 높은 개발 가능
- Google 서비스와 연동 용이
- PWA 지원이 좋음
- 하드웨어 접근 범위가 넓음
단점
- 기기 종류가 많아 테스트 범위가 넓음
- 제조사별 OS 커스터마이징 차이 존재
- 화면 크기와 해상도 대응 필요
- 백그라운드 정책 변화에 주의 필요
- 저사양 기기 최적화 필요
- 보안 권한 관리가 중요함
대표 활용 분야
- 모바일 앱
- 모바일 게임
- 쇼핑 앱
- 금융 앱
- 배달 앱
- 지도 앱
- 헬스케어 앱
- 사내 업무 앱
- PWA
- 하이브리드 앱
- WebView 앱
실무 메모
- Android 앱 개발은 Kotlin과 Android Studio 학습이 기본이다.
- 기존 프로젝트 유지보수에서는 Java와 XML Layout도 자주 만난다.
- 신규 앱은 Jetpack Compose 사용을 검토할 수 있다.
- 화면 크기와 해상도 대응은 필수이다.
- 실제 기기 테스트가 중요하다.
- 권한 요청은 필요한 시점에만 하는 것이 좋다.
- Google Play 배포는 AAB 형식을 주로 사용한다.
- WebView 앱은 보안 설정을 반드시 점검해야 한다.
- PWA는 Android에서 iOS보다 지원 범위가 넓은 편이다.
- 모바일 게임은 터치 입력, 성능, 화면 비율을 먼저 확인한다.
- 이미지, 사운드, 영상 리소스는 모바일 환경에 맞게 최적화한다.
- 오래 실행되는 작업은 WorkManager 같은 백그라운드 작업 방식을 검토한다.
Android와 함께 사용하는 기술
- Kotlin
- Java
- Android Studio
- Gradle
- Jetpack Compose
- XML
- PWA
- HTML
- CSS
- JavaScript
- Canvas
- WebView
- Firebase
대표 활용 사례
- Android 스마트폰 앱 개발
- 모바일 게임 출시
- PWA 홈 화면 앱
- 쇼핑몰 모바일 앱
- Canvas 기반 웹 게임
- WebView 기반 하이브리드 앱
- 위치 기반 서비스
- 푸시 알림 앱
- 음악 플레이어 앱
- 사내 업무용 앱
- IoT 제어 앱
관련 문서
- Kotlin
- Java
- Android Studio
- Gradle
- Jetpack Compose
- PWA
- Service Worker
- Web App Manifest
- HTML
- CSS
- JavaScript
- Canvas
- WebView
- Firebase
출처
- Android Developers
- Android Studio Documentation
- Kotlin Documentation