Ubunut16.04编译Android8.1.0过程以及在编译过程中所遇到的问题

Ubunut16.04编译Android8.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=<path-to-your-out-directory>

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 "you@example.com"

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

在源码下载过程中遇到的一个问题:
在Android源码拉取过程中,缺少了一个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: static_assert failed “Size mismatch.”

解决方式
Edit frameworks/native/cmds/installd/installd_deps.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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值