Как включить util-linux в AOSP? - PullRequest
0 голосов
/ 05 ноября 2019

Как включить util-linux из здесь в AOSP? Куда мне добавить эту папку util-linux в AOSP, чтобы я мог собрать AOSP, и эти утилиты можно добавить в /system/bin/ или /system/xbin/? И есть ли какие-то конкретные Makefile или Android.mk, которые мне нужны для компиляции с Android-сборкой?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

Я добавил приложение из пакета util-linux в AOSP.

Вот как я это сделал. Я добавил util-linux (2,34) из https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.34/util-linux-2.34.tar.gz в external папки AOSP.

Я просто хотел добавить chrt из util-linux. Поэтому я запускаю обычную команду make в util-linux, чтобы посмотреть, какие файлы скомпилированы для chrt. Я сделал заметку и создал Android.mk соответственно. Я уверен, что есть лучший способ сделать это иерархически: сначала создать библиотеку, а затем сделать исполняемый файл chrt. Однако это тоже работает.

Я добавил следующее Android.mk в external\util-linux\. Android.mk выглядит следующим образом:

 LOCAL_PATH := $(call my-dir)

 include $(CLEAR_VARS)
 LOCAL_MODULE := sohamchrt

 LOCAL_SRC_FILES := schedutils/chrt.c lib/blkdev.c lib/canonicalize.c \
     lib/crc32.c lib/crc32c.c lib/idcache.c lib/fileutils.c \
     lib/ismounted.c lib/color-names.c lib/mangle.c lib/match.c lib/mbsalign.c \
     lib/mbsedit.c lib/md5.c lib/pager.c lib/parse-date.c lib/pwdutils.c lib/randutils.c \
     lib/setproctitle.c lib/strutils.c lib/timeutils.c lib/ttyutils.c lib/exec_shell.c \
     lib/strv.c lib/sha1.c lib/signames.c lib/linux_version.c lib/loopdev.c \
     lib/plymouth-ctrl.c lib/cpuset.c lib/path.c lib/procutils.c lib/sysfs.c

 LOCAL_CFLAGS = -DHAVE_NANOSLEEP -include config.h \
                -isystem bionic/libc/upstream-openbsd/android/include

 LOCAL_C_INCLUDES := $(LOCAL_PATH)/include

 include $(BUILD_EXECUTABLE)

Теперь, когда я запускаю m -j8 iso_img, Android пытается скомпилировать sohamchrt. Я назвал пакет sohamchrt, потому что chrt уже предоставлен toybox, который имеет ограничения.

Проблема в том, что util-linux не полностью совместим с bionic. Итак, мне нужно было внести некоторые изменения в некоторые файлы .c и .h, такие как fileutils.c, include/c.h и т. Д.

После успешной компиляции двоичный файл sohamchrt появляется в /system/bin, когда работает Android, иэто работает без проблем.

Это также руководство о том, как добавить исходный файл C для исполняемого двоичного файла пользовательского пространства в AOSP.

0 голосов
/ 05 ноября 2019

Всегда стоит проверить, существует ли библиотека, которую вы хотите добавить, на https://android.googlesource.com/. В вашем случае, к сожалению, нет.

Поскольку util-linux не поставляется с Android.bp. Вам нужно понять, как создается util-linux и как Soong работает для создания пользовательского Android.bp для интеграции. Правильная папка для размещения будет external/util-linux/.

Может быть, вы захотите использовать ярлык и просто добавить util-linux в качестве предварительно скомпилированных двоичных файлов. Это уменьшит усилия.

Пожалуйста, сначала проверьте вопросы лицензирования.

...