gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:26:13 43 4
gpt4 key购买 nike

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

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

  1. system/extras/ 中删除 su 目录,并将 su 二进制目录(取自 ChainsDD)包含在 external/中。
  2. 修改文件 system/extras/su/Android.mk 为“LOCAL_MODULE_TAGS := optional”和文件 build/target/product/core。 mk 将 su 包含在 PRODUCT_PACKAGES 中。

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

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

请多多指教,感谢您的宝贵时间。

最佳答案

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

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

方案一

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

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

解决方案2

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

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 后,我无法对其进行 chmod目录。我尝试了以下几种方法,但没有结果。

  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/ 的 device.mk 文件中包含以下内容目录。

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)

关于Android:在 AOSP 构建中包含 su 二进制可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25419795/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com