在从源代码构建Android之后,我一直在尝试在/out/.../system/xbin/su中包含su二进制文件。我有su二进制文件(来自Chainfire)作为可执行文件,但我似乎无法将它包含在AOSP构建中。
我遇到的所有示例或解决方案都在Android_Source_Root中讨论过以下内容:
system/extras/
中删除su目录并在外部包含su-binary目录(取自ChainsDD)/。system/extras/su/Android.mk
以及要在PRODUCT_PACKAGES中包含su的文件build/target/product/core.mk
。所有这些都在su目录中有su.c,su.h和其他文件,用于构建su包。
我想知道的是当我拥有" su二进制可执行文件时,如何在AOSP构建中包含su"只是不需要包含su.c或任何这些文件?我应该在哪里放置su目录以及Android.mk文件的内容是什么?
请建议并感谢您的时间。
答案 0 :(得分:7)
我设法解决了我提到的问题。以下是我解决问题的两种方法,但我遇到了“问题面临”标题中解释的另一个问题。
*注意:我将su二进制文件放在prebuilts / su
中我修改了device/
目录中的device.mk文件。我在文件中添加了以下内容。
PRODUCT_COPY_FILES += \
prebuilts/su/su:system/xbin
我修改了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)
在将二进制文件复制到system/xbin
目录后,我无法对其进行chmod。我尝试了以下几种方法,但没有产生任何结果。
我在解决方案1 中的行后面添加了以下内容,并且它一直给我chmod ... file cannot be found
的错误。
$(shell chmod 6755 out/<product>/system/xbin/su)
我在include $(BUILD_PREBUILT)
行之前的解决方案2 Android.mk文件中添加了以下内容,但没有更改文件的权限。
#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
文件提出建议吗?谢谢你的时间。
首先更改文件的权限chmod 6755 prebuilts/su/su
。在device/
目录中的device.mk文件中包含以下内容。
PRODUCT_COPY_FILES += \
prebuilts/su/su:system/xbin
只需在include $(BUILD_PREBUILT)
LOCAL_POST_INSTALL_CMD := chmod 6755 $(LOCAL_MODULE_PATH)/$(LOCAL_MODULE)