Android Delvelop


안드로스튜디오에서 외부 JAVA소스 폴더 링크하는 법

android { .... .... sourceSets { main.java.srcDirs += 'src/main/<YOUR DIRECTORY>' } } build.gradle 파일의 android 부분에내용을 추가 한다. 여러개를 넣을경우 sourceSets { main { java.srcDirs = [ '/src/man<YOUR Directory>', 'c:/myjavapack/classes' ] } }   build.gradle file의위치는 app 밑에 있는 것이다.(최상위가 아니다.)   이렇게 하고 sync하면 자동으로 프로젝트에 추가 된다.

안드로이드 쓰레드를 CPU의 특정 코어로 이동하기

쓰레드를 생성 후 만들어진 쓰레드를 CPU의 특정 코어로 이동할 수 있다. 필자가 알기로는 쓰레드를 생성하면서 코어를 지정하는 방법은 없는 것으로 알고 있다. 따라서, 쓰레드를 만들고 만들어진 쓰레드를 특정 코어로 이동시키는 방식으로 사용해야 한다.
 
일단 이 작업을 하기 위해서는 NDK를 이용해야 한다. Java파트에서 지원하는 지는 모르겠지만, 지원하지 않는다는 가정하고 이 글을 작성한다. 안드로이드도 리눅스 커널을 사용하기 때문에 리눅스와 대부분 사용법이 동일하다.
 
 
이 작업을 하기위해서는 사전작업이 좀 필요한 데, 일단 시스템내에 core가 몇 개나 있는 지 알아야 하고, 어떤 녀석이 Big코어인지, Little코어인지도 구분을 해야 한다. 또한 현재 쓰레드가 어느 core에 할당되어

안드로이드 Java ByteBuffer의 allocateDirect

서론
플랫폼이나 Java 버전마다 다르겠지만 Java heap을 이용하는 것보다 Direct방식을 이용하는 것이 대부분의 상황에서 더빠르다.(보통 이 방식을 전송[네트웍이든 파일이든 메모리데이터 교환이든]을 위해 사용한다는 기준에서 빠르다는 뜻이다.)
필자는 이 방식을 Native(NDK)와 Java에서 메모리를 공유하는 데 주로 사용한다.(Native에서 빠르게 읽어내려고.,,)
생성법
생성하는 법은 두가지가 있다. 하나는 Java에서, 다른 하나는 Native에서 만드는 것이다. 같은 것 같지만 다른 점이 있다.
Java에서 생성
생성하는 함수의 원형은 다음과 같다.
static ByteBuffer allocateDirect( int capacity );
 
필요한 용량을 바이트단위로 넘