Kotlin Enum (열거형)

안녕하세요! 이번 포스팅에서는 코틀린에서 제공하는 열거형(Enum)에 대해 알아보겠습니다. 열거형은 상수를 선언하고 사용하기 위한 편리하고 간결한 방법을 제공하여 코드의 가독성을 높이고 안전성을 강화하는데 도움을 줍니다. 열거형(Enum) 프로그램 개발 시 특정 그룹 안의 구성 요소를 정의하는 값이 필요하고자 할 때 사용한다. 열거형은 단어 자체가 프로그램에서 사용하는 값이 된다. 열거형(Enum)이란? 열거형은 서로 연관된 상수들의 집합을 정의하는 특별한 데이터 타입입니다. 예를 들어, 요일(월요일, 화요일 등)이나 계절(봄, 여름, 가을, 겨울)과 같이 고정된 값들을 나타내는 경우에 유용하게 사용됩니다. 코틀린에서는 enum 키워드를 사용하여 열거형을 정의할 수 있습니다.  아래는 enum 키워드를 통해서 요일에 대해서 열거형을 정의해보았습니다. enum class Weekday { MONDAY , TUESDAY , WEDNESDAY , THURSDAY , FRIDAY , SATURDAY , SUNDAY } 아래는 enum 키워드를 통해서 방향에 대해서 열거형을 정의해보았습니다. enum class Direction { NORTH , SOUTH , WEST , EAST } fun main () { printDiection (Direction. EAST ) printDiection (Direction. SOUTH ) } enum class Direction { NORTH , SOUTH , WEST , EAST } fun printDiection (a1: Direction) { when (a1) { Direction. NORTH -> println ( " 북쪽입니다 ." ) Direction. SOUTH -> println ( " 남쪽입니다 ." ) Direction. WEST ->...

Android Studio Tabnine 사용해 보기

AI Coding 안드로이드 스튜디오에서 사용할 수 있는 안드로이드 코드를 AI 로 쉽게 작성할 수 있는 Plugin 에 대한 검토를 해보자 AI Coding Assistant Tools 1. GitHub Copilot 2. Amazon CodeWhisperer 3. Tabnine 4. Replit 5. Sourcegraph Cody 6. AskCodi 7. Codiga 8. Bugasura 9. CodeWP 10. AI Helper Bot 11. Android Studio Bot 12. SinCode 13. WPCode GitHub Copilot https://onlyfor-me-blog.tistory.com/721 개인사용자 기준으로 60일 무료이며, 신용카드 등록 및 선 구독 후 취소해야하는 시스템. 10$/달 Amazon CodeWhisperer https://mobikul.com/amazon-code-whisperer-android-studio/ 개인 무료, AWS 계정 필요 Amazon CodeWhisperer는 Python, Java, JavaScript, TypeScript, C#, Go, Rust, PHP, Ruby, Kotlin, C, C++, Shell 스크립팅, SQL, Scala 등 다양한 프로그래밍 언어를 위한 인공 지능(AI) 기반 코드 제안을 제공합니다. JetBrains IDE(IntelliJ IDEA, PyCharm, WebStorm, 및 Rider), Visual Studio(VS) Code, AWS Cloud9, AWS Lambda 콘솔, JupyterLab 및 Amazon SageMaker Studio를 포함하여 여러 IDE에서 서비스를 사용할 수 있습니다. CodeWhisperer는 Amazon Elastic Compute Cloud(Amazon EC2), AWS Lambda 및 Amazon Simple Storage Service(Amazon S3)를 비롯한 AWS API에 최적화된 코드 제안을 제공하여 개발자가 AWS...

null safety through type conversion (null 안정성을 위한 형변환)

null 안정성을 위한 형변환 null 값이 담긴 객체에 대해 보다 안정한 형 변환 방법을 제공하고 있다. null 을 허용하는 변수가 null 값이 들어있지 않다는것을 보장해주면, null 을 허용하지 않는 타입으로 스마트 캐스팅이 발생한다. null 을 허용하는 타입  null 을 허용하는 타입으로 선언했을 경우, 해당 타입에서 메서드를 호출하게 될 경우 아래와 같은 에러가 발생한다. fun testMethod1 (str: String?) { println (str. length ) } Kotlin: Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?  str 이 null 일 경우, length 를 구할 수 없으므로 이를 safe call 연산자(?.) 을 사용하던지, non-null asserted (!!.) 를 사용하여 null 허용 타입으로 부터 예외처리를 해야 한다. Safe Call (?.): Safe call은 Kotlin에서 null 안정성을 보장하기 위한 기능 중 하나로, 변수가 nullable하면서 null일 수 있는 경우에만 사용됩니다. Safe call 연산자인 ?.을 사용하면, 해당 변수가 null인 경우에도 프로그램이 중단되지 않고 null을 반환합니다. 즉, 호출된 메서드나 프로퍼티가 null인 경우, 그냥 null을 반환하고 뒤따라오는 연산은 수행되지 않습니다. fun main () { testMethod1 ( " 안녕하세요 " ) testMethod1 ( null ) } fun testMethod1 (str: String?) { println (str?. length ) } 결과값 > 5 null testMethod1(null): 두 번째 호출은 null을 전달하고 있습니다. 이 경우 str은 nullable이며 null을 가지고 있기 때문에, safe ...

Android.bp

Android.bp Android.bp 파일에 대해서 파악해보고, APP 빌드시에 사용되는 옵션에 대해서 살펴보자. 안드로이드 7.0 이전 버젼에서는 Android.mk 파일을 빌드로 사용하였는데, 이후 버젼에서는 Soong 빌드 시스템을 이용한 Android.bp 시스템으로 변경되었다. 참고자료 https://source.android.com/docs/setup/build?hl=ko https://ci.android.com/builds/submitted/10510886/linux/latest/view/soong_build.html android_app 모듈 android_app은 Android Build System에서 사용되는 Android.bp 파일의 한 유형입니다. 이 모듈은 Android 애플리케이션을 빌드하기 위해 필요한 설정과 지침을 제공합니다. android_app 모듈을 사용하면 애플리케이션의 리소스, 매니페스트 파일, 네이티브 코드 등을 포함하는 전체 패키지를 빌드할 수 있습니다. android_app 모듈은 일반적으로 다음과 같은 필드를 포함합니다: name: 애플리케이션 모듈의 이름을 지정합니다. srcs: 애플리케이션에 포함되는 Java 소스 파일을 지정합니다. manifest: 애플리케이션의 Android 매니페스트 파일을 지정합니다. resource_dirs: 애플리케이션의 리소스 디렉토리를 지정합니다. static_libs 또는 shared_libs: 애플리케이션이 종속하는 라이브러리 모듈을 지정합니다. package_name: 애플리케이션의 패키지 이름을 지정합니다. privileged: 시스템 권한이 있는 프라이빌리지드 애플리케이션 여부를 지정합니다. platform_apis: true: 플랫폼 API에 액세스할 수 있는지를 나타내는 플래그입니다. android_app 모듈은 cc_module 모듈과 상호작용할 수도 있습니다. 예를 들어, 애플리케이션에 C/C++ 네이티브 코드가 포함되어 있는 경우, cc_module 모듈을 정...

Android mm Build

Android mm Build 아래는 안로드이드 풀 소스코드가 받아진 상황에서, 풀 빌드를 수행하고, 내가 원하는 package 에 대해서 부분 빌드를 하고 싶을 때 사용하는 방법이다. 안드로이드 공식빌드 개요  안드로이드의 "mm 빌드"는 안드로이드 소스 코드를 빌드하는 방법 중 하나로서, 소스 코드의 일부를 수정하고 해당 변경 사항만을 빌드하는 방법을 의미합니다. 이렇게 하면 전체 안드로이드 시스템을 다시 빌드하는 것보다 시간을 절약할 수 있습니다. 서버 풀 빌드 우선 부분 빌드 (mm 빌드) 를 수행하고자 하는 서버가 풀 빌드가 되어있어야 한다. 전체 빌드가 성공적으로 된 이후 수행 할 수 있다. 빌드 환경 설정 $ cd /DATA/workspace/PROJECT_NAME/LINUX/android $ source build/envsetup.sh $ lunch aosp_arm-eng  위와 같이 envsetup.sh 스크립트로 환경을 초기화합니다.    lunch를 사용하여 빌드할 타겟을 선택합니다. lunch product_name-build_variant는 빌드할 제품으로 product_name을 선택하고 빌드할 변형으로 build_variant를 선택하며, 이러한 선택항목을 이후의 m 및 기타 유사한 명령어 호출에서 읽을 수 있도록 환경에 저장합니다.  원하는 형태에 맞게 lunch 옵션에서 선택하여 지정할 수 있습니다. mm 빌드 실행 user:/DATA/source/PRODUCT/LINUX/android$ source build/envsetup.sh user:/DATA/source/PRODUCT/LINUX/android$ lunch aosp_arm-eng user:/DATA/source/PRODUCT/LINUX/android$ cd vendor/XXXX/packages/apps/PACKAGE_NAME user:/DATA/source/PRODUCT/LINUX/android/vendor/XXXX/package...