MacOS X 다운로드 Android 4.4.4 소스 컴파일(아래)

7513 단어
이 문서는 MacOs 10.12에 상세하게 기록되어 안드로이드 4.4.4 를 컴파일합니다r2 지점의 시스템 소스 프로세스는 에서 언급한 대로 환경을 구축하지 않았습니다. 그렇지 않으면 예측할 수 없는 오류가 많이 발생할 수 있습니다.
코드를 동기화한 후에 우리는 원본 디렉터리.repo를 삭제할 수 있다. 그 안에는git 동기화 원본 때 다운로드한 420여 개 항목의 압축 패키지와 임시 데이터가 있는데 삭제하는 것도 뒤에 원본 코드를 컴파일할 때 충분한 공간을 남기기 위해서이다.
rm -rf .repo 
rm -rf 명령은 강제 삭제 명령입니다. 조심스럽게 사용하십시오. 파일이 너무 많아서 여기서 삭제하는 데 시간이 좀 걸릴 수 있습니다. 기다려 주십시오. 10G의 안드로이드 4.4.4r2의 원본 코드가 진면목을 드러냈다. 우리는 분리된 하드디스크에 50G의 용량을 분배하는 것이 가장 좋다. 왜냐하면 내가 번역을 끝낸 후에 전체 공정의 크기가 40G에 가깝기 때문이다.
소스 루트 디렉토리에 들어가서 명령을 입력하여 컴파일 환경을 초기화합니다.
source build/envsetup.sh

이것은 스크립트를 로드한 것입니다. 다음 명령은 다음과 같습니다.
-Pro:AndroidSource yellcat$ source build/envsetup.sh including device/asus/deb/vendorsetup.sh including device/asus/flo/vendorsetup.sh including device/asus/grouper/vendorsetup.sh including device/asus/tilapia/vendorsetup.sh including device/generic/armv7-a-neon/vendorsetup.sh including device/generic/mips/vendorsetup.sh including device/generic/x86/vendorsetup.sh including device/lge/hammerhead/vendorsetup.sh including device/lge/mako/vendorsetup.sh including device/samsung/manta/vendorsetup.sh including sdk/bash_completion/adb.bash
마찬가지로 Android 4.4.4를 컴파일하여 서로 다른 기계에서 서로 다른 버전을 구분해야 하기 때문에 여기서 버전을 한 번 더 선택하여 입력해야 한다.
lunch

만약 여기에 오답이 있다면 다음 섹션의 문제로 이동해서 답을 찾으십시오. 해결된 후에 다시 실행하면 결과는 다음과 같습니다.
-Pro:AndroidSource yellcat$ lunch You're building on Darwin Lunch menu... pick a combo: 1. aosp_arm-eng 2. aosp_x86-eng 3. aosp_mips-eng 4. vbox_x86-eng 5. aosp_deb-userdebug 6. aosp_flo-userdebug 7. aosp_grouper-userdebug 8. aosp_tilapia-userdebug 9. mini_armv7a_neon-userdebug 10. mini_mips-userdebug 11. mini_x86-userdebug 12. aosp_hammerhead-userdebug 13. aosp_mako-userdebug 14. aosp_manta-userdebug Which would you like? [aosp_arm-eng]
AOSP는 14가지 버전을 보여줍니다. 여기에는 1.aosp_arm-eng를 예로 들어 의미를 설명합니다.명칭은 두 부분BUILD-BUILDTYPE으로 나눌 수 있는데 그 중에서BUILDaosp_arm는 특정한 기능 조합 번호일 뿐이다. 일반적으로 버전에 맞는 하드웨어를 나타내는 것이다BUILDTYPE. 즉eng는 구축 유형을 뜻하는데 주로 당신이 컴파일한 시스템의 권한을 결정한다. 다음과 같은 세 가지가 있다.
| BUILDTYPE | 역할 | - | | | user| 제한된 접근 권한으로 생산 환경 | userdebug | user 과 유사하지만 루트와 debug 권한이 있고 디버깅 |eng | 추가 디버깅 도구와 debug 도구가 있습니다
여기서 우리는 1 또는 aosp_arm-eng를 직접 입력하면 이 버전의 기본 정보 목록을 얻을 수 있는데 실행 결과는 다음과 같다.
Which would you like? [aosp_arm-eng] 1 PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=4.4.4 TARGET_PRODUCT=aosp_arm TARGET_BUILD_VARIANT=eng TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm TARGET_ARCH_VARIANT=armv7-a TARGET_CPU_VARIANT=generic HOST_ARCH=x86 HOST_OS=darwin HOST_OS_EXTRA=Darwin-16.3.0-x86_64-i386-64bit HOST_BUILD_TYPE=release BUILD_ID=KTU84Q OUT_DIR=out
우리는 안에 있는 시스템 버전 번호4.4.4가 있고 목표 cpuarm가 있으며 컴파일된 ROM 출력 디렉터리out와 우리의Mac시스템의 정보를 볼 수 있다. 다른 버전이 어떤 차이가 있는지 여러분은 직접 시도해 보셔도 됩니다. 아무리 구체적이어도 잘 모르겠습니다.
마지막으로 우리는 make j4 명령을 실행하고 컴파일하기 시작했다. 이곳의 숫자4는 모두가Mac의 성능에 따라 조정할 수 있다. 예를 들어dual-E5520기계는 2개의 cpu가 있고 각 cpu는 4개의 핵이 있으며 각 핵은 2개의 라인이 있다. 그러면 가장 빠른 컴파일 속도는 make -j16부터make -j32 사이에 컴파일링이 끝난 후에 실행emulator 명령을 실행하면 가상 컴퓨터를 실행할 수 있다.
컴파일을 시작한 후 여러 가지 이상이 발생하여 컴파일을 중지할 수 있습니다. 문제를 해결한 후에 다시 입력make -j4한 후에 계속 컴파일을 할 수 있습니다. 앞에서 컴파일한 모듈은 컴파일을 반복하지 않습니다. 이 때문에 0부터 컴파일을 시작하려면 임시 파일을 제거하기 위해 make clean 명령을 실행해야 합니다.
지금부터 우리는 Mac에서 안드로이드 원본을 컴파일하는 일부 구덩이를 속속 만나게 될 것이다. 아래의 문제들은 대부분 상황에서 선후 순서로 발생한다. 여기서 문제를 하나하나 해결해야 한다. 오류가 발생하면 첫 번째 error에 나타난 로그를 찾아서 번호를 맞추어 자리에 앉으세요.
문제 0
You are attempting to build with the incorrect version of java.
Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.

