전체 글

전체 글

    [Android] Compose 컴파일러 - (1)

    Jetpack Compose는 다양한 라이브러리의 집합으로 구성되어 있다.그 중 눈여겨 봐야할 라이브러리는 Compose Compiler, Compose Runtime, Compose UI 세 가지가 있다.(나머지는 중요하지 않다는게 아니다.)Compose Compiler와 Compose Runtime은 Compose의 핵심 요소로 요구 사항을 충족하는 어떤 클라이언트 라이브러리에서든 사용될 수 있도록 포괄적으로 되자인 되었다.반면 Compose UI는 Runtime과 Compiler를 활용하는 클라이언트 정도로 애초에 Compose의 아키텍처에 속해 있지 않다.즉 Compose Compiler와 Compose Runtime과 상호작용할 수 있는 다른 클라이언트도 존재한다. Compose Compiler..

    [Android] Compose Composable 함수들 - (3)

    Suspend 함수와 유사성Kotlin의 suspend는 다른 suspend 함수 내부에서만 호출될 수 있고, suspend 함수 또한 호출 컨텍스트를 필요로 한다.이는 suspend 함수 끼리 묶여 있을 수 있도록 강제하며, Kotlin Compiler가 모든 계산 과정에 걸쳐 런타임 환경을 주입하고 전달하는 기회를 제공하게 된다.이 런타임 환경에선 매개변수 목록의 끝에 Continuation이라는 추가 매개변수가 각 susepnd 함수에 추가된다.이 매개변수는 암시적이며 비가시적인 매개변수이다. 이전에 알아보았던 Composer과 비슷한 형태를 가지고 있다.Continuation은 프로그램에게 어떻게 실행을 계속 이어서 할지 알려주는 콜백과 같으며 이런 특징을 통해 언어 차원에서 몇 가지의 강력한 기..

    [Android] Compose Composable 함수들 - (2)

    통제되지 않은 사이드 이펙트 방지사이드 이펙트란 호출된 함수의 제어를 벗어나 발생할 수 있는 예상치 못한 모든 동작을 의미한다.로컬 캐시의 데이터 읽기, 네트워크 요청 작업, 전역 변수 설정과 같은 것들 모두 사이드 이펙트라고 할 수 있다.즉 함수는 결과를 생성하기 위해 입력값에만 의존하게 되는 것이 아닌, 외부 요인에도 의존하게 된다.Compose Runtime은 Composable 함수가 예측 가능하도록 기대하므로 사이드 이펙트가 포함된 Composable 함수는 예측이 어려워지고, Compose의 개념에 상반된다.즉, 사이드 이펙트는 Compose 내에서 아무 통제를 받지 않고 여러 번 실행될 수 있고, 함수가 호출될 때마다 새로운 프로그램 상태를 생성할 수 있으므로 멱등성을 따르지 않게 된다.만약..

    [Android] Compose Composable 함수들 - (1)

    Composable 함수의 의미Composable 함수는 Jetpack Compose의 가장 기본을 이루고, Composable 트리 구조를 작성하는 데 사용된다.여기서 표현한 트리의 의미는 Compose Runtime이 Composable 함수를 메모리상에서 하나의 노드로서 여긴다는 뜻이다.모든 코틀린 함수는 @Composable 어노테이션을 통해 Composable함수로 만들 수 있다.@Composable fun Badge(lable: String) { //Composable code }@Composable 어노테이션을 사용하여 Compiler에게 이 함수는 본질적으로 데이터를 하나의 노드로 변환하여 위에서 말한 Composable 트리에 등록하겠다는 의도를 전달할 수 있다.즉 우리가 Compo..

    [Android] TelephonyManager를 통해 USIM 데이터 추출하기

    Android의 TelephonyManager를 사용하여 USIM (유심)의 정보를 추출하여 서비스에서 통신 정보가 필요할 때 사용할 수 있다.USIM 정보에는 전화번호, 네트워크 정보, 국가 코드 등이 포함되며, 이 정보들은 사용자 식별 및 위치 기반 서비스, 통신 연결 상태를 확인할 수 있다.이번 포스팅에서는 TelephonyManager를 통해 주요 USIM 정보를 다루는 방법과 개발 시 유용한 포인트들을 짚어보자.TelephonyManager란?TelephonyManager는 안드로이드에서 전화 상태 및 장치의 셀룰러 네트워크 정보를 관리하는 클래스다.TelephonyManager를 통해 SIM 카드, 네트워크 및 통화 상태 정보에 접근할 수 있으며, 이를 통해 다양한 통신 관련 기능을 구현할 수..

    [Android] API KEY 안전하게 관리하기 (Kotlin DSL)

    서버 API를 활용하다 보면 API KEY를 헤더에 함께 담아 사용하게 되는 경우가 많다.이때 API KEY를 Object 클래스로 관리하거나 하드코딩을 하고, 깃허브와 같은 레파지토리에 코드를 올리게 되면 타인에게 내가 발급받은 API KEY를 노출하게 되므로 의도치 않게 악용될 수 있다.따라서 gradle과 local.properties 파일을 활용하여 안전하게 관리할 수 있다.local.properties를 함께 사용하는 이유는 gitignore 파일을 보면 local.properties는 기본으로 정의되어 있기 때문이다.따라서 오픈된 레파지토리에는 해당 파일의 정보가 없으니 타인이 프로젝트를 분석하여 API_KEY를 탈취할 수 없게 된다.혹시라도 임의로 빼진 않았는지 확인이 필요하다..gitign..