Ubunut16.04 컴파일 안드로이드8.1.0 프로세스 및 컴파일 과정에서 발생한 문제

Ubunut16.04 컴파일 안드로이드8.1.0
1. JDK 설치
sudo apt-get update
sudo apt-get install openjdk-8-jdk

2. 출력 디렉토리 설정
매번 컴파일된 출력은 해당 소스 코드 트리의 your-out-directory 하위 디렉터리에 저장됩니다.이 설정을 수행하려면 OUT 내보내기DIR_COMMON_BASE 변수는 출력 디렉토리가 저장될 위치를 가리킵니다.
export OUT_DIR_COMMON_BASE=

3. Repo 설치
홈 디렉토리에 bin/디렉토리가 있고 해당 디렉토리가 경로에 포함되어 있는지 확인합니다.
mkdir ~/bin
PATH=~/bin:$PATH

Repo 도구를 다운로드하여 다음 작업을 수행할 수 있는지 확인합니다.
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

4. Repo 클라이언트 초기화
작업 파일을 저장할 빈 디렉터리를 만듭니다.
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY

실제 이름과 이메일 주소를 사용하여 Git를 구성합니다.
git config --global user.name "Your Name"
git config --global user.email "[email protected]"

5. Android 소스 코드 트리 다운로드
다음 명령을 통해 android-8.1.0 다운로드r61 코드
repo init -u https://android.googlesource.com/platform/manifest -b  android-8.1.0_r61
repo sync -c --no-tags

원본 다운로드 과정에서 발생한 문제: 안드로이드 원본 인출 과정에서libnativehelper 파일 디렉터리가 부족하여 수동으로 홈페이지에서 부족한 파일 홈페이지를 가져와야 합니다.https://android.googlesource.com/platform/libnativehelper/+/refs/tags/android-8.1.0_r61
6. 코드 컴파일링:
      patch

device/generic/car$ git df vendorsetup.sh
diff --git a/vendorsetup.sh b/vendorsetup.sh
index 1bec9aa..4e87161 100644
--- a/vendorsetup.sh
+++ b/vendorsetup.sh
@@ -20,7 +20,7 @@
 # In particular, you can add lunch options with the add_lunch_combo
 # function: add_lunch_combo generic-eng
 
-add_lunch_combo aosp_car_emu_arm-userdebug
-add_lunch_combo aosp_car_emu_arm64-userdebug
-add_lunch_combo aosp_car_emu_x86-userdebug
-add_lunch_combo aosp_car_emu_x86_64-userdebug
+add_lunch_combo aosp_car_arm-userdebug
+add_lunch_combo aosp_car_arm64-userdebug
+add_lunch_combo aosp_car_x86-userdebug
+add_lunch_combo aosp_car_x86_64-userdebug

컴파일 명령:
source build/envsetup.sh
lunch aosp_car_x86_64-userdebug
make | tee mm.log

컴파일 중 발생한 오류
오류 보고: Android build error: ro.build.fingerprint cannot exceed 91 bytes
해결 방법: 1.Edit build/tools/post_process_props.py. Change lines as follows:
PROP_NAME_MAX = 31
# PROP_VALUE_MAX = 91
PROP_VALUE_MAX = 128

2.Edit bionic/libc/include/sys/system_properties.h. Change lines as follows:
#define PROP_NAME_MAX   32
// #define PROP_VALUE_MAX  92
#define PROP_VALUE_MAX  128

3.make clean
make clean

전재:https://stackoverflow.com/questions/28776970/android-build-error-ro-build-fingerprint-cannot-exceed-91-bytes
오류 보고:error:staticassert failed “Size mismatch.”
해결 방법: Edit frameworks/native/cmds/installd/installddeps.h. Change lines as follows:
// constexpr size_t kPropertyValueMax = 92u;
constexpr size_t kPropertyValueMax = 128u;

전재:http://www.th7.cn/Program/Android/201701/1088115.shtml
오류 보고: Out of memory error
해결 방법:
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"

./prebuilts/sdk/tools/jack-admin kill-server

./prebuilts/sdk/tools/jack-admin start-server

전재:https://blog.csdn.net/badousuan/article/details/83035492

좋은 웹페이지 즐겨찾기