목록Android (51)
NOW OR NEVER

위 글은 task 작업을 앱 빌드 전 추가하는 걸 통해 launch 시 assebleDebugBuild 전 clean project를 하는 법을 설명합니다. 1️⃣ Project 수준 build.gradle 에 아래 코드를 buildscript 블럭 밖에 작성한다.tasks.register('clean', Delete) { delete rootProject.buildDir}2️⃣ 안드로이드 스튜디오 메뉴 Run > Edit Configurations 클릭한다. 3️⃣ app을 선택 후 아래로 스크롤 시 Before launch 탭을 볼 수 있다. 해당 탭에서 + 클릭주의: Gradle-aware Make가 없으면 빌드가 되지 않는다. 절대 삭제하지 말 것! 4️⃣ + 클릭 후 Run Gradle t..
app수준 gradle에서 ndkVersion을 24.0.8215888로 바꾸면 해결
함수 정의와 호출 컬렉션 자바의 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 find 'b..
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..