목록분류 전체보기 (228)
NOW OR NEVER
함수 정의와 호출 컬렉션 자바의 getClass() = 코틀린의 javaClass : 해당 객체가 어떤 클래스에 속하는 지 확인 가능 자바 컬렉션 = 코틀린 컬렉션: 코틀린은 자신 만의 컬렉션 기능을 제공하는 것이 아닌 기본 자바 컬렉션을 활용한다 코틀린이 자체 컬렉션을 제공하지 않는 이유 표준 자바 컬렉션 활용 시 자바 코드와 상호작용하기 훨씬 쉬움 자바에서 코틀린 함수 호출 혹은 코틀린에서 자바 함수 호출 시 자바와 코틀린 컬렉션을 서로 변환 필요X 함수 호출 간소화 이름 붙인 인자 코틀린에서 사용예시 joinToString(collection, seperator = "", prefix = " ") 함수에 인자로 전달한 것들이 각각 어떤 역할을 하는 지 구분할 수 있게 도와준다. 디폴트 파라미터 값과..
이 글은 mac m1 기준으로 작성되었습니다. 1. google cloud console에서 서비스 계정 관련 - 서비스 계정 생성 후 권한 추가 방법(생성 시 할 수 있음, 저는 하다가 까먹어서 이렇게 부여함) IAM - 원하는 서비스 계정 체크 후 액세스 권한 부여 클릭 후 부여(fastlane 배포 시 필수로 서비스 계정 - 서비스 계정 사용자 권한 부여해야 함) 2. fastlane 에러 bundler와 gem 버전 안맞는 에러 발생 시 아래 과정 했는 지 확인 요함 에러 전문 /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems.rb:283:in find_spec_for_exe': Could not f..
Kotlin 기초 코틀린 문법, 특성 파라미터 이름 뒤 그 파라미터 타입 작성 여러가지 표준 자바 라이브러리 함수를 간결하게 사용할 수 있게 감싼 wrapper 제공 ex) Sysmtem.out.println -> println 자바와 다른 점 함수를 최상위 수준에 정의 가능 : 자바와 달리 클래스 안에 함수를 정의 할 필요 X 배열 처리를 위한 문법이 존재X 세미콜론을 붙이지 않아도 된다. 시작문(statement)과 식(expression) 식: 값을 만들어 내며 다른 식의 하위 요소로 계산에 참여 가능 문: 자신을 둘러싸고 있는 가장 안쪽 블록의 최상위 요소로 존재하며 아무런 값을 만들어내지 않는다 자바에서는 모든 제어구조가 문이며 코틀린에서는 루프를 제외한 대부분의 제어 구조가 식 ex) 코틀린에..
직렬화 Serialization 객체를 Byte Stream으로 변환하는 프로세스를 의미 변환된 데이터는 파일에 저장하거나 네트워크를 통해 전송 가능 직렬화를 통해 객체를 전송하거나 저장할 때 유용하게 사용 가능 역직렬화는 반대로 바이트 스트림을 다시 객체로 변환하는 프로세스이다. Bite Stream 바이트 단위로 전송하는 입출력 스트림 특정 문자 인코딩과 무관하게 데이터를 전송 가능하여 텍스트 파일, 바이너리 파일 등 여러 종류의 파일을 처리하는 데에 유용 자바에서의 바이트 스트림을 다루기 위한 기본 클래스 : InputStream, OutputStream 객체를 직렬화 하기 위한 Interface Parcelable와 Serializable를 동시에 사용 불가능: 클래스가 Parcelable로 구현..
Navigation에서의 back stack 관리 Navigation을 사용하면 백스택을 자동으로 관리해주지만 이 백스택을 수동적으로 제어할 수 있는 방법이 있을까 의문이 들어 공부해봤다. Navigation Component를 사용하면 여러 개의 백 스택을 관리할 수 있다. 이를 통해 프래그먼트 스택을 별도로 관리하고 제어할 수 있다. popUpTo와 popUpToInclusive popUpTo : 백 버튼 클릭 시 돌아가려는 프래그먼트 설정한다. 즉 뒤로 가기 버튼을 눌렀을 때 지정된 프래그먼트까지 이동하여 그 사이의 스택이 제거한다 popUpToInclusive : popUpTo와 같이 사용 시 popUpTo에 설정된 프래그먼트를 포함한 스택들을 제거한다. NavController.popBackSt..
bottomsheet layout 파일 전체를 감싸는 태그에 해당 코드 넣기 app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior" app:behavior_hideable="true" app:behavior_peekHeight="0dp" 적용한 모습은 아래와 같다. BottomSheetDialogFragment를 상속 받고 해당 레이아웃을 제어하는 fragment 파일 안에서 아래 함수 넣기 override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val dialog = super.onCreateDialog(savedInstanceState) as Bo..
AndroidManifest.xml 파일에서 사용하는 액티비티에 android:windowSoftInputMode ="adjustPan"을 추가한다. editText 작성 시 해당 요소를 가리지 않고 바로 밑에 키보드가 있는 것을 확인 할 수 있다.
전에는 nullOnEmptyConverterFactory라는 함수를 안드로이드에서 제공했었는 데 현재는 안하는 지 뜨지 않아 임의로 이렇게 함수를 만들어 놓고 해당 함수를 retrofit builder 에서 사용할 것이다. private val nullOnEmptyConverterFactory = object : Converter.Factory() { fun converterFactory() = this override fun responseBodyConverter( type: Type, annotations: Array, retrofit: Retrofit, ) = object : Converter { val nextResponseBodyConverter = retrofit.nextResponseBody..
Activity 개념 앱의 경우 웹과 다르게 사용자와 앱의 상호작용은 같은 곳에서 이뤄지지 않는다. 그래서 동일한 입력을 하더라도 항상 동일한 출력을 하지 않는다. 예를 들어 홈 스크린에서 이메일 앱을 열면 이메일 목록이 보이며 반대로 sns앱을 사용하다가 이메일 앱을 열면 바로 이메일을 작성하는 화면이 보인다. 앞서 설명한 과정을 용이하기 위해 설계된 것이 Activity이다. 사용자와의 앱 상호 작용의 진입점 역할 : 한 앱이 다른 앱을 호출할 때 호출하는 앱은 해당 앱의 다른 액티비티를 호출하며, 앱을 원자적인(원자적인 : 여러 단계로 나눠지지 않고, 중간에 다른 프로세스가 간섭하지 않는 하나의 단위로 수행되는 연산) 전체로 호출하지 않는다. UI를 구성할 수 있는 창 제공 : 일반적으로 앱의 하나..
의존성, 주입에 대해 알기 Android에서 의존성 주입(Dependency Injection)을 간소화하는 라이브러리 프로젝트에서 수동 의존성 주입을 수행하는 번거로움을 줄인다. 수동 의존성 주입을 수행하려면 모든 클래스와 해당 의존성을 수동으로 생성하고, 컨테이너를 사용하여 의존성을 재사용하고 관리해야 함 Hilt는 프로젝트 내의 모든 Android 클래스에 대한 컨테이너를 제공하고 그 수명주기를 자동으로 관리하여 앱에서 DI(Dependency Injection)를 사용하는 표준 방법을 제공 의존성 주입(Dependency Injection): 의존성 주입은 객체 지향 프로그래밍에서 사용되며, 어떤 객체가 다른 객체에 의존할 때, 이 의존성을 코드 외부에서 주입하는 방법을 의미. 이를 통해 객체 간..