Android 소스 코드 컴 파일

안 드 로 이 드 소스 코드 획득,컴 파일 등 과 관련 해 서 는 인터넷 에 많은 댓 글 해답 이 올 라 오고 있 지만,사실 공식 홈 페이지 설명 을 바탕 으로 쓴 것 이 므 로 한 화 과정 이 라 고 할 수 있 으 므 로 게시 물이 잘 보이 지 않 으 면 소스 홈 페이지 에서 답 을 찾 을 수 있다.
http://source.android.com/

다음은 자신 이 Ubuntu 8.04 시스템 에서 컴 파일 하 는 과정 입 니 다.
1.소스 코드 획득
앞에서 쓴 블 로 그 를 참조 할 수 있 습 니 다.http://www.cnblogs.com/playing/
1).공식 안 드 로 이 드 소스 획득 repo init -u git://android.git.kernel.org/platform/manifest.git -b gingerbread
2).CyanogenMod Android 원본 획득 repo init -u git://github.com/CyanogenMod/android.git -b gingerbread
(원본 위치 github 의 CyanogenMod 프로젝트https://github.com/CyanogenMod)
3).삼 성 갤 럭 시 안 드 로 이 드 소스 획득 repo init -u git://github.com/drakaz/android.git -b gaosp-gingerbread
      (원본 코드 는 github 에 있 는 drakaz 프로젝트 입 니 다. https://github.com/drakaz)
(자신 이 만 들 핸드폰 은 삼 성 i7500 이기 때문에 갤 럭 시 안 드 로 이 드 를 특별히 추 가 했 습 니 다.사실은 CyanogenMod 의 한 가지 이기 도 합 니 다)
2.컴 파일 다운로드 에 필요 한 도구 환경 설치
sudo apt-get install build-essential sudo apt-get install make  sudo apt-get install gcc  sudo apt-get install g++  sudo apt-get install libc6-dev  sudo apt-get install flex  sudo apt-get install bison  sudo apt-get install patch  sudo apt-get install texinfo  sudo apt-get install libncurses-dev  sudo apt-get install git-core gnupg  //(gnupg 시스템 자체 가 져 왔 을 수도 있 습 니 다) sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl sudo apt-get install ncurses-dev  sudo apt-get install zlib1g-dev sudo apt-get install valgrind(선택 가능,21M 크기,일반인 은 사용 할 수 없다 고 생각 합 니 다) sudo apt-get install python 2.5(실제로 설치 하지 않 아 도 됩 니 다.Ubuntu 8.04 는 이미 자체 가 져 왔 습 니 다) sudo apt-get install sun-java6-jdk(또는 sudo apt-get install sun-java5-jdk)
(많은 사실 시스템 이 설치 되 어 있 습 니 다.빨간색 레이 블 을 제외 하고 다른 컴 파일 시 설치 되 어 있 지 않 습 니까?)
특히 주의:
JDK 6 if you wish to build Gingerbread or newer; JDK 5 for Froyo or older (    )

즉,2,3 이전 버 전 은 JDK 5,2,3,3 이후 버 전 은 JDK 6 를 사용 해 야 합 니 다.
3.소스 코드 컴 파일
명령 행 에서 make 명령 을 실행 합 니 다:
$make
그리고 긴 기다 림...
컴 파일 에 성공 하면 코드 디 렉 터 리 에 out 디 렉 터 리 가 하나 더 생 깁 니 다.
명령 행 에서 다음 과 같은 정 보 를 출력 하 는 것 을 볼 수 있 습 니 다.
Install: out/target/product/generic/system/xbin/scp
Notice file: system/extras/showmap/NOTICE -- out/target/product/generic/obj/NOTICE_FILES/src//system/xbin/showmap.txt
Install: out/target/product/generic/system/xbin/showmap
Notice file: system/extras/showslab/NOTICE -- out/target/product/generic/obj/NOTICE_FILES/src//system/xbin/showslab.txt
Install: out/target/product/generic/system/xbin/showslab
Notice file: external/sqlite/dist/NOTICE -- out/target/product/generic/obj/NOTICE_FILES/src//system/xbin/sqlite3.txt
Install: out/target/product/generic/system/xbin/sqlite3
Notice file: external/dropbear/NOTICE -- out/target/product/generic/obj/NOTICE_FILES/src//system/xbin/ssh.txt
Install: out/target/product/generic/system/xbin/ssh
Install: out/target/product/generic/system/xbin/strace
Notice file: system/extras/su/NOTICE -- out/target/product/generic/obj/NOTICE_FILES/src//system/xbin/su.txt
Install: out/target/product/generic/system/xbin/su
Install: out/target/product/generic/system/xbin/timeinfo
Copy: out/target/product/generic/system/etc/apns-conf.xml
Copying: out/target/product/generic/obj/NOTICE_FILES/src/kernel.txt
Finding NOTICE files: out/target/product/generic/obj/NOTICE_FILES/hash-timestamp
Combining NOTICE files: out/target/product/generic/obj/NOTICE.html
gzip -c out/target/product/generic/obj/NOTICE.html > out/target/product/generic/obj/NOTICE.html.gz
zip -qj out/target/product/generic/system/etc/security/otacerts.zip build/target/product/security/testkey.x509.pem
Generated: (out/target/product/generic/android-info.txt)
Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_unopt_intermediates/system.img
Install system fs image: out/target/product/generic/system.img
Target ram disk: out/target/product/generic/ramdisk.img
Target userdata fs image: out/target/product/generic/userdata.img 

===================================================================================
후속 컴 파일:
종종 우 리 는 이미 원본 코드 를 컴 파일 했 지만,안의 어떤 파일,어떤 항목 을 다시 수정 할 것 이다.이때 우 리 는 단독으로 컴 파일 할 수 있다.
  android     
 $ . build/envsetup.sh
               。

예 를 들 어 연락처 연락처 항목 을 바 꾼 후에 명령 을 간단하게 실행 하여 이 부분 을 단독으로 컴 파일 할 수 있 습 니 다.  $mmm packages/apps/Contacts/변경 사항 을 직접 테스트 할 수 있 도록 새로운 system.img 을 생 성하 여 android 디 렉 터 리 에서 실행 해 야 합 니 다.    $ make snod 물론 시스템 내부 가 아 닌 에 뮬 레이 터 나 다른 외곽 과 관련 된 것 으로 바 뀌 었 다 면 시스템.img 을 다시 만 드 는 것 이 아 닙 니 다.
=====================================================================================
4.테스트 실행
1)환경 변수 설정:
 ~/.bashrc 파일 을 열 고 마지막 에 다음 두 줄 을 추가 합 니 다:PATH="$PATH:$HOME/android/out/host/linux-x86/bin"ANDROIDPRODUCT_OUT=$HOME/android/out/target/product/genericexport ANDROID_PRODUCT_OUT
