안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
애플리케이션 단에서 IPC 통신중 하나인 virtual memory mapping 기술인 AShmem을 이용하여 상용화가 가능한지 궁금해서 문의 드립니다.
Android SDK 에서는 android.os.MemoryFile 이라는 API를 제공하며 이를 통하여,
JNI를 통하여 ashmem_create_region() 및 mmap() api를 호출합니다.
하지만 Google에서 제공하는 SDK의 android.os.MemoryFile API는 생성은 가능하지만, 다른 프로세스에서 File Descriptor 이용하여 공유하기 위한
public MemoryFile(FileDescriptor fd, int length, String mode) throws IOException {
if (fd == null) {
throw new NullPointerException("File descriptor is null.");
}
if (!isMemoryFile(fd)) {
throw new IllegalArgumentException("Not a memory file.");
}
mLength = length;
mFD = fd;
mAddress = native_mmap(mFD, length, modeToProt(mode));
mOwnsRegion = false;
}
와
생성한 FileDescriptor를 읽어 올수 있는
public FileDescriptor getFileDescriptor() throws IOException {
return mFD;
}
등이 막혀 있습니다.
구글에서 의도적으로 아직 SDK에서는 invisible 상태로 유지 하는것으로 보입니다.
저는 이를 PDK에 있는 libcutils / libutils 등을 NDK의 Android.mk에 넣어서 빌드를 할경우,
A.so에서 저장한 data가 B.so에서 File Descriptor와 address lenght를 맞춰서 read해 올경우 메모리가 공유되는 것을 확인할 수 있었습니다.
문제는 이를 상용화 레벨에 적용해도 궁금한지 문의 드립니다.
애플리케이션 단에서 IPC 통신중 하나인 virtual memory mapping 기술인 AShmem을 이용하여 상용화가 가능한지 궁금해서 문의 드립니다.
Android SDK 에서는 android.os.MemoryFile 이라는 API를 제공하며 이를 통하여,
JNI를 통하여 ashmem_create_region() 및 mmap() api를 호출합니다.
하지만 Google에서 제공하는 SDK의 android.os.MemoryFile API는 생성은 가능하지만, 다른 프로세스에서 File Descriptor 이용하여 공유하기 위한
public MemoryFile(FileDescriptor fd, int length, String mode) throws IOException {
if (fd == null) {
throw new NullPointerException("File descriptor is null.");
}
if (!isMemoryFile(fd)) {
throw new IllegalArgumentException("Not a memory file.");
}
mLength = length;
mFD = fd;
mAddress = native_mmap(mFD, length, modeToProt(mode));
mOwnsRegion = false;
}
와
생성한 FileDescriptor를 읽어 올수 있는
public FileDescriptor getFileDescriptor() throws IOException {
return mFD;
}
등이 막혀 있습니다.
구글에서 의도적으로 아직 SDK에서는 invisible 상태로 유지 하는것으로 보입니다.
저는 이를 PDK에 있는 libcutils / libutils 등을 NDK의 Android.mk에 넣어서 빌드를 할경우,
A.so에서 저장한 data가 B.so에서 File Descriptor와 address lenght를 맞춰서 read해 올경우 메모리가 공유되는 것을 확인할 수 있었습니다.
문제는 이를 상용화 레벨에 적용해도 궁금한지 문의 드립니다.
안드로메다와 아이뽕 분석 하는중~
공간 측위 관련과 Open GL 공부중... >..<