Android(26)
-
[Python] AIOAPNS를 사용한 APNs 푸시 메시지 전송
왜 FCM을 사용하지 않고 APNs를 사용하게 됐는가? AIOAPNS 패키지를 사용해서 APNs로 푸시 메시지를 발송 기능을 구현해야 할 일이 생겼다. 일반적인 경우 푸시 메시지를 발송할 일이 있다면 FCM을 사용해서 iOS/안드로이드 양쪽으로 푸시 메시지를 발송하게 되는데, 이번에는 FCM 토큰 유효기간으로 인한 의구심이 들었다. 파이어베이스 문서에 명시되어있는 비활성 토큰은 다음과 같다. 270일간 활동이 없으면 만료된 토큰으로 간주한다는 얘기인데, 이 '활동'이 푸시 메시지를 수신한 것을 의미하는지, 아니면 푸시 메시지를 수신한 이후 사용자가 아무런 반응을 보이지 않은 것인지 분명하지 않다. 비활성 등록 토큰은 FCM에 1개월 넘게 연결되지 않은 비활성 기기와 연결된 토큰입니다. 시간이 지날수록 ..
2025.02.24 -
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 -
특정 버전의 FFmpeg를 Android용으로 크로스컴파일하는 방법 정리
zerodice0/ffmpeg-android-build 브랜치를 참고해주세요. Android NDK을 사용해서 특정 버전의 ffmpeg을 빌드하는 방법에 대해 알아봅시다. 최신 버전의 ffmpeg라면 ffmpeg-android-build의 build_android.sh/build_android_64.sh만 실행시키면 간단히 빌드되므로 굳이 이 글을 참조할 필요는 없습니다. 이렇게 별도의 브랜치를 작성하는 이유는, 최근 ffmpeg를 안드로이드 용으로 크로스 컴파일하는 방법을 검색하면 독립실행형 툴체인(Stand-alone toolchain)을 사용하는 방법만 나오기 때문입니다. 독립 실행형 툴체인은 이미 진즉에 Depreacted 됐죠. 그래서 예전 버전의 NDK를 사용하지 않으면 그 방법들로는 빌드할 ..
2021.03.31 -
NDK 설정과 NDK 버전에 관련된 오류 대처 방법
Android Studio에서 NDK 설정에 대해 알아보자 기본적인 설정은 Configure the NDK for the Android Gradle plugin 문서를 참조하여 설정하면 된다. 위 링크에서는 SDK Manager를 통해서 NDK를 설치하면 된다. 특정 버전의 NDK를 적용하고싶은 경우, 파일을 다운받아 압축을 푼 뒤 File > Project Structure > Project에서 경로를 지정해주거나 build.gradle파일에 ndkPath를 지정해주면 된다. android { ndkPath "/Users/ndkPath/ndk21" // Point to your own NDK }아마 여기까지 읽었다면 엥, 링크타면 다 나와있는 내용을 굳이 글로 작성할 필요가 있나? 라는 생각이 드는 사..
2020.12.08 -
Flutter에서 Native로 작성한 Android/iOS View 사용하기
Flutter에서 Native(Android/iOS)로 작성한 UI Component 사용하기 Flutter를 사용해서 하이브리드 앱을 만들 때, 성능상 한계로 인해 네이티브를 사용해 UI를 작성해야 할 때가 있다. 혹은 이미 Kotlin/Swift를 사용해서 만들어진 컴포넌트 UI가 있어서, Flutter로 코드를 재작성하지 않고 네이티브로 작성된 UI를 불러와야 할 때가 있다. 이러한 경우 어떻게 하면 되는지 살펴보도록 하자. 현재 테스트는 안드로이드만 해봤기 때문에, 이 글은 안드로이드 기준으로 작성한다. 안드로이드는 v2로 업데이트 되면서 사용법이 좀 달라졌기 때문에 삽질을 했지만, iOS는 아마 별 문제 없으리라 생각한다. 사실 공식 문서 Hosting native Android and iOS ..
2020.10.12 -
Android의 WebView를 사용할 때, 클라이언트 에러를 추적하는 방법 정리.
WevView를 세팅해보자. 우선은 레이아웃을 만들어보자. 웹뷰를 액티비티 한 가득 띄워놓을거니까, 아래처럼 xml파일을 작성하면 된다. xml파일의 작성이 끝났다면, 이번에는 Activity를 만들 차례다. 파일을 하나 생성해서 Activity를 상속받은 클래스를 하나 만들어주고, 아까전에 생성한 xml파일을 setContentView로 때려박아주자. 그 뒤 webView의 loadUrl을 호출해주면, 웹 뷰를 사용할 준비는 대충 끝났다. class MainActivity: Activity() { override fun onCreate(savedInstanceState: Bundle?) { //레이아웃 세팅 super.onCreate(savedInstanceState) setContentView(R.l..
2020.03.02