Android 개발환경 구축

Hue·2023년 2월 8일
0

Android/Kotlin

목록 보기
1/42

🛸 Android Studio

📍 developer.android.com

  • 코드편집기
  • JDK : Java 컴파일러 + 2000개 클래스들 (Java System APIs)
  • Android SDK : 안드로이드 개발도구 + 2000여개 클래스들 (API 1...33 version)
  • AVD (Android Virtual Device) or 실디바이스

👽 Android 개발

Android 개발 언어

Java or Kotlin + XML (화면설계용, HTML 확장버전)
가급적이면 Java에서 new String을 하는 것(하드코딩)이 아니라 XML에 모아놓고 불러다 쓸 것을 권장
Java에서 쓸 경우 모두 if-else를 써야하지만 XML로 할 경우 편하게 국제화 코드 가능

Hardcoded string "Fresh Green Forest", should use @string resource

Java언어XML언어
new String("Hello")<String>Hello</String>
new TextView()<TextView></TextView>
  • XML언어
    - 시작Tag <String> 종료Tag </String> 이용
    - 객체 안에 다른 것이 없을 때 --> 축약표현 <String/>
    - 모든 XML 문서에 <?xml version="1.0" encoding="utf-8"?> 필요
    - 시작 태그에만 속성명 = "값" 작성 가능 (줄바꿈이나 띄어쓰기로 속성 여러 개 작성 가능)
	<Frame size = "30" location = "200"> </Frame>

Android Project 폴더구조

📂 Hello
	📂 java
    	📃 .java
    📂 res
    	📂 drawable
        	📃 .png
        📂 layout
        📂 mipmap
        📂 values
        📂 xml
    📂 manifests

🔨 Android APP 제작 단계

📂 java 📃 .java -- compile(JDK) --> 📃 .class (바이트코드) --> .classes -- interpret (JVM) --> WINDOWS / MAC / LINUX ==> .exe

안드로이드 = JVM ❌ : 과거에는 가상머신 JVM이 모바일에는 너무 무거웠음 한 번 더 축소 압축 후 가상머신 Dalvik 사용

📂 java 📃 .java -- compile(JDK) --> 📃 .class (바이트코드) --> .classes -- 축소압축 --> .dex --> Dalvik --> MOBILE

BUT, Dalvik의 성능이슈, 개선된 가상머신 ART 사용

📂 java 📃 .java -- compile(JDK) --> 📃 .class (바이트코드) --> .classes -- 축소압축 --> .dex --> ART --> MOBILE

📂 res 📃 .png .jpg .xml --> 리소스 압축 (aapt)

.dex file + resource file + AndroidManifest.xml + external library == build program ==> .apk
(build program = ANT, MAVEN, GRADLE ✔)

🔊 Android APP 실행 순서

(▶ 실행 click - Run)

① AndroidManifest.xml
(Manifest객체 : 포장지 역할)

쓰여진 순서와 상관없이 intent-filter (action.MAIN)를 가지고 있는 객체가 제일 우선 실행됨

<intent-filter>
	<action android:name="android.intent.action.MAIN" />

	<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

❗❗❗ MainActivity가 Main method 역할을 하는것이 아니라 MainActivityr가 AndroidManifest에 등록이 되어있고 intent-filter를 보유하고 있기 때문에 먼저 실행되는 것

② MainActivity 객체 생성
자동으로 생성자(Constructor) 호출 --> BUT 안드로이드에서는 Activity에서 생성자를 사용하지 말라고 함 (여러 이유에 의하여...)
대신 데스크탑과 다른 안드로이드 환경(전화 등)으로 인하여 특수한 상황(화면이 가려짐 등)발생
--> 이러한 상황이 생기면 직접 호출하지 않아도 호출되는 "라이프사이클 메소드"

라이프사이클메소드 : 어떤한 상황이 됐을 때 자동으로 실행되는 메소드 --> OnCreate() 메소드(콜백메소드)

protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

갑자기 꺼지거나 등의 상황에서 다시 불러오기 (컴퓨터가 갑자기 꺼졌을때 프로그램을 다시 켜면 "복구하시겠습니까?"처럼)

③ onCreate() (callback method)

④ setContentView(View객체);
View 객체 = Java 언어(new) new Button() / XML언어(태그문) <Button/> 모두 가능 (XML권장)

0개의 댓글