[안드로이드]안드로이드 스튜디오 익숙해지기

dada·2021년 8월 23일
4

Android

목록 보기
2/16
post-thumbnail
post-custom-banner

✅프로젝트/모듈/패키지/클래스 상하관계

✅Android View

  • 어떤 프로젝트를 Android Studio로 실행하면 기본적으로 해당 프로젝트의 구조를 Android 뷰로 보여줌
  • 해당 프로젝트가 컴퓨터에 연결된 디스크에 실제로 저장되는 구조와는 다르게 보임
  • 하지만 가장 상위 폴더가 모듈별로 보여지기 때문에 프로젝트 구조를 한 눈에 보기 좋음=특별한 일 아니면 안드로이드 뷰로 개발하자
  • Gradle Scripts? 프로젝트의 모든 빌드 관련 구성 파일을 Gradle Scripts 라는 최상위 폴더로 묶어서 보여줌 하지만 실제 디스크 상에서는 이렇게 묶여있지 않음

✅Project View

  • Project 뷰

    • Android 뷰에서 편의상 숨겨진 모든 파일을 모두 보여주고, 실제 디스크에 저장되는 프로젝트 구조로 보임
    • Project 뷰에서의 빌드 구성 파일은 하나의 폴더로 묶여있지 않음 App의 빌드 구성 파일은 App 폴더 안에 있으며, 프로젝트 전체의 빌드 구성 파일은 App 폴더와 같은 depth에 위치

✅manifests

  • XML문법을 따름
  • manyfasts는 app의 지도같은 역할
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.kotlin_study">
    //패키지 명

    <application 
        android:allowBackup="true"
        //앱 삭제 후 재설치해도 로그인 등의 기록 남게함
        android:icon="@mipmap/ic_launcher"
        //res폴터 안에 minimap폴더 안에 기본으로 저장되어있는 아이콘 이미지
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        //res폴터 안에 minimap폴더 안에 기본으로 저장되어있는 둥근 아이콘 이미지
        android:supportsRtl="true"
        //오른쪽->왼쪽으로 글 읽을 수 있게 함
        android:theme="@style/Theme.Kotlin_Study">
        //테마 위에 녹색으로 설정되어있는 부분(기본값 태마)
     
     <activity //액티비티는 안드로이드에서 화면 하나 라고 생각해
            android:name=".MainActivity"
            //JAVA폴더 밑에 패키지 밑에 있는 파일이름과 동일해야함
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                //액티비티를 런쳐로 만들어줌
                //앱을 켰을때 최초로 나오는 화면
            </intent-filter>
        </activity>
    </application>

</manifest>

manifest
모든 앱 프로젝트는 프로젝트 소스 세트의 루트에 AndroidManifest.xml 파일(정확히 이 이름)이 있어야함 매니페스트 파일은 Android 빌드 도구, Android 운영체제 및 Google Play에 앱에 관한 필수 정보를 설명
application
애플리케이션 선언. 이 요소는 애플리케이션의 각 구성요소를 선언하고 모든 구성요소에 영향을 줄 수 있는 속성을 가진 하위 요소를 포함
activity
애플리케이션의 시각적 사용자 인터페이스 요소를 구현하는 액티비티(Activity 하위 클래스)를 선언
intent-filter
활동, 서비스, broadcast receiver가 응답할 수 있는 인텐트의 유형을 지정합니다. 인텐트 필터는 상위 구성요소의 기능, 즉 활동이나 서비스가 할 수 있는 작업과 수신기가 처리할 수 있는 브로드캐스트의 유형을 선언

✅Gradle Scripts

✅build.gradle(project:~)

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
    //우리가 사용하는 외부의 라이브러리 같은거 쓸때 하래 두 저장소에서 가져옴
        google()
        mavenCentral()
    }
    dependencies {
    //우리 프로젝트가 만들어질때 쓰는 거
        classpath "com.android.tools.build:gradle:7.0.1"
        //프로젝트가 사용중인 gradle버전
        //라이브러리를 관리할때 gradle을 사용
        //컴파일할때 gradle사용
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20"

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

task clean(type: Delete) {
//gradle의 명령어 중 clean이라는 tack를 저장
    delete rootProject.buildDir
}

✅build.gradle(Module:~)

plugins {
//플러그인은 안드로이드에서 제공하는 기능 외의 라이브러리를 소개해주는 페이지에 들어가면 이 라이브러리 내 프로젝트에서 어케 쓰는지 작성되어 있는데 plugins 또는 dependencies를 통해 프로젝트에서 구현할 수 있게됨
    id 'com.android.application'
    id 'kotlin-android'
}

android {
    compileSdk 31
    //앱 완성후 컴파일할때 sdk31버전 기준으로 컴파일 할 것(API 31)
    defaultConfig {
        applicationId "com.example.kotlin_study" //패키지 명(ID처럼 고유함)
        minSdk 21 
        //최소 Sdk 버전이라는 설정의 값을 21(API 레벨)로 지정
        // =앱을 실행하려면 디바이스 기기에 최소한 API 레벨 21는 설치되어 있어야 함
        // =앱이 API 레벨 21가 존재하는 디바이스 기기까지와는 호환
        targetSdk 31
        //conpileSdk랑 똑같음
        versionCode 1
        //앱 업데이트 될때마다 숫자 하나씩 올라감. 숫자 내려갈 수 없음
        versionName "1.0"
        //versiontCode를 문자열로

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        //테스트코드 작성 후 테스트 코드 실행시 
        //AndroidJUnitRunner으로 테스트 코드 돌리겠다는 것
    }

    buildTypes {
        release { 
        //배포할 목적으로 빌드(디버그 목적으로도 빌드가 가능 디버그 찾으려고. 
        //보통은 release버전으로 빌드함)
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
}

dependencies {  //앱이 가지고 있는 라이브러리(하단은 기본으로 장착되어있는 라이브러리)

    implementation 'androidx.core:core-ktx:1.6.0'
    implementation 'androidx.appcompat:appcompat:1.3.1'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
profile
'왜?'라는 물음을 해결하며 마지막 개념까지 공부합니다✍
post-custom-banner

1개의 댓글

comment-user-thumbnail
2022년 1월 3일

글 잘 읽었습니다. 안스 Java언어 사용시에도 포스팅 내용 중 프로젝트/모듈/패키지/클래스 상하관계 내용과 같나요?

답글 달기