⛄ 안드로이드 스튜디오 구조

App

1. Manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.pytorch.helloworld">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

</manifest>
  • AndroidManifest.xml -> app을 구동하는데 필요한 설정값


📌 package

  • 앱의 식별자인 패키지 정보 등록
  • manifest태그의 package 속성
  • 패키지 이름은 다양한 곳에서 사용
    • 코드의 네임스페이스
      코드가 있는 위치를 말하며 코드의 네임스페이스와 일치하고, 일치해야한다.
    • 구성요소 위치 확인
      매니페스트에 선언된 안ㄷ로이드 구성요소의 위치를 확인할 때, 패키지 이름에 해당하는 경로를 기본 경로로 사용

📌 application

<activity/service/provider/recevier>
	<intent-filter>
    	<action>
        <category>
        <data>
  • 애플리케이션의 각 구성요소 선언, 모든 구성요소에 영향을 줄 수 있는 속성을 가진 하위요소를 포함
  • 'application'위에 'activity'가 실행되는 구조
  • activity를 만들때마다 매니페스트 파일에 activity 태그가 추가 됨
  • manifest > application > application

2. java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}
  • 앱이 작동하는 방식에 대해 정의하는 java 파일
  • setContentView(R.layout.activity_main)
    -> 원하는 파일을 AMD로 나타냄

3.res

  • drawable : 이미지 저장
  • mipmap : 아이콘 파일 저장
  • layout : xml파일 저장
  • values : 앱의 테마나 자주 사용하는 컬러코드 문자열 저장

4. Gradle

  • 빌드 및 라이브 관련 설정 관리
  • 개발하며 건드릴 일이 거의 없음
  • Gradle 폴더는 Project, Module로 나뉜다
    • Project : 여러 프로젝트를 모아놓은 큰 범위

    • Module : 여러 프로젝트들 중에서 개별 프로젝트의 단위


📌 build.gradle(Project:My Application)

buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.2.2"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

1) buildscript

  • respositories : 빌드할 때 도움을 받게될 저장소 표시(라이브러리 같은 개념)
  • dependencies : 이 애플리케이션이 작동하기 위해 필요한 라이브러리들을 적는 곳

2) allprojects

  • respositories : 위의 buildscript > repositories와 동일한 외부저장소 설정

3) task

  • 프로젝트 전체적으로 공통으로 사용할 작업 정의
    • clean(type:Delete) : 기본으로 추가, 빌드시 생성되는 디렉토리들을 삭제

📌 build.gradle(Module:My Application)

plugins {
    id 'com.android.application'
}

android {
    compileSdkVersion 31
    buildToolsVersion "31.0.0"

    defaultConfig {
        applicationId "com.example.myapplication"
        minSdkVersion 16
        targetSdkVersion 31
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {

    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.google.android.material:material:1.5.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}
  • 모듈 수준의 그레이들 설정 파일, 각 모듈마다 생성

1) plugin

  • 안드로이드 개발을 위한 플러그인 설정

2) android

  • compileSdkVersion : 컴파일 SDK버전 설정
  • BuildToolVersion : 앱빌드시 기준이 되는 버전
  • defaultConfig : 각종 버전 정보 설정

좋은 웹페이지 즐겨찾기