안드로이드 개발자 모임 게시판
(글 수 7,949)
계시판을 보다 문득 든 생각인데,
안드로이드는 다양한 하드웨어에서 플랫폼을 제공하다 보니 어플리케이션 개발자가 접근할 수 있는 부분이 제한될 수 밖에 없는 것 같습니다.
아이폰이든지 안드로이드이던지 어플 개발자는 제공되는 API 밖에 사용할 수 없는 건 동일하겠지만, 다양한 하드웨어에서 돌아가는 걸 전제로 하고 만들어진 안드로이드의 API는 아무래도 제한적이지 않나 하는 생각 됩니다.
API를 만드는 입장에서도 HW가 고정이면 여기에 맞춰서 제공하면 되는데, 이게 늘 바뀐다고 생각하면 표준화된 인터페이스 만들고 하는 일에 들어가는 노력이 상대적으로 커 보입니다.
아이폰 OS도 아이패드에도 들어가고 하지만 그래도 그 변이가 상대적으로 작을겁니다.
안드로이드는 자바말고도 NDK 이용해 C로 짤 수도 있기 때문에 문제가 없다는 분들도 있을 것 같은데.
NDK에서 제공되는 .so 파일은 꼴랑 16개 정도이고 기본적인 것들 뿐입니다.
Sound, Camera 이런 것들은 제조사마다 다를 수 있기 때문에 제공할 수 없는 것으로 보입니다.
아이폰은 해본 적이 없어서 안드로이드의 한계만이 눈에 들어오네요.
두개 다 해보신 분들 어떤가요?
그넘이 그넘인가요?
2010.06.18 15:24:59
다양한 하드웨어를 제공하기 위해서는 숨길수 밖에 없는 부분들이 생겨납니다.
예를 들어 코덱 같은 경우 하드웨어에 따라 지원이 되는 것들도 있고, 안 되는 것들도 있습니다.
그래서 제조사에서 opencore에서 하드웨어 코덱은 하드웨어로 소프트웨어는 소프트웨어로 딱 정해진 파이프 라인(gstreamer에서 쓰는 용어 인데, opencore도 동일한지 모르게쎈요)으로 고정을 합니다.
이런 경우 이런 파이프 라인 구성을 외부에서 제어하도록 하는 게 너무 다양해지기 때문에 외부로 노출시킬 것이 의미가 없을 수도 있습니다.
왜냐하면 각 단말마다 다르기 때문에 각 단말별로 다르게 구현해야 되기 때문에 의미가 없게 되는 것이죠.
하지만 이에 비해서 하드웨어가 고정되면 좀 더 많은 부분을 노출시킬 수가 있을 것 같습니다.
이런 측면에서 아이폰과 안드로인드 어플 측면에서 개방성이 어떤가 궁금합니다.
2010.06.18 14:25:18
HW 제조시에 안드로이드 플랫폼을 채용하려면,
기본적으로 API 호환되도록 테스트를 거쳐서 만들어야 합니다.
안드로이드 API 의 문제가 아니라
호환성을 전혀 고려하지 않고 단순하게 안드로이드 os 올린채로 출시하는 제조사의 문제이죠.
모든 안드로이드 API 에 대한 호환테스트를 거치고 제대로 동작하는 것을 확인한 후 출시하는게 기본입니다.
기본이 안되어 있는 중국 짝퉁 단말 따위나 일반 개인이 옴니아 등에 올린 안드로이드와 같은 정도로
출시를 했을때, api 호환에 문제가 있다면 (당연히 있음)
안드로이드 os 의 문제인지 , 하드웨어 제작자 및 판매하는 사람의 문제인지..판단이 가능하겠죠..
2010.06.18 16:53:38
아이폰도 HW가 고정이라고 가정하지 않습니다. 3G, 3GS, HD전부 칩셋이나 카메라등이 동일한게 들어가진 않으니까요. 다만 좀더 세밀하게 컨프롤하긴 합니다만 그렇다고 HW의 깊숙한 부분까지 제어하도록 허락할수는 없죠. 물론 클로즈된 부분을 어떻게든 제어해서 쓰려는 하드코어한 개발자들이 맘먹고 할려면 좀더 적은 노력이 들어갈수 있다는 정도입니다. 말씀하신 비디오 코덱 쪽은 지금도 빠르게 변동이 있는 부분으로 안드로이드에서는 오픈코어만 사용하는 것도 아니구 엔진 자체도 바뀔 여지가 있으로 앱에서 접근할수 있는 부분은 당연히 제한됩니다. 재밌는 것은 안드로이드가 임베디드에서 대세가 되가면서 HW업체쪽에서 안드로이드를 맞춰려하고 OpenMax같은 표준화 인터페이스를 맞추려고 알아서 노력하기 시작했다는 것이죠. 접근하는 영역의 크기를 생각했을때 천천히 표준화될수 있는 부분이 늘어날 것이고 이런 것이 바로 안드로이드의 힘이겠죠.
2010.06.18 21:36:00
쩝.. 오픈 코어는 그냥 놔뒀음 좋겠네요. 이제 쪼금씩 알아가고 있는데, 바꿔버리면 캐안습입니다.
혁신이 옆에서 보면 좋은데, 따라가야 하는 사람 입장에서 아주 죽겄습니다.
제가 생각할 때 애플은 하드웨어 최대 성능을 어플이 활용할 수 있게 해주는 것 같습니다.
예를 들어 광학 줌이 제공되는 하드웨어가 새로 채택되면.
애플은 하드웨어에 맞춰 SDK 릴리즈하고, 아이폰 개발자는 그 기능 바로 사용해 만들면 되죠.
안드로이드는 제조사마다 저런식으로 하면 fragmentation이 심해지니 저렇게 할수도 없고. 쩝..
저런 거보면 철인의 독재가 유혹적이기 하네요.
그래도 중요한 건 균형과 견제겠죠?
할수 있는 것이야 개발자에 개방적인 안드로이드가 아이폰보다는 훨씬 많지 않은지?
어차피 아이폰도 core 적인 부분은 접근이 불가능한 걸로 알고 있는데..
안드로이드에서 NDK를 활용할 때의 장점은 연산 속도면에 있습니다
게임이나 증강현실 같은 속도가 중요한 부분에서 사용한다고 보시면 되겠구요.
이때는 cpu.gpu 칩의 종류에 따라 맞추어줘야 할것입니다
사운드와 카메라 적인 부분에서 어떤 것을 건드리려고 하시는지는 모르겠지만
안드로이드에서 접근할 수 없는(접근하기 힘든) 부분이라면(드라이버라든지-펌웨어? 용어를 확실히 모르겠네요) 아이폰은 당연히 불가능할 듯하네요. -탈옥(루팅)을 통해서만 가능하겠죠?
접근가능하다고 해도 기본적인 OS 자체가 안드로이드와 달리 오픈소스가 아니라 힘들것이고요.
다만 활용할때의 노력부분은 당.연.히 디바이스 종류가 하나뿐인 아이폰이 유리하겠죠.