Android:在 AOSP 构建中包含 su 二进制可执行文件

2024-01-31

从源代码构建 Android 后,我一直试图将 su 二进制文件包含在 /out/.../system/xbin/su 中。我有 su 二进制文件(来自 Chainfire)作为可执行文件,但我似乎无法将其包含在 AOSP 构建中。

我遇到的所有示例或解决方案都在 Android_Source_Root 中讨论了以下内容:

  1. 从中删除 su 目录system/extras/并将 su-binary 目录(取自 ChainsDD)包含在 external/ 中。
  2. 修改文件system/extras/su/Android.mk with "LOCAL_MODULE_TAGS := 可选“和文件build/target/product/core.mk将 su 包含在 PRODUCT_PACKAGES 中。

所有这些文件的 su 目录中都有 su.c、su.h 和其他文件,用于构建 su 包。

我想知道的是,当我仅拥有“su 二进制可执行文件”而不需要包含 su.c 或任何这些文件时,如何在 AOSP 构建中包含 su ? su目录应该放在哪里,Android.mk文件的内容是什么?

请提供建议并感谢您的宝贵时间。


我设法解决了我提到的问题。以下是我解决该问题的两种方法,但我遇到了“面临的问题”标题中解释的另一个问题。

*注意:我将su二进制文件放在prebuilts/su中

解决方案1

我修改了device.mk文件中的device/目录。我将以下内容添加到文件中。

PRODUCT_COPY_FILES += \
    prebuilts/su/su:system/xbin

解决方案2

我修改了device.mk文件中的device/目录。我将以下内容添加到文件中。

PRODUCT_PACKAGES += \
    su

然后我添加并插入以下内容到Android.mk文件输入prebuilts/su/su.

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := su
LOCAL_SRC_FILES := $(LOCAL_MODULE)
LOCAL_MODULE_CLASS := EXECUTABLES

LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
LOCAL_UNSTRIPPED_PATH := $(LOCAL_MODULE_PATH)

include $(BUILD_PREBUILT)

面临的问题

我无法在将 su 二进制文件复制到system/xbin目录。我尝试了以下几种方法,但没有结果。

  1. 我在以下行之后添加了以下内容解决方案1它一直给我错误chmod ... file cannot be found.

        $(shell chmod 6755 out/<product>/system/xbin/su)
    
  2. 我在中添加了以下内容解决方案2之前的Android.mk文件include $(BUILD_PREBUILT)行,但没有更改文件的权限。

    #Trial 1.
    SU_BINARY := $(LOCAL_MODULE_PATH)/su
    $(SU_BINARY)-post: su
        $(shell chmod 6755 $(LOCAL_MODULE_PATH)/su)
    
    #Trial 2 without "-post".
    SU_BINARY := $(LOCAL_MODULE_PATH)/su
    $(SU_BINARY): su
        $(shell chmod 6755 $(LOCAL_MODULE_PATH)/su)
    
    #Trial 3.
    SU_BINARY := $(LOCAL_MODULE_PATH)/su
    $(SU_BINARY): su
        chmod 6755 $(LOCAL_MODULE_PATH)/su
    

有人可以建议如何chmod文件?感谢您的时间。

已解决的问题

解决方案 1(针对问题 1)

先更改文件的权限chmod 6755 prebuilts/su/su。在 device.mk 文件中包含以下内容device/目录。

PRODUCT_COPY_FILES += \
    prebuilts/su/su:system/xbin

解决方案 2(针对问题 2)

只需将以下内容添加到之前的Android.mk文件中即可include $(BUILD_PREBUILT)

LOCAL_POST_INSTALL_CMD := chmod 6755 $(LOCAL_MODULE_PATH)/$(LOCAL_MODULE)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:在 AOSP 构建中包含 su 二进制可执行文件 的相关文章

随机推荐