혹은
You are building on a case-insensitive filesystem.
Please move your source tree to a case-sensitive filesystem.

JDK 버전의 설치가 정확하지 않고 하드디스크의 구역이 정확하지 않습니다. 을 옮겨서 환경 구축을 열심히 공부하고 환경 구축이 정확한지 확인한 후에 명령 단말기를 다시 켜서 java -version로 자신의 JDK가 맞는지 확인하세요OracleJdk6.
문제 1
Can not find SDK 10.6 at /Developer/SDKs/MacOSX10.6.sdk

이것은 XCode 버전이 너무 높아서 에서 XCode.app의 패키지 내용을 열었는데 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs에 들어가면 없는 것을 발견할 수 있다MacOSX10.6.sdk. 해결 방법은 낮은 버전의 XCode를 설치한 후에 프로필을 수정하는 것이다. 어떤 게시물은 프로필만 수정하고 나중에 문제가 발생하면 낮은 버전의 XCode를 설치해야 한다는 것을 보여준다.XCode 6.4를 설치하고 구성 파일을 수정했습니다.
//       
//  /build/core/combo/HOST_darwin-x86.mk , sublime  XCode  vim  
//  mac_sdk_versions_supported :=  10.6 10.7 10.8
//       
//mac_sdk_versions_supported :=  10.9 

문제 3
system/core/include/log/log.h:38:20: error: stdarg.h: No such file or directory

원본 루트 디렉터리에서 /build/core/combo/HOST_darwin-x86.mk를 찾으면 83줄 근처에서 찾을 수 있습니다
ifeq ($(mac_sdk_version),10.8)
# Mac SDK 10.8 no longer has stdarg.h, etc

다음으로 변경
ifeq ($(mac_sdk_version),10.9)
# Mac SDK 10.8 or later no longer has stdarg.h, etc

문제 4
SyntaxError: Unable to find any JNI methods for org/chromium/ui/Clipboard.

원본 루트 디렉터리에서 /external/chromium_org/base/android/jni_generator/jni_generator.py 찾으면github에 해결 방안이 있으면 그대로 하면 됩니다.
문제 5
external/qemu/distrib/sdl-1.2.15/src/video/quartz/SDL_QuartzVideo.h:95: error: expected specifier-qualifier-list before ‘CGDirectPaletteRef’
external/qemu/distrib/sdl-1.2.15/src/video/quartz/SDL_QuartzWM.m: In function ‘QZ_CreateWMCursor’:
external/qemu/distrib/sdl-1.2.15/src/video/quartz/SDL_QuartzWM.m:66: error: ‘struct SDL_PrivateVideoData’ has no member named ‘system_version’

원본 루트 디렉터리에서 찾기 /external/qemu/distrib/sdl-1.2.15/src/video/quartz/SDL_QuartzVideo.h, 열고 94줄 근처에서 찾기
CGDirectPaletteRef palette;            /* palette of an 8-bit display */  

다음으로 변경
#if (MAC_OS_X_VERSION_MIN_REQUIRED < 1070)  
CGDirectPaletteRef palette;            /* palette of an 8-bit display */  
#endif  

문제 6
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/QTKit.framework/Headers/QTMovieModernizer.h:156: error: expected identifier or ‘(’ before ‘!’ token

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/QTKit.framework/Headers/QTMovieModernizer.h:162: error: expected a property attribute before ‘atomic’

XCode의 패키지 컨텐트에서 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/QTKit.framework/Versions/A/Headers/QTMovieModernizer.h를 찾으면 156줄과 163줄 근처의
@property (atomic, readonly) NSError *                      error                   AVAILABLE_QTKIT_VERSION_7_7_3_AND_LATER;

@property (atomic, assign) QTMovieModernizerStatus          status                   AVAILABLE_QTKIT_VERSION_7_7_3_AND_LATER;

참고 자료
  • Q4 JNI 메소드 솔루션을 찾을 수 없음
  • Mac에서 AOSP 컴파일과 브러시 과정 중의 각종 구덩이
  • 안드로이드 소스 직접 컴파일하기 (초상세)
  • Mac 10.10 android 4.4.4 for nexus
  • 컴파일

    좋은 웹페이지 즐겨찾기