Skip to content

Android Studio #

Find similar titles

7회 업데이트 됨.

Edit
  • 최초 작성자
    가나파이
  • 최근 업데이트
    hmkim

Android Studio #

안드로이드 스튜디오 #

안드로이드 스튜디오(Android Studio)는 안드로이드 (운영 체제) 및 안드로이드 전용 앱 제작을 위한 공식 통합 개발 환경이다. 구글 I/O에서 처음으로 발표되었으며, IntelliJ 기반으로 만들어졌다. 이전까지 안드로이드 전용 앱을 만들기 위해서는 eclipse를 이용하여 만드는 것이 가장 효율적이었지만 안정성과 속도 면에서 eclipse보다 좋은 성능을 가지고 있는 IntelliJ를 기반으로 만든 안드로이드 스튜디오가 출시되며 앱 개발의 기준 개발 도구가 변경되었다. 안드로이드는 기본적으로 자바를 필요로 하므로 Java SDK를 설치해야 한다. 하지만 2011년에 공개되고 2016년에 v1.0이 출시된 새로운 JVM 언어인 코틀린이 나오면서 구글에서 공식적인 네이티브 언어로 코틀린을 선택하였다. 코틀린과 자바 모두 JVM에서 구동되는 언어로 자바와 상호운용할 수 있도록 만들어졌다.

구성 요소 #

안드로이드는 크게 4대 컴포넌트라고 불리는 주요 구성 요소를 가지고 있다. 각각 액티비티(Activity), 서비스(Service), 브로드캐스트 리시버(Broadcast Receiver), 콘텐트 프로바이더(Content Provider)라고 불리며, 컴포넌트와 함께 인텐트(Intent)에 대해서도 잘 알고 있어야 컴포넌트를 유기적으로 연결해서 제대로 사용할 수 있다.

  • Activity - 화면을 구성하는 컴포넌트 ( User Interface)
  • Service - 백그라운드에서 실행되는 컴포넌트 (사용자 인터페이스는 없음)
  • Intent - 메시지 컴포넌트(컴포넌트에 액션, 데이터 등을 전달. 액티비티 이동 시 전달 )
  • Intent Filter - 수신할 수 있는 인텐트를 정의하여 컴포넌트를 정의하는 역할을 하는 컴포넌트
  • Broadcast Receiver - 특정 브로드캐스트(배터리 부족, 언어 설정 변경 등)를 수신, 반응하는 컴포넌트 (사용자 인터페이스는 없음)
  • Content Provider - 애플리케이션 간의 데이터 공유를 위해 표준화된 인터페이스를 제공하는 컴포넌트
  • Notification - 다른 사용자로부터의 메시지 또는 앱의 기타 실시간 정보를 제공하도록 Android가 앱의 UI 외부에 표시하는 메시지
  • Fragment - 하나의 액티비티가 여러 개의 화면을 가지도록 만들기 위해 고안된 독립된 class로 이루어진 UI 컴포넌트

특색 #

시각적 레이아웃 편집기 #

Layout Editor를 사용하면 레이아웃 XML을 직접 작성하는 대신 UI 요소를 시각적 디자인 편집기로 드래그하여 신속하게 레이아웃을 빌드할 수 있다. 이 디자인 편집기의 경우 레이아웃을 다양한 Android 기기 및 버전에서 미리 볼 수 있으며, 레이아웃이 다양한 크기의 화면에서 제대로 작동하도록 레이아웃 크기를 동적으로 조절할 수 있다.

Layout Editor

  1. Palette: 레이아웃으로 드래그할 수 있는 다양한 뷰 및 뷰 그룹을 포함.
  2. Component Tree: 레이아웃에서 구성요소의 계층 구조를 표시.
  3. 툴바: 편집기에서 레이아웃 모양을 구성하고 레이아웃 속성을 변경
  4. 디자인 편집기: 디자인 뷰나 청사진 뷰 또는 두 뷰 모두에서 레이아웃을 수정
  5. Attributes: 선택한 뷰의 속성을 제어
  6. 뷰 모드: 레이아웃을 코드 디자인, 분할 모드 중 하나로 표시 분할 모드는 코드 창과 디자인 창을 동시에 표시
  7. 확대/축소 및 화면 이동 컨트롤: 편집기 내에서 미리보기의 크기와 위치를 제어

APK 분석기 #

Android 스튜디오에는 빌드 프로세스가 완료된 후 APK 구성에 관한 유용한 정보를 즉시 제공하는 APK Analyzer가 포함된다. APK Analyzer를 사용하면 앱의 DEX 파일 및 리소스 관련 문제를 디버깅하는 시간을 줄일 수 있고 APK 크기를 줄이는 데 도움이 되며, APK Analyzer는 apkanalyzer을 통해 명령줄에서도 이용할 수 있다.

