Android 원본 은 Ubuntu 에서 다운로드,컴 파일,설치
환경 준비
1.디스크 공간 은 20G 정도 남 겨 두 고 메모리 3G 입 니 다.호스트 를 달리 면서 가상 컴퓨터 를 달리 기 때문에 메모리 요구 가 비교적 높 습 니 다.그래 야 유창 합 니 다.
2.VMWare 7.1.4 설치.제 운영 체 제 는 Win 7 입 니 다.VMWare 버 전 은 새로운 버 전 으로 해 야 합 니 다.이전 버 전의 VMWare 는 네트워크 지원 에 있어 서 비교적 좋 지 않 습 니 다.가상 컴퓨터 에서 Android 소스 코드 를 다운로드 해 야 하기 때문에 네트워크 가 없 으 면 절대 안 됩 니 다.
3.VMWare 를 설치 한 후 Ubuntu 시스템 을 설치 합 니 다.현재 최신 버 전인 ubuntu-11.04-alternate-i386 을 선택 하 겠 습 니 다.인터넷 에서 찾 아 낸 자 료 는 안 드 로 이 드 소스 코드 를 컴 파일 하려 면 Ubuntu 의 최저 버 전 은 8.04 입 니 다.다운로드 후 설치 할 때 기본 으로 설치 하면 됩 니 다.
4.Git 도 구 를 설치한다.Android 소스 코드 는 Git 도 구 를 사용 하여 관리 하 는데 SVN 에 비해 분포 식 소스 코드 관리 도구 이 고 SVN 은 집중 적 인 소스 코드 관리 도구 입 니 다.Git 도 구 를 설치 하려 면 Ubuntu 에서 다음 명령 을 실행 하면 됩 니 다.
USER-NAME@MACHINE-NAME:~$ sudo apt-get install git-core gnupg
5.자바 SDK 를 설치한다.Ubuntu 에서 다음 명령 을 수행 합 니 다.
USER-NAME@MACHINE-NAME:~$ sudo add-apt-repository ppa:ferramroberto/java
USER-NAME@MACHINE-NAME:~$ sudo apt-get update
USER-NAME@MACHINE-NAME:~$ sudo apt-get install sun-java6-jre sun-java6-plugin
USER-NAME@MACHINE-NAME:~$ sudo apt-get install sun-java6-jdk
6.의지 하 는 다른 가방.Ubuntu 에서 다음 명령 을 수행 합 니 다.USER-NAME@MACHINE-NAME:~$ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl
7.디 버 깅 도구.Ubuntu 에서 다음 명령 을 수행 합 니 다.
USER-NAME@MACHINE-NAME:~$ sudo apt-get install valgrind
2.안 드 로 이 드 소스 코드 프로젝트 를 다운로드 합 니 다.
1.repo 도 구 를 다운로드 합 니 다.Ubuntu 에서 다음 명령 을 수행 합 니 다.
USER-NAME@MACHINE-NAME:~$ wget https://dl-ssl.google.com/dl/googlesource/git-repo/repo
USER-NAME@MACHINE-NAME:~$ chmod 777 repo
USER-NAME@MACHINE-NAME:~$ cp repo /bin/
2.Android 최신 버 전 소스 코드 를 다운로드 합 니 다.Ubuntu 에서 다음 명령 을 수행 합 니 다.
USER-NAME@MACHINE-NAME:~$ mkdir Android
USER-NAME@MACHINE-NAME:~$ cd Android
USER-NAME@MACHINE-NAME:~/Android$ repo init -u https://dl-ssl.google.com/dl/googlesource/git-repo/repo
USER-NAME@MACHINE-NAME:~/Android$ repo sync
긴 기다 림 끝 에 안 드 로 이 드 소스 코드 를 다운로드 할 수 있 습 니 다.그 사이 다운로드 가 중 단 된 경우 도 있 을 수 있 으 므 로 repo sync 를 다시 실행 하면 된다.3.안 드 로 이 드 소스 코드 를 컴 파일 합 니 다.
1.컴 파일.Android 디 렉 터 리 에서 다음 명령 을 실행 합 니 다.
USER-NAME@MACHINE-NAME:~/Android$ make
첫 번 째 컴 파일 은 비교적 긴 시간 을 기 다 려 야 합 니 다.컴 파일 이 성공 하면 아래 의 출력 을 볼 수 있 습 니 다.
Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_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
Installed file list: out/target/product/generic/installed-files.txt
2.컴 파일 과정 에서 발생 할 수 있 는 문제. 문제 1:32 비트 시스템 을 빌 드 하려 고 시도 하고 있 습 니 다.
두 곳 에 수정 이 필요 합 니 다.
1)build/core 디 렉 터 리 의 main.mk 파일 수정:
ifeq ($(BUILD_OS),linux)
build_arch := $(shell uname -m)
#Change the following line for building on a 32-bit system.
#ifneq (64,$(findstring 64,$(build_arch)))
ifneq (i686,$(findstring i686,$(build_arch)))
$(warning ************************************************************)
$(warning You are attempting to build on a 32-bit system.)
$(warning Only 64-bit build environments are supported beyond froyo/2.2.)
2)다음 파일 찾기:
/external/clearsilver/cgi/Android.mk
/external/clearsilver/cs/Android.mk
/external/clearsilver/java-jni/Android.mk
/external/clearsilver/util/Android.mk
LOCAL 수정CFLAGS 와 LOCALLDFLAGS 변수:
# This forces a 64-bit build for Java6
# Change the following two lines for building on a 32-bit system.
# LOCAL_CFLAGS += -m64
# LOCAL_LDFLAGS += -m64
LOCAL_CFLAGS += -m32
LOCAL_LDFLAGS += -m32
문제 2:Undefined reference to`dso_handle'
external/stlport/src/monetary.cpp:39: undefined reference to `__dso_handle'
out/target/product/vm/obj/SHARED_LIBRARIES/libstlport_intermediates/src/locale.o: In function `__static_initialization_and_destruction_0':
external/stlport/src/locale.cpp:29: undefined reference to `__dso_handle'
out/target/product/vm/obj/SHARED_LIBRARIES/libstlport_intermediates/src/locale_impl.o: In function `__static_initialization_and_destruction_0':
external/stlport/src/locale_impl.cpp:31: undefined reference to `__dso_handle'
out/target/product/vm/obj/SHARED_LIBRARIES/libstlport_intermediates/src/locale_impl.o: In function `std::_Locale_impl::make_classic_locale()':
external/stlport/src/locale_impl.cpp:670: undefined reference to `__dso_handle'
external/stlport/src/locale_impl.cpp:667: undefined reference to `__dso_handle'
out/target/product/vm/obj/SHARED_LIBRARIES/libstlport_intermediates/src/locale_impl.o:external/stlport/src/locale_impl.cpp:604: more undefined
references to `__dso_handle' follow
collect2: ld returned 1 exit status
external/stlport/dll 수정main.cpp,다음 성명 에 가입:
extern "C" {
void * __dso_handle = 0;
}
4.SDK 를 컴 파일 합 니 다.이 단 계 는 선택 할 수 있 습 니 다.1.컴 파일.다음 명령 실행:
USER-NAME@MACHINE-NAME:~/Android$ make sdk
2.컴 파일 과정 에서 발생 할 수 있 는 문제.
질문 1:bios.bin 과 vgabios-cirrus.bin 파일 을 찾 을 수 없습니다.
couldn't locate source file: usr/share/pc-bios/bios.bin
couldn't locate source file: usr/share/pc-bios/vgabios-cirrus.bin
여기 usr/share 디 렉 터 리 는~/android/out/host/linux-x86 디 렉 터 리 에 있 는 usr/share 디 렉 터 리 를 말 합 니 다.수정 방법 은~/android/prebuild/common 에 있 는 pc-bios 폴 더 를~/android/out/host/linux-x86/usr/share 로 복사 하면 됩 니 다. USER-NAME@MACHINE-NAME:~/Android$ cp ~/Android/prebuilt/common/pc-bios ~/Android/out/host/linux-x86/usr/share
질문 2:ddmlib-tests.jar,ninepath-tests.jar,common-tests.jar,sdkuilib-tests.jar 파일 을 찾 을 수 없습니다.
~/android/out/host/linux-x86/framework 이 디 렉 터 리 에서 다음 과 같은 몇 개의 파일 을 찾 을 수 있 습 니 다 common.jar,ddmlib.jar,ninepatch.jar,sdkuilib.jar 이 네 개의 파일 을 각각 복사 하고 이름 을 바 꿀 수 있 습 니 다.이름 을 바 꾸 는 원칙 은 간단 합 니 다.바로 원래 의 이름 뒤에-tests 를 따라 가면 됩 니 다.
5.컴 파일 된 안 드 로 이 드 미 러 를 시 뮬 레이 터 에 설치 합 니 다.
1.환경 변수 설정:
USER-NAME@MACHINE-NAME:~/Android$ export PATH=$PATH:~/Android/out/host/linux-x86/bin
USER-NAME@MACHINE-NAME:~/Android$ export ANDROID_PRODUCT_OUT=~/Android/out/target/product/generic
그 중에서~/android/out/host/linux-x86/bin 은 우리 가 실행 할 emulator 명령 이 있 고~/android/out/target/product/generic 은 Android 미 러 저장 디 렉 터 리 이 며 아래 에 emulator 명령 을 실행 할 때 사 용 됩 니 다.
2.시 뮬 레이 터 를 실행 합 니 다.
USER-NAME@MACHINE-NAME:~/Android$ emulator
시 뮬 레이 터 가 실행 되 려 면 Linux Kernel 미 러 zImage 와 Android 미 러 파일 system.img,userdata.img,ramdisk.img 등 네 개의 파일 이 필요 합 니 다.emulator 명령 을 실행 할 때 인자 가 없 으 면 Linux Kernel 미 러 는 기본적으로~/Andreid/prebuild/android-arm/kernel 디 렉 터 리 에 있 는 kernel-qemu 파일 을 사용 합 니 다.Android 미 러 파일 은 기본적으로 ANDROID 를 사용 합 니 다.PRODUCT_OUT 디 렉 터 리 에 있 는 system.img,userdata.img,ramdisk.img,즉 우리 가 방금 컴 파일 한 미 러 문제 입 니 다.
물론,우 리 는 지정 한 미 러 파일 로 시 뮬 레이 터 를 실행 할 수 있 습 니 다.즉,emulator 를 실행 할 때,즉:
USER-NAME@MACHINE-NAME:~/Android$ emulator -kernel ./prebuilt/android-arm/kernel/kernel-qemu -sysdir ./out/target/product/generic -system system.img -data userdata.img -ramdisk ramdisk.img
여기까지 시 뮬 레이 터 에서 우리 가 컴 파일 한 안 드 로 이 드 미 러 파일 을 실행 할 수 있 습 니 다.멋 있 지 않 습 니까?그러나 여기 서 말 하 는 안 드 로 이 드 미 러 파일 은 system.img,userdata.img,ramdisk.img 세 파일 만 포함 하고 리 눅 스 커 널 미 러 는 안 드 로 이 드 가 미리 컴 파일 한 kernel-qemu 미 러 를 사용 합 니 다.그렇다면 우리 가 컴 파일 한 Linux Kernel 미 러 를 사용 할 방법 은 없 을 까?답 은 긍정 적 입 니 다.그러면 우 리 는 완전히 자신의 안 드 로 이 드 시스템 을 DIY 할 수 있 습 니 다!다음 글 에서 리 눅 스 커 널 미 러 를 컴 파일 하면 기대 하 세 요~
PS:메 인 라인 의 최신 소스 코드 는 불안정 버 전 으로 사용 과정 에 문제 가 있 을 수 있 습 니 다.
또한 공식 에서 소스 코드 를 다운로드 하지 못 하면 여기 서 내 릴 수 있 습 니 다.http://zhu.im/Android/
더욱 정식 적 인 소스 코드 컴 파일 방법 은 홈 페이지 를 참고 하 시기 바 랍 니 다.http://source.android.com/source/initializing.html
이상 은 우 분투 에서 안 드 로 이 드 소스 코드 에 대한 다운로드,컴 파일,설치 한 자 료 를 정리 하 는 것 입 니 다.이 과정 에서 많은 문제 가 발생 할 수 있 으 니 주의 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PowerShell 기반 Ubuntu 시스템 사용 상세 정보본고는 주로 Ubuntu 16.04 LTS에 PowerShell을 설치하고 사용하는 방법을 소개한다.PowerShell Core는 마이크로소프트가 내놓은 크로스 플랫폼(Windows, Linux, macOS) 자동화...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.