안드로이드는 리눅스 기반으로 운영되며 자바와 코틀린 언어를 사용해 개발된다.

안드로이드는 런타임때 그대로 실행하지 않고 DEX 파일로 컴파일하여 ART가 DEX 파일을 해석 후 실행한다.
안드로이드에서는 클래스로 각각의 컴포넌트를 개발한다.
안드로이드의 컴포넌트는 총 4종류이다
Activity : 액티비티 화면 구성Service : 서비스 백그라운드 작업ContentProvider : 앱의 데이터 공유BroadcastReciver : 시스템 이벤트 발생 시 실행각각의 컴포넌트는 앱 안에서 독립된 실행 단위이기에 코드 결합이 발생하지 않고 앱의 실행 시점이 다양하다. 각각 독립된 실행 단위이기에 다른 애플리케이션을 라이브러리처럼 사용 가능하다. 우리가 카카오톡 내에서 카메라 기능을 사용할 수 있는 것 처럼 말이다.
안드로이드 스튜디오를 실행하면 res라는 폴더가 생성된다.

해당 폴더는 drawable, mipmap ,layout 등의 하위 폴더로 구성되며 각 리소스 폴더에 하위 폴더를 정의하지 못하며 리소스 파일명은 알파벳 대문자를 사용하지 못한다.
drawable : 이미지 리소스layout : UI 구성에 필요한 xml 리소스mipmap : 앱 아이콘 이미지values : 문자열 등의 값으로 이용되는 리소스AndroidManifest.xml은 안드로이드 앱의 메인 환경 파일이다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<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.MyApplication"
tools:targetApi="31">
<receiver
android:name=".ReplyReciver"
android:enabled="true"
android:exported="true"></receiver>
<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>
다음과 같은 코드로 구성되어 있으며 <application> 태그는 앱 전체를 대상으로 하는 설정이다. 이 태그 안에 icon 속성은 저장한 이미지가 앱을 설치한 사용자의 폰에 보이는 실행 아이콘이다. label은 앱의 이름이다.
처음 프로젝트를 생성하게 되면 MainActivity.kt 파일이 생성되는데 이 파일이 안드로이드 스튜디오의 메인 액티비티 파일이 된다.
class MainActivity : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?){
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_main)
}
}
위와 같은 구조로 기본 파일이 생성된다.
setContentView() 함수의 매개변수에 지정한 내용을 액티비티 화면에 출력한다. 여기서는 R.layout.activity_main으로 지정했기에 res/layout/activity_main.xml 파일에 구성한 내용이 화면에 출력된다.
그리고 중간에 보이는 enableEdgeToEdge() 함수는 액티비티 화면이 상단의 배터리 표시 영역과 하단의 안드로이드 버튼 영역까지 나오도록 설정한 것이다.