Android(25)
-
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 -
Retrofit2를 사용하여 서버의 Digest 인증을 처리하기
올해가 삼제긴 삼제인지, 어쩌다보니 Digest와 관련된 내용만 세 번을 처리하게 됐다. 요즈음에는 OAuth2.0을 사용하는 경우가 많아서, Digest 인증을 처리할 일은 거의 없겠지만... 아무튼 이번에는 Retrofit2로 Digest 인증을 처리하는 내용을 다룬다. 우선 Android에서는 iOS와 달리 Basic/Digest 인증에 대한 처리를 지원하지 않기 때문에, 직접 구현해야한다. 이는 Volley를 사용하거는 경우에도 별반 다르지 않다. Volley로 구현되어있는 내용을 Retrofit2로 교체하는 작업이 한창이었기 때문에 내심 별 일 없겠거니 생각하고 있었는데, 레거시 코드를 살펴보니 Deprecated된 Apache 라이브러리를 사용하여 처리하고 있었다. Apache 라이브러리를 사..
2019.11.19