我设法解决了我提到的问题。以下是我解决问题的两种方法,但我遇到了“面临的问题”标题中解释的另一个问题。
*注意:我把su二进制文件放在prebuilts/su中
解决方案 1
我修改了device/ 目录下的device.mk 文件。我在文件中添加了以下内容。
PRODUCT_COPY_FILES += \
prebuilts/su/su:system/xbin
解决方案 2
我修改了device/目录下的device.mk文件。我在文件中添加了以下内容。
PRODUCT_PACKAGES += \
su
然后我将以下内容添加并插入到prebuilts/su/su 中的Android.mk 文件中。
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。我尝试了以下几种方法,但没有结果。
-
我在 Solution 1 中的行之后添加了以下内容,它一直给我chmod ... file cannot be found 的错误。
$(shell chmod 6755 out/<product>/system/xbin/su)
-
我在 Solution 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)
只需将以下内容添加到include $(BUILD_PREBUILT)之前的Android.mk文件中
LOCAL_POST_INSTALL_CMD := chmod 6755 $(LOCAL_MODULE_PATH)/$(LOCAL_MODULE)