aosp 为什么某些目录没有编译_编译aosp模块

本文介绍了如何在不下载完整AOSP源码的情况下,仅编译Nexus 5的bionic模块。通过使用清华镜像源加速下载,并详细列出编译过程中可能遇到的问题及解决方案,包括缺少依赖、文件找不到等错误。
摘要由CSDN通过智能技术生成

想春节在家用Nexus 5的手机编译aosp的模块继续测试玩,但是我不想下载和编译整个系统。

准备——操作系统

下载Ubuntu 14.04.5 x86_64的镜像并安装。

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip

安装OpenJDK 7(Android 6.0使用)

安装OpenJDK 8(暂时用不到)

没有OpenJDK8可下载,直接使用

sudo add-apt-repository ppa:openjdk-r/ppa

sudo apt-get update

sudo apt-get install openjdk-8-jdk

sudo update-alternatives --config java

sudo update-alternatives --config javac

配置git

git config --global user.email "you@example.com"

git config --global user.name "Your Name"

获取源码

用清华的源下载源码会比较方便。

# ANDROID_SOURCE="https://android.googlesource.com"

export ANDROID_SOURCE="https://aosp.tuna.tsinghua.edu.cn"

# 额,墙

export REPO_URL="https://aosp.tuna.tsinghua.edu.cn/android/git-repo"

repo init -u ${ANDROID_SOURCE}/platform/manifest -b android-6.0.1_r77 --no-clone-bundle

下载源码,比如我想测试bionic。

export REPO_SYNC="repo sync --no-clone-bundle"

# 编译用的命令

${REPO_SYNC} build

# device

${REPO_SYNC} device/lge/hammerhead

${REPO_SYNC} frameworks/native

# 工具链

${REPO_SYNC} prebuilts/sdk # build依赖current

${REPO_SYNC} prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8 #llvm host编译需要

${REPO_SYNC} prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9

${REPO_SYNC} prebuilts/clang/linux-x86/host/3.6 # llvm编译需要

${REPO_SYNC} prebuilts/ndk # ndk源码编译需要

${REPO_SYNC} prebuilts/misc

# bionic依赖(LLVM系列)

${REPO_SYNC} external/llvm

${REPO_SYNC} external/compiler-rt

${REPO_SYNC} external/libcxx

${REPO_SYNC} external/libcxxabi

# 虽然可通过去除bionic-benchmarks避免依赖,但是zipalign还是逃不掉

${REPO_SYNC} frameworks/base

# bionic unit test依赖

${REPO_SYNC} system/core

${REPO_SYNC} system/extras

${REPO_SYNC} external/tinyxml2

${REPO_SYNC} external/gtest

${REPO_SYNC} external/jemalloc

${REPO_SYNC} external/elfutils

${REPO_SYNC} external/icu

${REPO_SYNC} external/safe-iop

${REPO_SYNC} external/zopfli

${REPO_SYNC} external/zlib

${REPO_SYNC} external/junit # frameworks/base依赖

${REPO_SYNC} libcore # system/core依赖

${REPO_SYNC} libnativehelper # system/core依赖

${REPO_SYNC} bionic

. ./build/envsetup.sh

lunch aosp_hammerhead-userdebug

cd bionic

mma

遇到问题1

PRODUCT_COPY_FILES device/generic/goldfish/data/etc/apns-conf.xml:system/etc/apns-conf.xml ignored.

find: `bootable/recovery/res-xhdpi': No such file or directory

No private recovery resources for TARGET_DEVICE hammerhead

make: *** No rule to make target `out/target/common/obj/PACKAGING/public_api.txt', needed by `out/target/common/obj/PACKAGING/checkpublicapi-last-timestamp'. Stop.

进入需要编译的目录,选择mma,可以知道原因。一般是缺少某个依赖导致。

遇到问题2

make: *** No rule to make target `out/host/linux-x86/bin/FileCheck', needed by `out/target/product/hammerhead/obj/STATIC_LIBRARIES/bionic-compile-time-tests-g++_intermediates/fortify_compilation_test.o'. Stop.

解决方法:${REPO_SYNC} external/llvm

遇到问题3

external/libcxx/include/__config:23:10: fatal error: 'unistd.h' file not found

#include

^

解决方法:${REPO_SYNC} prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8

遇到问题4

