Category Archives: Android

Intel Multi OS Engine와 Kotlin

인텔이 제작하고 있는 Multi OS Engine은 자바를 사용하여 Android, iOS앱을 MacOSX나 Windows OS 에서 만들 수 있게 해주는 기술입니다. 아직 정식단계는 아니고 프리뷰 단계라고 하네요. 중요한 것은 Multi OS Engine을 Kotlin을 통해 사용할 수 있다는 점입니다.

안드로이드 커스텀뷰 프로그래밍 – 커스텀뷰의 크기 정하기

커스텀뷰의 크기(기하 혹은 좌표계) 정하기 뷰를 생각해 봅시다. 뷰는 하나의 사각형으로 화면에 무엇인가를 그리는 객체입니다. 그리고 사용자로부터 터치 이벤트를 받는 인터렉션의 주체이기도 합니다. 뷰를 생각할 때 가장 중요한 것은 하나의 사각형입니다. 우리가 뷰에 무엇을 그려야 하거나 어떤 뷰에 인터렉션이 발생했는지 알기 위해서는 뷰를 구분지을 영역이 필요하기 때문입니다. 커스텀뷰를 만들 때, 가장 먼저 해야할 일도 뷰의… Read More »

NDK 라이브러리 배포 시 java.lang.UnsatisfiedLinkError 에 대해서.

한 프로젝트에서 두 개 이상의 ndk 라이브러리를 사용한다고 가정해 봅시다. 각 라이브러리는 아래와 같이 ABI를 지원한다면 앱을 빌드하고 실행했을 때 잘 실행될까요? NDK-Library A armeabi NDK-Library B arm64-8a armeabi armeabi-v7a mips mips64 x86 x86_64 즉, NDK-Library B는 모든 ABI를 지원하고 NDK-Library A는 armeabi만 지원합니다. 이럴 경우 앱을 빌드하고 실행하면 NDK-Library A를 찾을 수 없다고 예외를… Read More »

AndroidChannel

안드로이드 프로그래밍을 하면서 Handler를 사용해서 메인 스레드와 워커 스레드간에 통신을 할 때, 작성해야하는 코드가 매번 부담이 되서 AndroidChannel이라는 라이브러리로 만들어 보았습니다. AndroidChannel을 사용하여 Ping-Pong 코드를 아래처럼 작성할 수 있습니다.

TypedArray의 getDrawable()이 null을 반환한다면?

위처럼 속성을 선언하고 아래 코드처럼 접근할 때, null을 반환한다면

해당 커스텀뷰를 선언한 xml로 이동하여 xml 네임스페이스를 제대로 적었는지 확인한다.

이렇게 적어야 하는데 가끔 인텔리센스에 의해서

로 쓰여질 경우가 있다. 길고긴 삽질;

Hello, PercentLayout!

안드로이드 서포트 라이브러리가 23 버전으로 업데이트 되었습니다. 업데이트 내용 중에 PercentLayout이 있는데 이 레이아웃은 퍼센트로 뷰의 너비와 높이를 정할 수 있게 해 줍니다. 즉, 안드로이드의 다양한 디바이스 화면 크기에 상관 없이 가로, 세로 모두 100% 로 정하는 것입니다. PercentLayout은 아래와 같이 두 개의 레이아웃이 있습니다. PercentRelativeLayout PercentFrameLayout PercentLayout을 사용하기 위해서는 안드로이드 서포트 라이브러리와 안드로이드 빌드… Read More »

Android와 FFmpeg의 이상한 오류

ffmpeg을 안드로이드에 포팅해서 사용할 경우, 비디오 필터를 적용할 때(예를 들어 크롭 필터) 아래와 같은 이상한 오류가 발생할 때가 있다.

이 오류로 여러 mp4 연결이나 크롭에 오류가 생겨서 몇시간을 삽질을 했다. 구글링을 해보면 해당 오류에 대한 질문이 많은데 딱히 해결책은 찾을 수 없었다. 그러다 혹시나 하는 마음에 해본 것이 해결 방법이 될 줄이야… 해결 방법이… Read More »

안드로이드 NDK 디버깅하기

안드로이드 스튜디오 1.3버전부터 NDK 디버깅을 지원한다. 2015년 7월 30일 Final Beta버전이 출시되었다. 베타 버전에 특별한 문제점이 없다면 1.3 정식 버전도 며칠내에 출시한다고 한다. 안드로이드 스튜디오 1.3버전을 사용하면 네이티브 개발이 무척 쉬워진다. 정리하자면,

안드로이드 스튜디오 폴더 그룹화하기

안드로이드 스튜디오를 사용하다 보면 리소스 폴더(예를 들어layout) 내에 하위 폴더를 생성할 수 없어서 리소스 파일을 관리하기가 약간 어려웠습니다. Android File Grouping 플러그인을 사용하면 가상의 그룹을 만들 수가 있어서 리소스 파일 관리의 어려움을 해결할 수 있습니다.

안드로이드 앱 크래쉬를 우아하게 해결하기

안드로이드 앱 크래쉬가 발생할 경우, 앱이 죽었다는 메시지박스를 화면에 보여주는데 사용자에게 불쾌감을 줄 정도로 예쁘지 않죠. 며칠전 오픈소스로 CustomActivityOnCrash 라는 프로젝트가 오픈되었는데요. CustomActivityOnCrash를 사용하면 앱 크래쉬가 발생할 경우 커스텀 액티비티를 화면에 띄울 수 있어 아주 우아하게 앱 크래쉬를 해결할 수 있습니다.

JNI 문자열 – 1/3

자바의 String은 유니코드를 기반으로 한다. JNI에서 C/C++로 자바 String 객체를 다루기 위해서 인코딩에 따라 API를 지원한다.

URL 인코딩

URL을 인코딩할 때 아래와 같이 URLEncoder를 많이 사용한다. 그러나 귀차니즘으로 전체 URL 을 한번에 인코딩할 때 아래와 같이 http:// 등이 인코딩되어 원하는 결과가 아닐 경우가 있다.