2011-04-08 2 views
11

Кто-нибудь знает, как включить права суперпользователя при создании Android из источника (AOSP)?Build Android with Superuser

+0

Вы имеете в виду привилегию суперпользователя в оболочке или в приложениях для Android? –

+0

@ m-ricwhat, если я хочу скомпилировать Android с помощью суперпользователей для моих приложений для Android? Является ли это возможным? В основном я хочу, чтобы приложение читало или записывало в/системный каталог. Является ли это возможным? Я знаю, что нужно укоренение. Но чтобы избежать проблем, я подумал, что лучше построить сам андроид. Так как его эталонная плата и мы что-то проверяем на нем – Arjun

ответ

9

Чтобы получить корневой (редактор) оболочки, редактировать system/core/rootdir или init.rc, связанный с устройством (например, device/ti/panda/init.rc для pandaboard) в андроида источников, а также изменить эти строки:

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, вы должны принести и построить:

  1. su-binary (т.е. в external/) и заглушки/удалить system/extras/su пакет.
  2. Superuser (например, в packages/app/)

Вы можете также установить липкий бит /system/xbin/su в су-бинарного/Android.mk. Например, я использовал следующий файл 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

Возможно ли просто вставить Superuser.apk в AOSP? Я хочу добавить права root для APK (предварительно построенный/предустановленный). –

+1

Superuser.apk и SuperSU.apk требуют, чтобы su-бинарный файл был изменен (содержится в zip-файле): http://superuserdownload.com/. Просто встраивания apk будет недостаточно. Чтобы быть конкретным только для одного приложения, прочтите следующее: http://su.chainfire.eu/#how –

+0

su-binary не перечисляет желе. –