안녕하세요.  

이번에  발표된 넥서슨에서  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">