안드로이드 개발자 모임 게시판
(글 수 7,951)
안녕하세요.
이번에 발표된 넥서슨에서 SD카드(Tflash)가 빠졌다고 합니다.
제 개인적은 생각입니다만,
"이것을 구글은 초기 설계 결함을 인정않으려는 구글의 고집이다"
라고 이야기 하고 싶습니다.
우선
http://developer.android.com/reference/android/os/Environment.html
안드로이드 Framework 에서 외장 저장장치의 정보를 가져오는 API를 보면,
<meta charset="utf-8">getExternalStorageDirectory()
이 함수 1개 밖에 없습니다.
헉, 그럼 난 외장 저장장치를 2개 혹은 3개 달고 싶은데 어떻게 하지?
공식적으로 못합니다.
꽁수를 사용해야 하죠.
삼성처럼 외장저장장치 아래 다른 외장저장장치를 붙이던가?
혹은 별도로 붙이도 Environment 클래스를 수정해서 커스텀 API를 만들고 다른 안드로이드라의 호환성을 포기하던가?
아무튼 2가지 방법다 지원가능하지만 꽁수라는 거죠.
왜 구글은 외장저장장치가 1개뿐 일것이라고 가정을 했을 까요?
이것을 빌게이츠가 PC는 64Mbytes 메모리면 충분해 라고 가정한 것과 비슷한 경우가 아닐까 합니다.
어째든 삼성 갤럭시S는 tflash 가 있는데도 넥서스S에서 빠진 것은
삼성처럼 하자니 안드로이드 프로레임워크의 구조상 미처 고려못한 설계미스가 있다는 것을 자인하는 꼴이 되고,
이것을 모면한 방법을 찾은것이
실수를 인정하고 고쳐나가는 것이 아니라
"우리는 원래 외장장치 1개만 지원하는 것이 스팩이야 그러니 넥서스S에서도 1개만 달어 "
하는 고집이 빚은 결과물이 아닌가 합니다.
감사합니다.
-----------------------------
PS : 왜 nand 메모리가 폰 내부에 내장되어 있는데 "외장 저장장치" 라고 했나요?
이것 Tflash 같은 외부에 꼽는 것을 이야기 해야 하는거 아닌가요?
하고 궁금해 하시는 분들이 있을 거 같아서 보충설명 합니다.
안드로이드의 파일 시스템은
OS 영역
프로그램 설치영역
사용자 저장 공간
등으로 나누어 집니다.
OS 영역을 펌웨어 업그레이드 하면 바뀌는 부분이구요.
프로그램 설치영역은 마켓등에서 다운로드 한 프로그램이 설치되는 부분이구요.
사용자 저장공간은 mp3, avi 등 사용자의 데이타가 저장되는공간이랍니다.
문제는 처음 안드로이드 설계시 위 3부분을 파티션으로 나누고,
보안을 위해서
OS 영역과 프로그램 설치공간은 ext3 (리눅스파일시스템) 을 채택하였구요.
사용자 저장공간은 USB 연결을 위해서 FAT32 를 채택하였답니다.
여기서 '사용자 저장공간' 이 getExternalStorageDirectory() 함수로 가져오는 곳이고
함수명이 외장 저장 폴더 이기 때문에 외장저장장치 라고 이야기 하는 것입니다.
이것이 폰 안에 있던 외부에 있던 물리적인 위치를 이야기 하는 것이 아니랍니다.
즉, 사용자 저장공간이 1개만 있을 것이라는 설계상의 미스로
TFlash를 2개 단다던가, 혹은 갤럭시S 처럼 내부1개 외부 1개를 다는 경우에 대응할 수 없는 구조랍니다.
그래서 캘럭시S 도 TFlash의 path를 가져오는 공식 API 가 없답니다.
감사합니다.
<meta charset="utf-8">
2010.12.07 13:04:45
겔럭시 s 에서 외장 sdcard 를 mount 하지 않아도 getExternalStorageDirectory() 했을때 내장 sdcard가 불려지죠
실제 외장 sdcard는 sdcard/sd 에 위치 하고.. 위에 언급하신 꼼수의 한방법으로 했는데 ..
어쩔땐 헷갈리기도 합니다. ㅋ
2010.12.07 13:28:37
그런데 이번에 저장장치와 관련된 부분이 변경이 되었더군요.
OBB...
2011년초에 관련 툴과 함께 공개한다고 하는데.
구글 정책과 맞물려있는 듯 합니다.
2010.12.07 13:37:00
음 겔럭시 S 쓰면서 microSD 카드를 설치 하지 않았습니다. 없는게 전혀 불편 하지 않았습니다. USB 스토리지 연결도 잘 지원해주고 용량도 넉넉하고.
외장 sd 카드를 제거 한게 안드로이드 답지 못하다고 생각 하지만 편리성에서는 긍정적이라고 생각합니다. 램 값이 비싼것도 아니구요..
개발자나 사용자나 microSD 카드 신경 안써도 되니까요.
이사 갈때는 초큼 불편 하겠네요~
외장 sd 카드를 제거 한게 안드로이드 답지 못하다고 생각 하지만 편리성에서는 긍정적이라고 생각합니다. 램 값이 비싼것도 아니구요..
개발자나 사용자나 microSD 카드 신경 안써도 되니까요.
이사 갈때는 초큼 불편 하겠네요~
2010.12.07 14:08:26
이미 많은 API들이 deprecated 되었던걸 보면 설계결함을 인정하지 않으려고 한다는건 아닌것 같네요.
그것보다는 구글 판단으로는 외부저장영역이 두개는 필요없다는 정책을 갖고 있는게 아닐까요?
2010.12.07 16:26:59
OS 영역과 프로그램 설치공간은 ext3 (리눅스파일시스템) 을
채택하였구요.
사용자 저장공간은 USB 연결을 위해서 FAT32 를 채택하였답니다.
--> 안드로이드는 내부 file system에 기본은 yaffs2를 사용하는 것으로 알고 있습니다.
제조사가 바꿀수는 있겠지만, 폰쪽은 flash memory용으로 특화된 yaffs2인거 같습니다.
혹시, 설마, 2.3에서 싹 바뀐걸 수도. ㅡㅡ;
그리고, 내장 flash에 ext3 사용하는 건 flash 수명에 치명적일 겁니다.
3별이 갤s moviNAND에 yaffs2를 못 올려서 어쩔수 없이 rfs 올린 것 같던데,
이 문제가 없었으면 진작에 ext3로 올렸겠죠.
사용자 저장공간을 FAT32로 사용한 건 USB 연결때문보다는,
사용자 편의성을 위한 것으로 보입니다.
즉, fat32로 되어 있어야 사용자가 sd를 빼서 윈도우쪽에 꼽으면 바로 사용할 수 있겠죠.
통신때문에 비효율적인 FAT32를 쓸 이유는 없습니다. 윈도우가 구려서 그런거죠.
리눅스는 VFS (Virtual File System)를 사용하기 때문에
usb 연결등의 통신쪽과 kernel등의 내부 시스템은 물리적 file system에
영향을 받지 않도록 분리되어 있습니다.
혹시 틀린 내용 있으면 아시는 분이 알려주세요. ㅡㅡ;
--> 안드로이드는 내부 file system에 기본은 yaffs2를 사용하는 것으로 알고 있습니다.
제조사가 바꿀수는 있겠지만, 폰쪽은 flash memory용으로 특화된 yaffs2인거 같습니다.
혹시, 설마, 2.3에서 싹 바뀐걸 수도. ㅡㅡ;
그리고, 내장 flash에 ext3 사용하는 건 flash 수명에 치명적일 겁니다.
3별이 갤s moviNAND에 yaffs2를 못 올려서 어쩔수 없이 rfs 올린 것 같던데,
이 문제가 없었으면 진작에 ext3로 올렸겠죠.
사용자 저장공간을 FAT32로 사용한 건 USB 연결때문보다는,
사용자 편의성을 위한 것으로 보입니다.
즉, fat32로 되어 있어야 사용자가 sd를 빼서 윈도우쪽에 꼽으면 바로 사용할 수 있겠죠.
통신때문에 비효율적인 FAT32를 쓸 이유는 없습니다. 윈도우가 구려서 그런거죠.
리눅스는 VFS (Virtual File System)를 사용하기 때문에
usb 연결등의 통신쪽과 kernel등의 내부 시스템은 물리적 file system에
영향을 받지 않도록 분리되어 있습니다.
혹시 틀린 내용 있으면 아시는 분이 알려주세요. ㅡㅡ;