make: *** No rule to make target `out/target/product/hammerhead/obj/SHARED_LIBRARIES/libpagemap_intermediates/export_includes', needed by `out/target/product/hammerhead/obj/EXECUTABLES/bionic-unit-tests_intermediates/import_includes'. Stop.

解决方法:${REPO_SYNC} system/extras

遇到问题5

make: *** No rule to make target `out/target/product/hammerhead/obj/STATIC_LIBRARIES/libtinyxml2_intermediates/export_includes', needed by `out/target/product/hammerhead/obj/EXECUTABLES/bionic-unit-tests_intermediates/import_includes'. Stop.

解决方法:${REPO_SYNC} external/tinyxml2

遇到问题6

make: *** No rule to make target `out/target/product/hammerhead/obj/STATIC_LIBRARIES/liblog_intermediates/export_includes', needed by `out/target/product/hammerhead/obj/EXECUTABLES/bionic-unit-tests_intermediates/import_includes'. Stop.

解决方法:${REPO_SYNC} system/core

遇到问题7

make: *** No rule to make target `out/target/product/hammerhead/obj/STATIC_LIBRARIES/libgtest_intermediates/export_includes', needed by `out/target/product/hammerhead/obj/EXECUTABLES/bionic-unit-tests_intermediates/import_includes'. Stop.

解决方法:${REPO_SYNC} external/gtest

遇到问题8

/bin/bash: prebuilts/misc/linux-x86/relocation_packer/relocation_packer: No such file or directory

make: *** [out/target/product/hammerhead/obj/SHARED_LIBRARIES/libdl_intermediates/PACKED/libdl.so] Error 127

解决方法:${REPO_SYNC} prebuilts/misc

遇到问题9

make: *** No rule to make target `out/target/product/hammerhead/obj/STATIC_LIBRARIES/libjemalloc_intermediates/export_includes', needed by `out/target/product/hammerhead/obj/SHARED_LIBRARIES/libc_intermediates/import_includes'. Stop.

解决方法:${REPO_SYNC} external/jemalloc

遇到问题10

make: *** No rule to make target `out/host/linux-x86/obj/STATIC_LIBRARIES/libelf_intermediates/export_includes', needed by `out/host/linux-x86/obj/STATIC_LIBRARIES/lib_relocation_packer_intermediates/import_includes'. Stop.

解决方法:${REPO_SYNC} external/elfutils

遇到问题11

make: *** No rule to make target `out/host/linux-x86/obj/STATIC_LIBRARIES/libandroidfw_intermediates/export_includes', needed by `out/host/linux-x86/obj/EXECUTABLES/zipalign_intermediates/import_includes'. Stop.

解决方法:${REPO_SYNC} frameworks/base

遇到问题12

make: *** No rule to make target `external/junit/Common.mk'. Stop.

解决方法:${REPO_SYNC} external/junit

遇到问题13

make: *** No rule to make target `libcore/Docs.mk'. Stop.

解决方法:${REPO_SYNC} libcore

遇到问题14

make: *** No rule to make target `external/icu/icu4j/adjust_icudt_path.mk'. Stop.

解决方法:${REPO_SYNC} external/icu

遇到问题15

host C++: libutils <= system/core/libutils/CallStack.cpp

system/core/libutils/CallStack.cpp:23:10: fatal error: 'UniquePtr.h' file not found

#include

^

解决方法:${REPO_SYNC} libnativehelper

遇到问题16

system/core/libutils/VectorImpl.cpp:24:10: fatal error: 'safe_iop.h' file not found

#include

^

解决方法:${REPO_SYNC} external/safe-iop

遇到问题17

make: *** No rule to make target `out/host/linux-x86/obj/STATIC_LIBRARIES/libzopfli_intermediates/export_includes', needed by `out/host/linux-x86/obj/EXECUTABLES/zipalign_intermediates/import_includes'. Stop.

解决方法: ${REPO_SYNC} external/zopfli

遇到问题18

make: *** No rule to make target `out/target/product/hammerhead/obj/STATIC_LIBRARIES/libz_intermediates/export_includes', needed by `out/target/product/hammerhead/obj/EXECUTABLES/linker_intermediates/import_includes'. Stop.

解决方法: ${REPO_SYNC} external/zlib

OK~

Nexus 5

TWRP

SuperSU

root方法:su

remount方法:

mount -o remount,rw /system

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值