我正在尝试使用 Orange Pi 4 LTS
对提供的Android 8.1 源 执行相同操作。 按照书中的说明,我将基于 glibc 的根文件系统的交叉编译版本(包含 BusyBox)复制到我的 AOSP 中的新目录:
$ ls -lh ~/builds/RK3399-Android8.1/rootfs-glibc
total 20K
-rw-rw-r-- 1 joe joe 584 Mar 18 12:14 Android.mk
drwxrwxr-x 2 joe joe 4.0K Mar 8 12:25 bin
drwxrwxr-x 2 joe joe 4.0K Mar 8 11:29 lib
lrwxrwxrwx 1 joe joe 11 Mar 8 12:25 linuxrc -> bin/busybox
drwxrwxr-x 2 joe joe 4.0K Mar 8 12:25 sbin
drwxrwxr-x 5 joe joe 4.0K Mar 8 11:30 usr
我创建了一个与书中的文件相匹配的
Android.mk
文件。但它不起作用,所以我尝试并修改为:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := rootfs-glibc
# LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
LOCAL_MODULE_CLASS := EXECUTABLES
# This part is a hack, we're doing "addprefix" because if we don't,
# this dependency will be stripped out by the build system
GLIBC_ROOTFS := $(addprefix $(TARGET_ROOT_OUT)/, rootfs-glibc)
$(GLIBC_ROOTFS):
xxxmkdir -p $(TARGET_ROOT_OUT)
cp -af $(TOPDIR)rootfs-glibc/* $(TARGET_ROOT_OUT)
rm $(TARGET_ROOT_OUT)/Android.mk
# The last command just gets rid of this very .mk since it's copied as is
include $(BUILD_PREBUILT)
我知道 makefile 正在被解析,因为在添加 LOCAL_MODULE_CLASS
之前我收到了错误消息。但是我的 $(GLIBC_ROOTFS)
目标中的规则没有运行——我故意将
mkdir
更改为
xxxmkdir
证实了这一点。
我做了一些更多的研究,了解到了Soong Build System 的存在,它“在 Android 7.0 (Nougat) 中引入以取代 Make”。但我搜索了示例
Android.bp
文件来执行一些与我尝试执行的操作类似的操作,但没有成功。
看来我需要使用android_filesystem 的模块类型,但我还没有找到示例或足够清晰的文档来创建我自己的。
我应该修复我的 Android.mk
Android.bp
文件?我联系了卡里姆·亚格穆尔(Karim Yaghmour),他很友善地回答了我的问题。他向我推荐了他的嵌入式 Android 培训课件中的练习。前往