[수정]android ndk 질문 2
글쓴이: lalupo20 / 작성시간: 월, 2018/10/22 - 6:20오후
opendir 함수로 디렉토리 접근할때...
일단 /sdcard 경로는
/storage/emulated/0으로 나옵니다.
여기서
/storage/emulated/0은 접근이 안되서 널 값이 리턴되는데
/storage/emulated/0/Android/data/com.xxx는 접근이 되네요.
덕분에 샘플음악 플레이해볼 수 있게 변경은 됬는데
왜 이러한 증상이 발생하는지...
조언 좀 부탁드립니다.
편법이라도 쓰자 싶어서
/storage/emulated/0/Music
/storage/emulated/0/Download
/storage/emulated/0/mp3
/storage/emulated/0/Android
...
이런식으로 mp3파일이 있을만한 폴더 다 따로 접근시켰는데
안됨.
/storage/emulated/0/Android/data/com.xxx
얘만 접근되네요. 왜이러는건지..
Forums:
안드로이드 관련 질문
안드로이드 관련 질문.
http://www.masterqna.com/android/
이 곳에 물어보는 건 어떤가요?
세벌 https://sebuls.blogspot.kr/
저기도 물어봤는데
댓글이 잘 안달리네요. ndk 개발하시는 분이 적은거 같아요.
아. 그랬군요...
kldp에서도 답이 잘 안 나오면 KLDP에도 님의 질문에 관심 있는 분이 별로 없어서 일 겁니다.
구글에 검색어를 영어로 쳐서 찾아보면 어떤가요? 영어는 좀 부담스러운가요?
세벌 https://sebuls.blogspot.kr/
영어로 검색해봐도 별다른 정보를 못 찾겠네요.
자바글이 대부분이고 ndk 관련글은 찾기가 좀 어려운거 같습니다.
여기 물어보면 어떨까요?
https://sites.google.com/hanbit.co.kr/ohjunseok/%ED%99%88?fbclid=IwAR0uHgxtSsnNfiSWT36HqHCOlgFnHbeNyu9Hf5BHW_jv1GP85wAq5AKKY_o
세벌 https://sebuls.blogspot.kr/
관심이 없다기 보다는...
NDK 와 상관없이 Linux mount 환경과 SELinux 에 관련이 있지 않을까 생각합니다.
5.0 이후의 안드로이드에는 특정 디렉터리에 SELinux 설정으로 해당 프로세스 외에 접근을 못하게 하는 것으로 알고 있습니다.
말씀하신 /sdcard 디렉터리를 JVM 을 통해서 접근하고 계신 것인지, 커널 시스템 API 로 접근하고 계신 것인지 추가적인 정보가 없다면 답변하기가 어려울 것 같습니다.
질문하신 부분에 대해서 무지해서 뭐라고 답변드리기가 힘드네요.
일단 native 개발로 c++/c만 활용하고 있고
opendir()이라는 함수 사용해서 접근하려고 합니다.
혹시나 해서 mkdir함수로 폴더 생성해보았는데
해당 폴다가 존재한다고 에러문 나오네요.
근데 왜 접근은 안되는지...
그렇다면, SELinux 에 의해 접근이 금지됩니다.
NDK 개발을 하실 때에는 대부분 라이브러리로 작성하시고, Java 소스코드에서 랩핑해서 불러오시는 방법을 추천드립니다. JVM 을 통해 접근하셔야지, 시스템 API 로 접근하시면 안됩니다.
리눅스 시스템에서 테스트 해보니 리눅스 시스템의
리눅스 시스템에서 테스트 해보니 리눅스 시스템의 Permission 문제인것 같습니다.
아래와 같이 일반적은 리눅스에서 테스트 해보시면 동일 증상을 재현 할 수 있습니다.
* 접근 계정이 일반 계정일 경우의 한해서
mkdir -p /storage/emulated/0/testdir
chmod 771 /storage/emulated/0
chown userid:userid /storage/emulated/0/testdir
참고로 안드로이드 shell에서도 일반계정으로 /storage/emulated/0 접근은 안되지만 하위 디렉토리는 접근이 가능하네요
댓글 달기