2011-04-08 13 views
11

Qualcuno sa come includere i privilegi di super utente durante la creazione di Android dalla sorgente (AOSP)?Costruisci Android con Superuser

+0

Intendi privilegio di superutente nella shell o nelle app Android? –

+0

@ m-ricwhat se voglio compilare Android con un utente super previliges per le mie app Android? È possibile? Fondamentalmente voglio un'applicazione per leggere o scrivere nella directory/system. È possibile? So che ha bisogno di fare il tifo. Ma per evitare i problemi ho pensato che fosse meglio costruire l'android stesso. Dal momento che è una scheda di riferimento e stiamo testando qualcosa su di esso – Arjun

risposta

9

Per ottenere una shell di root (a cura di), modificare system/core/rootdir o init.rc associato al dispositivo (ad esempio device/ti/panda/init.rc per PandaBoard) nelle fonti di Android, e cambiare quelle linee:

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

in:

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

per incorporare Superuser.apk in AOSP, si deve prendere e costruire:

  1. su-binary (ad es. in external/) e stub/rimuovere il pacchetto system/extras/su.
  2. Superuser (ad esempio in packages/app/)

Si può anche essere necessario impostare lo sticky bit di /system/xbin/su in su binario/Android.mk. Ad esempio, ho utilizzato il seguente 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: [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

È possibile integrare semplicemente Superuser.apk in AOSP? Voglio aggiungere il permesso di root a un APK (precostruito/preinstallato). –

+1

Superuser.apk e SuperSU.apk richiedono che il su binary sia modificato (contenuto nel file zip): http://superuserdownload.com/. Basta incorporare l'apk non sarà abbastanza. Per essere specifico di una sola app, leggi questo: http://su.chainfire.eu/#how –

+0

su-binary non elenca jelly bean. –

Problemi correlati