티스토리 뷰
안드로이드 앱 개요
1. 안드로이드 앱
- 앱 컴포넌트(들), 매니페스트 파일, 리소스
- 확장자 .apk인 아카이브 파일로 컴파일됨
- 서로 다른 앱 간 분리: 각 앱은 별도 리눅스 프로세스에서 실행되며 자체 가상머신을 가짐
2. 앱 컴포넌트 유형
- Activity
- Broadcast receiver
- Content provider
- Service
3. 인텐트
- 하나의 앱에서 동일 앱 내 컴포넌트 혹은 다른 앱 내 컴포넌트를 인텐트를 통해 시작시킬 수 있음
- 명시적 인텐트: 시작시킬 컴포넌트의 클래스 이름을 명확히 설정하여 해당 컴포넌트를 시작
- 암시적 인텐트: 시작시킬 작업 유형을 바탕으로 안드로이드 시스템이 장치 내 해당 작업 유형을 만족하는 컴포넌트를 시작
4. 매니페스트 파일
- 앱 구성요소 (activity, broadcast receiver, content provider, service) 선언
- 앱 요구사항 선언: 사용자 권한(예: 인터넷 접근, 연락처 접근), 최소 요구 안드로이드 버전, H/W 요구 기능(예: 카메라 필요 등)
5. 리소스
- 이미지, 오디오, 메뉴, 색상 등 리소스를 소스코드와 분리
안드로이드 앱 구조
AndroidManifest.xml (매니페스트 파일)
- <uses-permission android:name="android.permission.INTERNET" />: 애플리케이션이 인터넷에 접근 가능하도록 허용
- 해당 문장을 추가하지 않으면 애뮬레이터 실행 후 앱을 통해서 인터넷 접속 시 컴퓨터 강제 종료 등 오류 발생 가능!
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.test">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Test"
android:usesCleartextTraffic="true"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
activity_main.xml (레이아웃 리소스 파일)
- 해당 파일이 없어도 MainActivity.java에서 화면을 구성할 수 있음, optional한 파일
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
MainActivity.java
package com.example.exam;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
'학업 > 모바일프로그래밍' 카테고리의 다른 글
[Android Studio] 이벤트 처리: 클릭 시 배경색 변경 (0) | 2024.10.20 |
---|---|
[Android Studio] LinearLayout 수직 배치하기 연습 (0) | 2024.10.20 |
[Android Studio] 화면에 텍스트 여러 개 표시하기 (0) | 2024.10.19 |
[Android Studio] 화면에 텍스트 표시하기 (1) | 2024.10.17 |
[Android Studio] 개발 환경 설치 (4) | 2024.10.15 |
공지사항
링크