가능 작업 #

  • APK에 포함된 파일(예: DEX 및 Android 리소스 파일)의 절대 크기와 상대 크기 보기
  • DEX 파일의 구성 이해하기
  • APK에 포함된 파일(예: AndroidManifest.xml 파일)의 최종 버전 빠르게 보기
  • 두 개의 APK를 나란히 놓고 비교

Android Emulator #

Android Emulator는 컴퓨터에서 Android 기기를 시뮬레이션함으로써 실제로 기기가 없어도 다양한 기기 및 Android API 수준에서 애플리케이션을 테스트할 수 있다. 에뮬레이터는 실제 Android 기기의 거의 모든 기능을 제공한다. 전화 및 SMS 수신, 여러 네트워크 속도, 회전 및 기타 하드웨어 센서를 시뮬레이션하고 기기의 위치를 지정하며 Google Play 스토어에 액세스하는 등 다양한 작업을 할 수 있다. 에뮬레이터에서 앱을 테스트하면 실제 기기에서 하는 것보다 여러 면에서 더 빠르고 쉽다. 예를 들어 USB를 통해 연결된 기기보다 에뮬레이터로 데이터를 더 빠르게 전송할 수 있다. 하지만 일부 성능에 따라 작업 시간이 다소 오래 걸릴 수도 있다.

체계적인 프로젝트 구조 #

Android Studio는 소스 코드 파일 및 리소스 파일과 함께 모듈이 하나 이상 포함된다. 또한 효율적인 코드 작성을 위해 패키지, 소스, 리소스로 나뉘어 구조가 갖추어져 있으며 통합 개발 환경으로 지원한다. 모듈의 유형 - Android 앱 모듈 - 라이브러리 모듈 - Google App Engine 모듈

Android 스튜디오는 기본적으로 Android 프로젝트 뷰에 프로젝트 파일을 표시한다. 프로젝트의 주요 소스 파일에 신속하게 액세스할 수 있도록 이 뷰는 모듈별로 구성된다. 모든 빌드 파일은 Gradle Scripts 의 최상단에 표시되며 각 앱 모듈에는 다음 폴더가 포함된다. - manifests: AndroidManifest.xml 파일을 포함. - java: JUnit 테스트 코드를 비롯한 자바 소스 코드 파일을 포함. - res: 코드가 아닌 모든 리소스를 포함(XML 레이아웃, UI 문자열, 비트맵 이미지 등).

Gradle 빌드 시스템 #

Android 스튜디오는 빌드 시스템의 기반으로 Gradle을 사용하며, 더 많은 Android 전용 기능을 제공한다. 이 빌드 시스템은 Android 스튜디오 메뉴에서는 통합 도구로 실행되고, 명령줄에서는 독립적으로 실행된다. 이 빌드 시스템의 기능을 사용하여 다음 작업을 실행할 수 있다. - 빌드 프로세스 맞춤설정, 구성 및 확장 - 동일한 프로젝트 및 모듈을 사용하여 다양한 기능을 갖춘 앱을 위한 여러 APK 생성 - 전체 소스 세트에 걸쳐 코드 및 리소스 재사용

Gradle의 유연성을 활용하면 앱의 주요 소스 파일을 수정하지 않고도 이 모든 작업을 처리할 수 있다. Android 스튜디오 빌드 파일은 build.gradle로 명명한다. 이 빌드 파일은 Groovy 구문을 사용하는 일반 텍스트 파일이며 Gradle용 Android 플러그인이 제공하는 요소들로 빌드를 구성한다. 전체 프로젝트에서 각 프로젝트에는 하나의 최상위 빌드 파일이 있으며 모듈별로 별도의 모듈 수준 빌드 파일이 있다. 개발자가 기존 프로젝트를 가져오면 Android 스튜디오는 필요한 빌드 파일을 자동으로 생성한다.

다중 APK 지원 #

다중 APK 지원을 사용하면 화면 밀도 또는 ABI를 기반으로 여러 APK를 효율적으로 만들 수 있다. 예를 들어, hdpi 및 mdpi 화면 밀도에 맞게 앱의 개별 APK를 만드는 동시에 이들을 단일 변형으로 간주하여 테스트 APK, javac, dx 및 ProGuard 설정을 공유하도록 허용할 수 있다.

리소스 축소 #

Android 스튜디오의 리소스 축소는 패키지 앱과 라이브러리 종속 항목으로부터 미사용 리소스를 자동으로 삭제한다. 예를 들어, 애플리케이션에서 Google Play 서비스를 사용하여 Google 드라이브 기능에 액세스하고 현재 Google 로그인을 사용하고 있지 않은 경우 리소스 축소를 사용하면 SignInButton 버튼의 다양한 드로어블 애셋을 삭제할 수 있다.

참고자료 #

0.0.1_20230725_7_v68