使用超级用户构建 Android [英] Build Android with Superuser
问题描述
有谁知道在从源代码 (AOSP) 构建 android 时如何包含超级用户权限?
Does anyone know how to include super-user privileges when building android from source (AOSP)?
推荐答案
要获得 root(ed) shell,请编辑 system/core/rootdir
或与您的设备关联的 init.rc(例如device/ti/panda/init.rc
for pandaboard) 在 android 源中,并更改这些行:
To get a root(ed) shell, edit system/core/rootdir
or the init.rc associated to your device (e.g. device/ti/panda/init.rc
for pandaboard) in android sources, and change those lines:
service console /system/bin/sh
class core
console
disabled
user shell
group log
进入:
service console /system/bin/sh
class core
console
disabled
user root
group root
要将 Superuser.apk 嵌入 AOSP,您必须获取并构建:
To embed Superuser.apk in AOSP, you have to fetch and build:
- su-binary (e.g. in
external/
) and stub/removesystem/extras/su
package. - Superuser (e.g. in
packages/app/
)
您可能还需要在 su-binary/Android.mk 中设置 /system/xbin/su
的粘性位.例如,我使用了以下 makefile:
You may also have to set the sticky bit of /system/xbin/su
in su-binary/Android.mk. For instance, I used following makefile:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := su
LOCAL_SRC_FILES := su.c db.c activity.cpp
SU_SHARED_LIBRARIES := liblog libsqlite
ifeq ($(PLATFORM_SDK_VERSION),4)
LOCAL_CFLAGS += -DSU_LEGACY_BUILD
SU_SHARED_LIBRARIES += libandroid_runtime
else
SU_SHARED_LIBRARIES += libcutils libbinder libutils
LOCAL_MODULE_TAGS := eng
endif
LOCAL_C_INCLUDES += external/sqlite/dist
LOCAL_SHARED_LIBRARIES := $(SU_SHARED_LIBRARIES)
LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
SU_INSTALL_DIR := $(TARGET_OUT)/xbin
SU_BINARY := $(SU_INSTALL_DIR)/su
# taken from busybox-android
$(SU_BINARY)-post: su
@echo "Setting SUID/GUID to su-binary..."
chmod ug+s $(TARGET_OUT_OPTIONAL_EXECUTABLES)/su
SU_CMD := su
SYMLINKS := $(addprefix $(TARGET_OUT_EXECUTABLES)/,$(SU_CMD))
$(SYMLINKS): $(LOCAL_INSTALLED_MODULE) $(SU_BINARY)-post $(LOCAL_PATH)/Android.mk
@echo "Symlink: $@ -> /system/xbin/$(SU_CMD)"
@mkdir -p $(dir $@)
@rm -rf $@
@ln -sf /system/xbin/$(SU_CMD) $@
ALL_DEFAULT_INSTALLED_MODULES += $(SU_BINARY)-post $(SYMLINKS)
include $(BUILD_EXECUTABLE)
这篇关于使用超级用户构建 Android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!