2011-04-08 9 views
11

¿Alguien sabe cómo incluir privilegios de superusuario al compilar Android desde la fuente (AOSP)?Construya Android con superusuario

+0

¿Quiere decir privilegio de superusuario en el shell o en las aplicaciones de Android? –

+0

@ m-ricwhat si quiero compilar Android con previliges de superusuario para mis aplicaciones de Android? ¿Es posible? Básicamente, quiero una aplicación para leer o escribir en/system directory. ¿Es posible? Sé que necesita rooting. Pero para evitar los problemas, pensé que era mejor construir el propio Android. Dado que es una placa de referencia y estamos probando algo en ella – Arjun

Respuesta

9

Para obtener una shell (ed) raíz, editar system/core/rootdir o la init.rc asociado a su dispositivo (por ejemplo device/ti/panda/init.rc para PandaBoard) en fuentes androide, y cambiar esas líneas:

service console /system/bin/sh 
    class core 
    console 
    disabled 
    user shell 
    group log 

en:

service console /system/bin/sh 
    class core 
    console 
    disabled 
    user root 
    group root 

para incrustar Superuser.apk en AOSP, usted tiene que ir a buscar y construir:

  1. su-binary (p. en external/) y el paquete stub/remove system/extras/su.
  2. Superuser (por ejemplo, en packages/app/)

Usted también puede tener que establecer el bit pegajoso de /system/xbin/su en su-binario/Android.mk. Por ejemplo, utilicé el siguiente archivo MAKE:

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: [email protected] -> /system/xbin/$(SU_CMD)" 
    @mkdir -p $(dir [email protected]) 
    @rm -rf [email protected] 
    @ln -sf /system/xbin/$(SU_CMD) [email protected] 

ALL_DEFAULT_INSTALLED_MODULES += $(SU_BINARY)-post $(SYMLINKS) 

include $(BUILD_EXECUTABLE) 
+0

¿Es posible solo incrustar Superuser.apk en AOSP? Quiero agregar un permiso raíz a una APK (precompilada/preinstalada). –

+1

Superuser.apk y SuperSU.apk requieren que se cambie el su binary (contenido en el archivo zip): http://superuserdownload.com/. Solo incrustar el apk no será suficiente. Para ser específico de una sola aplicación, lea esto: http://su.chainfire.eu/#how –

+0

su-binary no muestra jelly bean. –

Cuestiones relacionadas