Android (27) 썸네일형 리스트형 [KMP] gradle 설정 방법 안녕하세요. 이번 포스팅에서는 저번에 이은 kmp 프로젝트에서 gradle 설정법에 대해 알아보려합니다.KMP 프로젝트는 저번 포스팅에서 처럼 원하는 플랫폼을 선택하여 프로젝트를 생성할 수 있습니다. 프로젝트 생성 시 지정한 플랫폼들은 프로젝트 구조에서 모듈로 분할되어 있습니다. 아래 코드처럼 gradle 내부에서 각 플랫폼 별로 종속항목을 나눌수 있게 되어있어 별도 추가가 필요한 기능에 대해서는 맞추어 추가하면 됩니다. (ex. android 의 okhttp와 ios의 darwin)1.Android 프로젝트의 gradle과의 차이점차이점AndroidKMP플러그인com.android.application,com.android.libraryorg.jetbrains.kotlin.multiplatform소스.. [DI]Koin을 사용해보자 안녕하세요. 이번 포스팅에서는 DI 방법중 하나인 Koin에 대해 간단한 개념과 사용법을 알아보려합니다. 흔히 Android 개발을 하다보면 DI 방법으로 간편하며 관리가 편한 Hilt 를 많이 사용하실 겁니다. Hilt의 경우 android 에서 사용하므로 desktop 및 ios가 있는 KMP 프로젝트 에서는 그 사용이 제한됩니다. 이에 KMP 프로젝트를 진행하면서 공부하고 사용한 Koin에 대해 알아보겠습니다. (이번 예시에서는 clean architecture 구조에서 사용한 방식에서 사용하였습니다.) 1. Koin이란 Koin은 기본적으로 흔히 아는 Hilt와 같이 DI, 즉 의존성 주입 프레임워크 입니다. 다만 Hilt보다 훨씬 더 쉽고 간결하게 사용할수있다는 장점이 있습니다. 1) "런타.. [KMP] kotlin multiplatform 프로젝트 생성 안녕하세요. 이번 포스팅에서는 Android 앱뿐만 아닌 다른 플랫폼에서도 사용 가능하도록 하는 Kotlin multiplatform 프로젝트를 생성하는 방법에 대해서 알아보겠습니다.Kotlin multiplatform을 회사에서 테스트용 desktop 프로그램을 개발할 필요가 있어 학습하게 되었습니다. 기존 android 개발을 해오며 친숙한 Kotlin을 이용하여 이미 구현된 메소드, compose Component 등을 쉽게 가져다 사용할수도 있어서 도입하게 되었습니다.Kotlin multiplatform은 AndroidStudio 에서도 Plugin 설치를 통해 쉽게 프로젝트 생성이 가능하며 Kotlin Multiplatform Wizard 를 통해서도 프로젝트 생성이 가능합니다. 그럼 각 사용법.. [앱 상호작용]Bound Service를 사용하여 2개 앱 상호작용 (Java) 안녕하세요. 이번 포스팅에서는 Bound Service 를 사용하여 2개의 앱이 서로 상호작용 하는 방법을 포스팅하겠습니다. Bound Service는 4대 컴포넌트 중 하나인 Service 사용을 기본으로 하며 aidl 이라는 파일 형식으로 된 코드를 2개의 앱에 동일하게 추가하여 해당 함수들을 호출하여 연결하여 상호작용 하는 방식입니다. 아래 구조도와 함께 간단히 구조를 먼저 설명 드리겠습니다.1. 구조도 사용자에게 보여지는 앱의 실행중인 Activity 와 Background에서 기능을 동작할 앱의 Service 그리고 aidl을 통한 IService 와 ICallback 이렇게 최소 4개의 Class가 필요하게 됩니다. Activity는 Iservice를 통해 연결되어 ICallback을 통해 값.. [앱 상호작용]Broadcast Receiver를 사용하여 2개 앱 정보 전달 안녕하세요. 오늘 포스팅 내용은 최근 제가 2개의 앱을 상호작용하면서 활용한 2개의 방법 중 하나인 BroadcasetReceiver 에 대해서 정리하겠습니다. BroadcasetReceiver 란 4대 컴포넌트 중 하나로 android 시스템이나 특정 이벤트 발생시 수신 후 반응하는 요소입니다.생명주기는 onReceive() 함수 하나이며 호출을 수신했을때 짧게 동작하며 만약 BroadcasetReceiver 내부 동작이 오래 걸릴 경우 오류가 발생할수있으므로 긴 작업은 다음에 포스팅할 BoundService를 사용하는 것이 좋을거라 생각됩니다. 그럼 순차적으로 사용 방법에 대해서 알아보겠습니다.1. Manifest 등록 먼저 Manifest에 아래와 같이 추가해줍니다. 이때 intent filte.. [Android] com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 1349 path $.item[0].subInfo 안녕하세요. 이번 포스팅에서는 제가 요즘 진행중인 알라딘 api 를 활용 과정에서 발생한 retrofit 관련 오류를 포스팅하겠습니다. 해당 오류는 제가 통신간 받아올 item[0] 의 subInfo 의 data 형식을 string 으로 정의했지만 실제로는 Object 형식이 오게 되면서 발생한 오류입니다. 해당 부분을 Object 혹은 해당 내용에 맞는 data class로 정의 하면 해결 가능합니다. [Android] 라이브러리 추가때 발생한 에러 Build was configured to prefer settings repositories over project repositories but repository 'Google' was added by build file 'build.gradle' 안녕하세요. 최근 10월부터 사이드 프로젝트로 앱을 개발하고 있었는데 개발간 라이브러리를 추가할 일이있어 추가하는 과정에서 발생한 오류를 간단히 기록하려합니다. 카메라 및 갤러리에서 사진을 가져오기 위한 ImagePicker 라이브러리를 추가하기위해 해당 layer의 build.gradle 파일에 아래 내용을 추가하였습니다. implementation "com.github.Drjacky:ImagePicker:2.1.12" 그리고 프로젝트 단위의 build.gradle 파일에 아래 내용을 추가하여 빌드한 결과 다음과 sync는 되었지만 오류가 발생하였습니다. repositories { google() mavenCentral() maven { url "https://jitpack.io" } } Build w.. [Android] 동적으로 View, Layout 크기, 위치 변경 (LayoutParams) 안녕하세요. 이번 포스팅에서는 버튼이나 특정 조작, 조건에 맞춰 view 혹은 layout의 크기나 위치를 변경하는 방법을 포스팅하겠습니다. xml로 ui 개발을 한다면 xml파일 미리 다 그려둔 상태일겁니다. 근데 개발을 하다보면 조건에따라 특정 view 혹은 layout에 대해 위치나 크기 등을 변경해야할때가 있습니다. 이럴때 컴포즈가 아니라면 layoutParams를 통해서 수정이 가능합니다. 간단한 코드로 먼저 보겠습니다. val layoutParams = ConstraintLayout.LayoutParams( ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.MATCH_PARENT) 최초 정의시 layout의 wi.. 이전 1 2 3 4 다음