(당신 이 만 든 out 디 렉 터 리 를 설정 하 는 것 입 니 다)
2)시 뮬 레이 터 실행:
cd $HOME/android/out/target/product/generic
emulator -image system.img -data userdata.img -ramdisk ramdisk.img
마지막 으로 시스템 에 들 어가 큰 시 계 를 볼 수 있다 면 큰 성 과 를 거 둘 수 있 습 니 다!!!
5.컴 파일 과정 에 나타 난 문제점
만약 에 위 에서 한 걸음 한 걸음 하면 성공 적 으로 컴 파일 할 수 있다 고 생각한다 면 너무 간단하게 생각 합 니 다.컴 파일 과정 에서 예상 치 못 한 오류 가 발생 하여 컴 파일 이 중단 되 는 경우 가 많 습 니 다!그러나 다행히 만난 문 제 는 보통 인터넷 에 해결 방안 이 있 습 니 다.검색 만 하면 ok 입 니 다.다음은 자신 이 번역 하 는 과정 에서 오류 가 발생 했 습 니 다.
1.g++와 같은 도구 가 없습니다.
sudo apt-get install...을 통 해 설치 할 수 있 습 니 다.
2.Android 컴 파일 시 stub-64.h 문 제 를 찾 을 수 없습니다.
   Android.mk   -m64         ,     :
external
/clearsilver/cgi
external
/clearsilver/java-jni
external
/clearsilver/util
external
/clearsilver/cs
   java6      ,   java5        !

참고 글:http://www.webgou.info/content/programming/262/

좋은 웹페이지 즐겨찾기