[안드로이드] 오픈소스 받아서 실행해 보기 (리코더) Android

2010/11/15 11:42

복사 http://blog.naver.com/dythmall/30097179951

주의) SVN을 좀 아셔야 이 내용이 이해가 될 수 있습니다


안드로이드의 전체 소스는 공개가 되어 있습니다.

누구나 다운 받아서 보고 쓸 수 있지요.

이번에는 안드로이드 오픈소스를 받아서 빌드하고 실행해 보는 방법을 알아보겟습니다.


안드로이드 오픈소스라고 하면 부트로더, 리눅스 커널, 안드로이드 런타임, 등등 여러 가지의 Software Stack이 같이 있는데요

개발자들이 쉽게 보고 따라할 수 있는 Apps (안드로이드에 제공되는 기본엡)를 다운받아서 빌드해 보겟습니다.

예제는 SoundRecorder를 쓰겟습니다 (이게 젤 쉽고 간단합니다 ㅎㅎ)


윈도우 사용자라면 git을 직접 쓰기엔 좀 많은 작업이 필요 함으로 gitweb을로 snapshot을 받아오겟습니다

http://android.git.kernel.org/


이 경로로 가면 안드로이드 오픈소스의 천체 트리가 보입니다.

우리가 원하는건 그중 

platform/packages/apps/SoundRecorder.git

이것!

 

우선 처음에는 좀 헷 갈릴 수도 있습니다

보아야 할 곳은 shorLog 정도를 보면 되겟습니다.

이곳이 중요한 release들을 모아놓은 곳 입니다.

이중에도 더 중요한 release는 녹색 바탕으로 label을 부쳐 놓았습니다.




 오른쪽에 보이는 commit은 commit햇을때의 정보와 자세 로그를 볼 수 있습니다.

commitdiff는 말 그대로 commit된 파일들의 diff

tree는 그 revision때의 소스 트리 구조

snapshot - (이 부분이 저희에게 중요한 부분입니다) commit당시의 소스를 받아볼 수 있습니다.


그럼 eclair (안드로이드 2.1) 소스를 받아 봅니다.




snapshot을 누르면 tar.gz로 압축된 파일이 받아 집니다.

이것 (빵집이나 7zip으로 풀 수 있습니다) 압축을 풀면 SoundRecorder라는 폴더가 생성 됩니다.

이제 Eclipse project를 이 소스를 이용해서 만듭니다.

[File]->[new]->[Android Project]




New Android Project 다이얼로그에서 위와 같이 세팅을 해야 합니다.

ProjectName은 그대로 두시고

create Project from existing source를 선택 합니다.

그리고 soundrecorder가 있는 폴더를 선택 하면 모든 내용이 자동으로 입력 됩니다.

여기서 안드로이드 build target은 직접 선택 해야 합니다. (2.1로 선택해 주세요)

Finish를 누르면 SoundRecorder 프로젝트가 생성 됩니다.


우선은 빨간 x가 뜹니다..

찾아가 보면 SoundRecorder.java의 다음과 같은 라인에서 에러가 납니다.


mRecorder.startRecording(MediaRecorder.OutputFormat.AMR_NB, ".amr");


AMR_NB가 바뀌었나 봅니다.


mRecorder.startRecording(MediaRecorder.OutputFormat.RAW_AMR, ".amr");


이것으로 바꾸어 주면 에러가 사라집니다.

오 벌써 되는건가? 하고 build 버튼을 누르면 다음과 같은 메시지가 뜰겁니다.


 Re-installation failed due to different application signatures.

 You must perform a full uninstall of the application. WARNING: This will remove the application data!

 Please execute 'adb uninstall com.android.soundrecorder' in a shell.

 Launch canceled!


이미 같은 프로그램이 존재한답니다 (그쵸... 안드로이드 기본 어플이니 있겟죠 ㅎㅎㅎ)

근데 제 signing key가 구글의 key랑 달라서 지금 있는 어플을 없애고 하랍니다....

이건 불가능 합니다.  그럼 어덯게 할까요?


간단합니다 안드로이드는 2개의 앱이 같은 앱인가 아닌가를 package 이름을 보고 압니다. 

그래서  꼭꼭 내 어플을 만들때는 나만의 URL을 이용해서 만들라고 주의를 줍니다 (안그러면 이런 일이 많이 일어나겟죠)

그럼 package 이름을 바꾸죠 refactoring을 합니다. 저는 com.android.soundrecorder2 라고 바꾸었습니다.

http://blog.naver.com/dythmall/30096460128 - refactoring 하는 방법은 여기에 설명이 되어 있습니다.


xml부분도 고쳐야 하는데 그 부분은 다음과 같은 옵션을 주면 바꿀 수 있습니다.






OK를 누르면 package이름이 바뀌게 됩니다.

그런데 또 x가 나옵니다. 이번에는 


import com.android.soundrecorder.R;


이 부분인데요, 이곳은 수동으로 고칠 수 밖에 없습니다.

에러가 없어지면 이제 다시 빌드해서 실행해 봅니다.

근데 이번에는 인스톨은 되는데 실행이 안됩니다. ㅡ.ㅡ


AndroidManifest.xml을 열어봅니다. 

가만히 살펴보면 자주 보이던 intent filter가 보이지 않습니다.


            

            

            

            


이 필터를 넣고 다시 시도합니다!





앗! 이제야 되는 군요.


성공입니다.


사실 이 예제는 쉬운 축에 속합니다. 겔러리나 음악 프로그램은 조금더 신경써야하는 부분들이 있더군요

+ Recent posts