안녕하세요.
안드로이드를 포팅해야 하는데, 뭐부터 해야할지 난감해서 이렇게 질문을 드립니다.
보드는 아직 선정이 안되었고요, 일단 할수 있는것부터 해보자고 해서, 리눅스 깔고 소스 받아서 컴파일을 해서
이미지 3개는 만들어 봤습니다. 근데, 이제부터 뭘 어떻게 해야 할지 모르겠네요..ㅠㅠ
정말 백지상태에서 특정 타겟 플랫폼에 안드로이드를 포팅하기 까지 대략 어떻게 해야 하는지, 뭘해야하는지
모르겠습니다.
어떻게 해야 할까요 ㅠㅠ?
일단 보드에 안드로이드를 올려서, 그 안에서 어플이 돌아가게 해야지요. OS 포팅을 말하는것이였는데요 ㅎㅎ 어플 개발은 아마 자바로 하게 될것 같구요.
^^ 보드선정부터 하셔야겠군요..ㅎㅎ
보드를 구매한 업체에서 안드로이드 포팅자료와 소스를 제공해주면 좋겠지만..
만약 제공이 안된다면 직접 부트로더부터 커널 및 디바이스 드라이버, 파일시스템을 직접 포팅하셔야 합니다.
쉬운일이아니죠^^;;
보드를 6410이나 C100으로 구매하신다면.. 임베디드관련 커뮤니티 사이트에서 커널소스를 다운받아 수정하시는게 빠를것같구요..
삽질의 길로 접어드셨군요..ㅎㅎㅎ
특정 디바이스를 안드로이드에서 제어하기 위해 JNI가 필요하구요.. NDK를 이용해 쉽게 컴파일이 가능한거구요..
어플이 목적이시라면..
그냥 안드로이드 올라간 보드를 구매하시는게 빠를것같습니다..
요즘 오드로이드 잘나왔던데요..(개발자버젼으로 저도 사용중..ㅋ)
그럼... 수고하십시오^^
보드는 Embest 의 Devkit 8000이라는 보드가 될듯 하네요. 업체에서 소스를 제공하는지는 모르겠지만, 일단 안드로이드 포팅은 되는것 같군요. 그런데 이게 어짜피 테스트용이라 나중에 커스터마이징해서 아트웍 다시 들어가면, 왠지 포팅 다시 해야 할 것 같아서, 결국 삽질을 해야 할것 같긴 합니다. 이게 순수 모바일 용으로 사용하는것이 아니라서, usb 나 serial 을 이용해서 따로 control board 가 올라가야 할것 같기 때문에, 이부분에 대한 API 는 직접 제작을 해야해서, JNI 로 만들어야 겠지요.
그런데 파일 시스템까지 다 만들어줘야 하나요? 안드로이드가 리눅스 커널 기반이여서, 리눅스 파일 시스템을 그대로 사용할줄 알았는데 아닌가 보군요. 소스를 받아서 컴파일을 해보긴 했는데 (그냥 Make 명령어로요) 이게 포팅과는 관련이 없다고 해야할까요?
아뇨~ 매~우 관련이 있죠...ㅎ
사실 저도 초보긴하지만... 안드로이드 포팅하면서 느낀데로 말씀드리면요~
순수 어플이 목적이신분들은 상관없지만 포팅을 하시는 분들에게는 분석이 필요한 부분이구요..
리눅스에서 Git를 통해 다운받으신 안드로이드 풀소스에는 Dalvik VM, Framework , HAL관련, 부팅관련.. Bionic C lib.... 등등 소스들이 있습니다..
이소스를 빌드하고 나면 opt/target/product/generic/ 안에 파일시스템이 생성되구요..
이 파일시스템은 기존 리눅스 파일시스템에서 System과 Data가 추가된형태구요~ DalvikVM본체와 프로그램 리소스, 쉘 명령어등을 포함하고 있습니다.
Android System Level에서 커스터마이징을 하시려면 (예를들어 홈 디자인을 수정한다던가... ) Frameworks 의 소스를 수정해야합니다.
또..음... init.rc 파일도 건들어 주셔야하구요~ init.rc만 분석하는것도 힘들더라구요...ㅠ (생각보다 참 많은일을 하는넘임...)
디바이스 드라이버가 포팅된다고 안드로이드에서 바로 잡히는건아니구요~ 안드로이드 UI와 디바이스 드라이버를 연결시켜주시는 작업을 파일시스템에서 해주셔야한다는거죠..
예를들어 ALSA를 사용하기 위해 BoardConfig.mk를 수정한다거나... Wifi 드라이버를 init.rc에서 적재시켜야한다거나...
결론은
소스를 받아서 컴파일을 해보긴 했는데 (그냥 Make 명령어로요) 이게 포팅과는 관련이 없다고 해야할까요?
"관련 있다는거죠~...ㅎㅎㅎ"
이상 허접한 답변이었습니다...
좋은하루보내세영~~
오늘 완젼춥네요..ㅠㅠ
무엇을 포팅하는건가요?
C언어로된 소스를 돌아가게 하는건가요?ㅎ 그러면 NDK쪽 보셔야 하구요.