본문 바로가기

IT

(92)
[ERROR] dex file cannot exceed 64K 대응법 플러터에서 이런저런 플러그인들을 넣다보면 갑자기 빌드가 안될때가 있는데, firebase의 cloud firestore를 넣으면 안드로이드쪽에서 터지는 에러메세지라고 할수 있다. 플러그인 페이지에는 특별히 dex관련해서 언급이 없으므로 처음 이런 메세지를 받으면 놀라게 된다. (pub.dev/packages/cloud_firestore) 특히 나같은 경우는 iOS개발자였다보니까 안드로이드쪽 에러쪽은 잘 몰라서 더더욱 멍해지는 경우가 많았다. 간단히 검색만 해봐도 알수 있지만, 설정쪽를 조금만 건들면 해결할수 있다. android/app/build.gradle 이쪽에서 아래와 같이 수정해 주면 해결! ... android { ... defaultConfig { ... //아래를 추가 multiDexEnab..
APNG, 그리고 WebP 나는 세상에 GIF밖에 없는줄 알았다. 근데 오늘 효과담당 고객쪽이랑 애기하는데 계속 エーピング~ エーピング~ 라고 해서, 음....이 사람은 에이핑크가 좋은가?... 라고 생각했는데 APNG였던거......animated png라고 결국 화질이 좋은 GIF라고 보면 이해가 쉽다 인터넷에서 검색한 결과는 다음과 같았다. 아~~apng는 맥os만 되고 webp는 윈도우랑 안드로이드에서만 되는구나라고 생각했더니 실제로 어플에 넣어서 만들어 보니까 webp가 ios에서도 잘 움직인다는거 알고보니, 브라우저 이야기였다. webp는 사파리에서는 대응이 안된다는 의미였다는. 결국 쓸수 있다면 webp가 훨씬 나은 선택지가 될것이다. 쩝....정말 gif만 있는줄 알았다구!
Provider 그리고 Riverpod# riverpod를 사용하면서 경험한 바보같은 실패담 1. 변경? 생성? HookWidget을 이용해서 자동적으로 상태를 업데이트 하려고 했는데, 아무리 해도 변화가 없어서 포기하려고 한순간!! riverpod 튜토리얼에서 발견한 한것은 바로! StateNotifier 클래스 안에서 모든 연산들이 다 변수의 변경이 아니라 생성이였다는 점이였다. 예를 들어서 list.add(anyting)이런 식이 아니라. var list = [...state, anyting]요런식으로 새로운 변수를 생성해서 반환하는 식으로 되어있었다. 결국 StateNotifier 에서 noti를 하려면 내부의 변수의 변경이 아니라 새로운 값을 넣을때만 notify갱신이 생긴다는 걸 한 6시간의 노가다끝에 알게 되었다. 특별히 튜토리얼 ..
[Flutter] InkWell on image, 잉크웰을 이미지 위에서 작동시키기 return new Stack(children: [ new Positioned.fill( bottom: 0.0, child: new GridTile( footer: new GridTileBar( title: new Text(s.displayName), subtitle: new Text(s.gameName), backgroundColor: Colors.black45, trailing: new Icon( Icons.launch, color: Colors.white, ), ), child: new Image.network(s.imageSrc, fit: BoxFit.cover)), ), new Positioned.fill( child: new Material( color: Colors.transparent, c..
[flutter] 맥에서 SHA 1 certificate 취득하기 firebase공홈에서 알려주는 SHA1 취득 커맨드는 다음과 같다. => keytool -exportcert -list -v \ -alias androiddebugkey -keystore ~/.android/debug.keystore 하지만 이대로 맥북에 입력하면 에러가 나온다. 오직 원라인 커맨드만 받느다고. 다음과 같이 수정하자 => keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore 뭘쓸때 없는걸 가지고 2시간은 헤맨거같다. 나이 먹으면 어여 코딩 고만해야지. 매일 매일 스스로의 한계를 체감하고 멍청하다는 생각밖에는 안든다. 이놈에 코딩을 하면 할수록.
[Flutter + Firestore] Datetime 시간순으로 검색하기 데이타를 검색해서 가져올때 가장 기본적인 정렬방식은 아마도 시간순일것이다. Firestore에서 값을 시간순으로 가져오려고 했는데, 일정시간 이후값을 가져올라고 하는데 자꾸 일정시간마저 포함해서 가져오는것이였다. 속터져서 죽는줄 알아서, API지우고 Http로 직접 연결하면서 하루를 꼬박 고생했는데도 계속 이상한 값이 나와서 걍포기직전이였는데, 이것이....firestore에서 date 값을 받으면서도, date값으로는 정확한 정렬이 안된다는 것이였던것이다.. 이런 거지같은.... 괜히 온라인 강사들이 date값 안쓰고, 구지 epoch값을 쓰는데에는 그런 이유가 있었던것...... 미리 이유를 가르쳐주던가.... 결국 해결법은 날짜값을 datetime이 아니라 걍 epoch값을 직접 넣고 그값으로 정렬..
Flutter. 일주일 공부하고 정리#1 원래는 ionic이나 react등등 스크립트 기반으로 어플 개발을 해보고 싶어서 이것저것 알아보는 과정에정말이지 아주 우연히 발견한 녀석... 우연히 발견했는데, 구글이 첨부터 작정하고 만든놈이라는.. 아이오닉등의 폰갭이나 스크립트 기반의 어플개발은 앞으로 힘들어 질것이다.(애플이 네이티브 어플이 아니면 무조건 리젝한다고 공표함. 구글찾아보면 나와요)(한국 분들은 애플 무시하지만, 결국 애플이 그리 한다고 하면 그렇게 됌)(앱스토에 스크립트 기반의 어플이 사라진다면 구지 스크립트로 안드로이드어플을 개발한 필요가 없음. 원코드 멀티 플랫폼이 되니까 성능이 꾸저도 썼던거) 그러던중 구글이 지들이 만든 dart라는 언어로 flutter라는 프레임워크를 만듬. 몇년전에.... 올해 갑자기 각광받은 이유는 구글에..
Flutter, shared_preferences로 map 저장하기 flutter의 shared_preferences를 이용하면 데이터를 기기에 저장할수 있는데, 실제 어플을 제작하다보면 당면하게 되는 문제 중하나는 그냥 스트링이란 인티져가 아니라 맵 자체를 저장하고 싶어 지게 된다. 어쩌면 아주 당연한건... 실제 어플에 적용되는 데이타는 거의 대부분 맵구조를 가지게 되니까... 근데 문제는 shared_preferences에는 맵을 저장하는 함수가 없다는거.... 아....역시 간단한 데이터밖에 저장 못하는것인가....라고 좌절에 빠져있었는데.... 역시 똑똑한 사람들은 세상에 많은거 같다. 너무 쉽게 해결할수 있었다...(내가 아니라 그냥 구글로.) 간단하다...저장하고 싶은 맵구조를 그냥 json.encode를 인코딩해버린다! ㅋㅋㅋㅋ그럼 스트링이 넘어오고, 그걸..