Programming(201)
-
Target SDK 버전을 33으로 올렸더니 앱이 터지기 시작했다: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
한동안 방치해뒀던 안드로이드 앱이 무려 구글스토어에서 검색이 안된다는 얘기가 들어와서(...) 살펴보니, 타겟 SDK버전이 낮아서 그런 것 같았다. 왜 방치해뒀는지는 차치해두고(...) 그동안 미뤄왔던 뷰 바인딩을 적용하는 등 코드를 말끔하게 뜯어고치고 있다가, 갑자기 앱이 강제 종료됐다. 깜짝 놀라서 로그캣을 살펴보니 다음과 같은 문구가 빨간색으로 떠 있었다. FATAL EXCEPTION: Firebase-Messaging-Intent-Handle Process: , PID: 9058 java.lang.IllegalArgumentException: : Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTAB..
2023.04.07 -
m1 Mac에서 Unknown host CPU architecture: arm64가 뜬다면...
#잡설 m1 칩셋이 출시된지도 어언 1년이 지났지만 아직까지 호환성 관련된 이슈들이 가끔씩 튀어나올대마다 한숨이 나올때가 있다. 대부분의 툴들은 시간이 지났기때문인지 재설치하면 크게 문제되는 경우도 많지만, Android NDK라면 얘기가 또 다르다. 특히 이런류의 문제는 NDK에 가서 직접 코드를 수정해놓고 한참을 멍때리다가 뭔가 문제가 생겼을 때, NDK를 지우고 재설치하면 문제가 다시 튀어나오기때문에 더욱 환장할 노릇이다. 아무튼 오늘은 m1 mac에서 Android NDK를 처음 설치했을 때, 갑자기 arm64 아키텍쳐가 뭔지 모른다며 Unknown host CPU architecture: arm64 에러를 해결하는 방법에 대해 알아보자. #원인 /Users/{Username}/Library/An..
2023.01.09 -
NGINX에서 TLSv1, TLSv1.1을 비활성화해보자.
참고: HTTP_SSL_MODULE 문서 페이지 Nginx - Disable SSL, TLS 1.0, and TLS 1.1 Nginx에서 TLSv1과 TLSv1.1을 비활성화하는 방법 오늘은 NGINX에서 TLSv1, TLSv1.1을 비활성화하는 방법에 대해 살펴보겠다. 는 NGINX에서는 간단하게 아래와 같이 ssl_protocols값만 설정해주면 끝난다. 참고로 TLSv1.3은 OpenSSL 1.1.1 이상의 버전이 설치되어있을때만 사용 가능하며, 그 이하의 버전이 설치되어있는 경우에는 에러가 출력된다. 이럴 때는 OpenSSL을 업데이트해주거나 혹은 과감하게 TLSv1.3을 빼주도록하자. 보안보다는 퇴근이 우선이다 ssl_protocols TLSv1.2 TLSv1.3 몹시 간단하게 끝났는데, 이렇게..
2022.12.20 -
NeoVim을 Visual Studio Code처럼 만들어보자
VimをVSCodeライクにする - Qiita本記事は Classi Advent Calendar 2020 14日目の記事です。 こんにちは。今年Classiに新卒入社した@youichiroです。 皆さんはエディタは何を使っていますか? 自分は普段VSCodeを使って開発を行なっていますが、vimをVSCodeのように使いたいと思いました。 ということで、vimをカスタマイズして見た目や機能をVSCodeライクにしていきます。 vimの初期状態(何も設定していない状態)から、以下の変更を加えていきます プラグインを管理する (vim-plug) ステータスバーを表示する (vim-airline) カラースキームをVSCodeライクにする (vim-code-dark) ファイルツリーを表示する (fern.vim) gitの差分を表示する (vim-gitgutter) ファ..
2022.08.10 -
최상위 Navigator와 MaterialApp, 그리고 Navigator.push()와 GetX.to()
FlutterLocalNotification 패키지를 사용해서 푸시 메시지를 터치하면, 특정 페이지로 이동하게끔 구현을 해뒀다. 문제는 사용자가 이미 특정 페이지에 진입해있을 때, 푸시 메시지를 터치하는 경우. 이 경우에는 다른 동작을 처리하게끔 만들어주고 싶었다. navigation_history_observer | Flutter Package 그래서 사용한 것이 바로 NavigationHistoryObserver. 이 친구를 사용하면 MaterialApp이 push(), pop()등을 할 때마다 내부 리스트에 route를 저장해서, 현재 어느 페이지에 위치해있는지 파악할 수 있게 된다. 매번 push()를 호출하기 위해 MaterialPageRoute를 설정하는 것은 귀찮은 일이었기 때문에, 다음과 ..
2022.07.05 -
[Flutter] isolate와 SharedPreferences, 그리고 파일에 대한 접근 2
이전에 isolate에서 SharedPreferences 패키지에 접근 시, 문제가 발생해서 파일에 데이터를 저장한 후 SharedPreferences처럼 사용하는 방법을 기재한 적이 있습니다. 당시 FirebaseMessaging.onBackgroundMessage() 함수에 넘겨준 콜백 함수가 Android에서는 isolate로 동작하고, SharedPreferences 내부 구현은 네이티브로 구현되어있는데, isolate에서 SharedPreferences에 접근이 안되는 원인을 찾지 못해서였죠. 당시에는 path_provider에서 제공하는 getApplicationDocumentsDirectory()함수를 사용해서 처리했고, 당시에는 isolate에서 파일을 읽고 쓰는 걸 확인했었습니다. [Fl..
2022.06.10