본문 바로가기

Language & Framework8

[Android] Dependency 'androidx.activity:activity:1.8.0' requires libraries or apps that depend on it to compile against version 34 or later 안드로이드 스튜디오에서 SDK 버전으로 33으로 프로젝트를 생성하고 바로 빌드해봤는데 에러가 발생했다 Dependency 'androidx.activity:activity:1.8.0' requires libraries or apps that depend on it to compile against version 34 or later of the Android APIsAsk Question 에러 문구처럼 SDK 버전을 34 으로 올릴 수도 있겠지만 프로젝트 생성을 버전 33으로 한 입장에서 SDK 버전 하나만 올리는 것보다 34를 요구하는 저놈의 버전을 낮추는 게 좋지 않을까 싶어서 찾아봤다. implementation 'com.google.android.material:material:1.11.0' //.. 2024. 4. 23.
[Flutter/Xcode] 여러 타겟 동시에 version 관리 - Generated.xcconfig Flutter 프로젝트에서 ios 빌드하면서 AppStore에 배포할 때 자꾸 아래와 같은 경고 이메일이 날라왔다. ITMS-90473: CFBundleVersion Mismatch - The CFBundleVersion value '1' of extension 'Runner.app/PlugIns/ImageNotification.appex' does not match the CFBundleVersion value '181' of its containing iOS application 'Runner.app'.ITMS-90473: CFBundleShortVersionString Mismatch - The CFBundleShortVersionString value '1.0' of extension 'Runne.. 2024. 4. 18.
[UIKit] UITableView didSelectRowAt 메서드 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { print("hi") } 테이블 뷰의 셀을 클릭해도 select 이벤트를 관리하는 위 메서드가 호출되지 않는다.. 일단 아래처럼 Outlet 연결은 되어 있다. class FlightListViewController : UIViewController, UITableViewDataSource, UITableViewDelegate { @IBOutlet weak var tableView: UITableView!​ 그리고 Delegate, DataSource 연결도 해놨다. override func viewDidLoad() { super.viewDidLoad() tabl.. 2024. 4. 9.
[Flutter] Flutter App Badger 플러그인의 안드로이드 호환성 이번 글에서는 Flutter 프로젝트에서 앱 뱃지 기능 구현을 위해 많이 사용되는 플러그인,flutter_app_badger 의 안드로이드 호환성에 대해 이야기해보고자 한다.  flutter_app_badger | Flutter packagePlugin to update the app badge on the launcher (both for Android, iOS and macOS)pub.dev 필자의 프로젝트에서 위 플러그인을 사용하면서 안드로이드 에뮬로 실행하니제대로 작동이 안되는 경우도 있었고 작동하는 방식이 iOS와 다른 경우도 있었다.그래서 이 플러그인이 안드로이드 앱 뱃지 기능을 어떻게 구현했는지 자세히 알아보았는데그 과정에서 알게 된 내용들을 공유하고자 한다.  1.  pub.dev 문서먼저.. 2024. 3. 26.
[Flutter] ChangeNotifier 잘 쓰는 꿀팁! Flutter 개발에서 상태 관리를 위해서 ChangeNotifier을 유연하고 강력하게 사용하는 것이 중요하다. 많은 Flutter 프로젝트의 아키텍쳐로 사용되는 MVVM 아키텍쳐에서는 Model / ModelView / VIew Layer 중 ModelView 계층을 ChangeNotifier 믹스인한 클래스로 표현할 만큼 Flutter 프로젝트에서 핵심적인 부분을 차지한다. 이렇게 자주 사용되는 ChangeNotifier을 잘 써먹을 수 있도록 기복적이지만 유용한 꿀팁들을 정리해본다! 1. 상태 캡슐화 상태관리를 위해 외부에서 ChangeNotifier 믹스인한 클래스의 내부 상태 접근하는 경우가 빈번하게 발생한다. 이를 위해 접근 및 수정할 수 있는 getter와 setter를 작성하고 내부 .. 2024. 1. 20.
[Flutter] STOMP, WebSocket으로 실시간 통신하기 1. 개념 WebSocket 이란? 웹 애플리케이션에서 실시간 양방향 통신을 가능하게 하는 통신 프로토콜. 일반적으로 통신에 사용하는 HTTP 프로토콜은 요청해야 응답이 오는 방식으로 작동한다. 하지만 채팅, 실시간 업데이트와 같이 요청이 없어도 서버에서 지속적으로 응답을 주어야 하는 경우에는 HTTP 프로토콜을 사용하는 것에 불편함을 느끼게 된다. 이를 위해 고안된 것이 WebSocket 이다. WebSocket 통신 프로세스 1) 클라이언트의 요청 클라이언트는 서버에 HTTP 요청을 보내고, 이 요청에는 WebSocket 연결을 원한다는 것을 나타내는 특별한 헤더가 포함된다. 2) 서버의 응답 서버가 WebSocket 연결을 지원하고 받아들일 준비가 되면, 클라이언트의 요청에 대해 101 Switch.. 2024. 1. 15.
[Flutter] --dart-define 옵션 사용법 --dart-define 옵션이란? 이 설정을 통해 사용자 정의 변수를 정의하고 런타임 시 동적으로 사용할 수 있도록 하는 옵션. 런타임의 환경에 따라 서버 엔드포인트를 변경하거나 로깅 레벨을 조정하거나 배포 환경을 설정하는 등의 목적으로 사용할 수 있다. 사용법 실행(빌드) 명령 뒤에 --dart-define=변수명=값 추가 flutter run --dart-define=변수명=값 ex) api 서버 엔드포인트를 설정할 경우 flutter run --dart-define=API_URL=https://dev.api.com ex) debug / production 빌드 환경을 구분하여 id 입력 flutter run --dart-define=FIREBASE_PROJECT_ID=your_debug_proj.. 2023. 12. 10.
[Flutter] Text 길이에 따라 폰트 크기 조절하는 4 가지 방법 1. MediaQuery.of(context).sizedouble screenWidth = MediaQuery.of(context).size.width; double textSize = screenWidth < 390 ? 16.0 : 14.0; 화면 사이즈에 따라 폰트 사이즈가 변하는 방식이다. 조금 투박하다. 모든 상황을 커버할 수는 없지만 넉넉하게 폰트 사이즈를 작게 잡는다면 가장 손쉽게 해결할 수 있는 방법이다. 2. FittedBox내가 선호하는 방식이다. Flutter에서 제공하는 위젯 중 하나로 FittedBox 위젯에 주어지는 제약에 맞춰서 FittedBox 내부의 contents의 크기를 조정해준다. 내가 주로 사용하는 방식은 아래와 같다.FittedBox( fit: BoxFit.scale.. 2023. 11. 23.