Android->root:add system root function
This commit is contained in:
@ -112,6 +112,7 @@ on boot
|
||||
#add for usb otg by huangjc
|
||||
chown system system /sys/bus/platform/drivers/usb20_otg/force_usb_mode
|
||||
chmod 0666 /sys/bus/platform/drivers/usb20_otg/force_usb_mode
|
||||
|
||||
|
||||
# cpu min freq must change to 126M when boot completed
|
||||
on property:sys.boot_completed=1
|
||||
@ -119,6 +120,9 @@ on property:sys.boot_completed=1
|
||||
setprop persist.sys.first_booting false
|
||||
start mode_switch
|
||||
|
||||
on boot
|
||||
start vm_daemon
|
||||
|
||||
# for telephony function
|
||||
on property:ro.boot.baseband=N/A
|
||||
setprop ro.radio.noril false
|
||||
@ -185,6 +189,19 @@ service clear_test /system/bin/systemconfig clear_test
|
||||
on property:app.firefly.config=1
|
||||
start clear_test
|
||||
|
||||
service daemonsu /system/xbin/vm --daemon
|
||||
class main
|
||||
service su_process /system/xbin/su --daemon
|
||||
seclabel u:r:su:s0
|
||||
oneshot
|
||||
|
||||
on property:persist.sys.root_access=1
|
||||
start su_process
|
||||
|
||||
on property:persist.sys.root_access=0
|
||||
stop su_process
|
||||
|
||||
service vm_daemon /system/xbin/vm --daemon
|
||||
seclabel u:r:su:s0
|
||||
oneshot
|
||||
|
||||
|
||||
|
||||
|
||||
@ -29,6 +29,14 @@ PRODUCT_PACKAGES += \
|
||||
#TARGET_USERIMAGES_USE_F2FS := true
|
||||
#endif
|
||||
|
||||
#add bin su
|
||||
PRODUCT_COPY_FILES += \
|
||||
$(LOCAL_PATH)/su:system/xbin/su
|
||||
|
||||
#add bin su
|
||||
PRODUCT_COPY_FILES += \
|
||||
$(LOCAL_PATH)/xsu:system/xbin/xsu
|
||||
|
||||
ifeq ($(strip $(TARGET_BOARD_PLATFORM_PRODUCT)), box)
|
||||
ifeq ($(strip $(TARGET_PRODUCT)), rk3288_AIO_box)
|
||||
BOARD_SEPOLICY_DIRS += \
|
||||
|
||||
BIN
device/rockchip/rk3288/su
Normal file
BIN
device/rockchip/rk3288/su
Normal file
Binary file not shown.
BIN
device/rockchip/rk3288/xsu
Normal file
BIN
device/rockchip/rk3288/xsu
Normal file
Binary file not shown.
@ -2268,7 +2268,6 @@
|
||||
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
|
||||
</receiver>
|
||||
<receiver android:name="ScheduleOnOffReceiver" android:process=":remote">
|
||||
<intent-filter>
|
||||
|
||||
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<!-- Setting checkbox title for root access -->
|
||||
<string name="root_access">Root 授权</string>
|
||||
<string name="root_access_warning_title">允许 Root 授权请求?</string>
|
||||
<string name="root_access_warning_message">允许应用得到 Root 权限是有风险的,可能会影响您的系统安全!</string>
|
||||
</resources>
|
||||
@ -1444,6 +1444,7 @@
|
||||
<string name="keep_screen_on" msgid="1146389631208760344">"不锁定屏幕"</string>
|
||||
<string name="enable_log_save">启用日志保存</string>
|
||||
<string name="enable_net_adb">启用网络ADB</string>
|
||||
<string name="enable_su_root">启用root权限</string>
|
||||
<string name="keep_screen_on_summary" msgid="2173114350754293009">"充电时屏幕不会休眠"</string>
|
||||
<string name="bt_hci_snoop_log" msgid="3340699311158865670">"启用蓝牙 HCI 信息收集日志"</string>
|
||||
<string name="bt_hci_snoop_log_summary" msgid="730247028210113851">"捕获单个文件中的所有蓝牙 HCI 包"</string>
|
||||
|
||||
12
packages/apps/Settings/res/values/custom_strings.xml
Normal file
12
packages/apps/Settings/res/values/custom_strings.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
|
||||
|
||||
<!-- Setting checkbox title for root access -->
|
||||
<string name="root_access">Root access</string>
|
||||
<string name="root_access_warning_title">Allow root access?</string>
|
||||
<string name="root_access_warning_message">Allowing apps to request root access is very dangerous and could compromise the security of your system!</string>
|
||||
|
||||
|
||||
</resources>
|
||||
@ -3412,6 +3412,7 @@
|
||||
<string name="keep_screen_on">Stay awake</string>
|
||||
<string name="enable_log_save">Enable logging to save</string>
|
||||
<string name="enable_net_adb">Enable Net ADB</string>
|
||||
<string name="enable_su_root">Enable ROOT </string>
|
||||
<!-- setting Checkbox summary whether to keep the screen on when plugged in -->
|
||||
<string name="keep_screen_on_summary">Screen will never sleep while charging</string>
|
||||
<!-- Setting Checkbox title whether to enable bluetooth HCI snoop log -->
|
||||
|
||||
@ -41,6 +41,11 @@
|
||||
android:title="@string/enable_net_adb"
|
||||
/>
|
||||
|
||||
<SwitchPreference
|
||||
android:key="enable_su_root"
|
||||
android:title="@string/enable_su_root"
|
||||
/>
|
||||
|
||||
<SwitchPreference
|
||||
android:key="keep_screen_on"
|
||||
android:title="@string/keep_screen_on"
|
||||
|
||||
@ -96,6 +96,8 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
|
||||
private static final String KEEP_SCREEN_ON = "keep_screen_on";
|
||||
private static final String ENABLE_LOG_SAVE = "enable_log_save";
|
||||
private static final String ENABLE_NET_ADB = "enable_net_adb";
|
||||
private static final String ENABLE_SU_ROOT = "enable_su_root";
|
||||
private static final String ROOT_ACCESS_PROPERTY = "persist.sys.root_access";
|
||||
private static final String BT_HCI_SNOOP_LOG = "bt_hci_snoop_log";
|
||||
private static final String ENABLE_OEM_UNLOCK = "oem_unlock_enable";
|
||||
private static final String ALLOW_MOCK_LOCATION = "allow_mock_location";
|
||||
@ -193,6 +195,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
|
||||
private SwitchPreference mKeepScreenOn;
|
||||
private SwitchPreference mEnableLogSave;
|
||||
private SwitchPreference mEnableNetAdb;
|
||||
private SwitchPreference mEnableSuRoot;
|
||||
private SwitchPreference mBtHciSnoopLog;
|
||||
private SwitchPreference mEnableOemUnlock;
|
||||
private SwitchPreference mAllowMockLocation;
|
||||
@ -251,11 +254,11 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
|
||||
private boolean mDialogClicked;
|
||||
private Dialog mEnableDialog;
|
||||
private Dialog mAdbDialog;
|
||||
|
||||
private Object mSelectedRootValue;
|
||||
private Dialog mAdbKeysDialog;
|
||||
private boolean mUnavailable;
|
||||
private boolean mHideBootCheck;
|
||||
|
||||
private Dialog mRootDialog;
|
||||
@Override
|
||||
public void onCreate(Bundle icicle) {
|
||||
super.onCreate(icicle);
|
||||
@ -311,6 +314,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
|
||||
mKeepScreenOn = findAndInitSwitchPref(KEEP_SCREEN_ON);
|
||||
mEnableLogSave = findAndInitSwitchPref(ENABLE_LOG_SAVE);
|
||||
mEnableNetAdb = findAndInitSwitchPref(ENABLE_NET_ADB);
|
||||
mEnableSuRoot = findAndInitSwitchPref(ENABLE_SU_ROOT);
|
||||
mBtHciSnoopLog = findAndInitSwitchPref(BT_HCI_SNOOP_LOG);
|
||||
mEnableOemUnlock = findAndInitSwitchPref(ENABLE_OEM_UNLOCK);
|
||||
if (!showEnableOemUnlockPreference()) {
|
||||
@ -571,6 +575,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
|
||||
updateUseNuplayerOptions();
|
||||
updateUSBAudioOptions();
|
||||
updateBootCheckOptions();
|
||||
updateRootAccessOptions();
|
||||
}
|
||||
|
||||
private void resetDangerousOptions() {
|
||||
@ -630,6 +635,22 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
|
||||
}
|
||||
}
|
||||
|
||||
private void updateRootAccessOptions() {
|
||||
String value = SystemProperties.get(ROOT_ACCESS_PROPERTY, "0");
|
||||
mEnableSuRoot.setChecked(!"0".equals(value));
|
||||
}
|
||||
|
||||
private void writeRootAccessOptions(Object newValue) {
|
||||
SystemProperties.set(ROOT_ACCESS_PROPERTY, newValue.toString());
|
||||
updateRootAccessOptions();
|
||||
}
|
||||
|
||||
private void resetRootAccessOptions() {
|
||||
String oldValue = SystemProperties.get(ROOT_ACCESS_PROPERTY, "0");
|
||||
SystemProperties.set(ROOT_ACCESS_PROPERTY, "0");
|
||||
updateRootAccessOptions();
|
||||
}
|
||||
|
||||
private void writeBtHciSnoopLogOptions() {
|
||||
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
|
||||
adapter.configHciSnoopLog(mBtHciSnoopLog.isChecked());
|
||||
@ -1436,13 +1457,37 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
|
||||
SystemProperties.set("app.logsave.start","0");
|
||||
}
|
||||
} else if(preference == mEnableNetAdb)
|
||||
{
|
||||
{
|
||||
if(mEnableNetAdb.isChecked())
|
||||
{
|
||||
SystemProperties.set("netadb.status","true");
|
||||
}else{
|
||||
SystemProperties.set("netadb.status","false");
|
||||
}
|
||||
}else if(preference == mEnableSuRoot)
|
||||
{
|
||||
String newValue = mEnableSuRoot.isChecked()?"1":"0";
|
||||
if ("0".equals(SystemProperties.get(ROOT_ACCESS_PROPERTY, "0"))
|
||||
&& !"0".equals(newValue))
|
||||
{
|
||||
mSelectedRootValue = newValue;
|
||||
mDialogClicked = false;
|
||||
if (mRootDialog != null)
|
||||
{
|
||||
dismissDialogs();
|
||||
}
|
||||
mRootDialog = new AlertDialog.Builder(getActivity())
|
||||
.setMessage(getResources().getString(R.string.root_access_warning_message))
|
||||
.setTitle(R.string.root_access_warning_title)
|
||||
.setPositiveButton(android.R.string.yes, this)
|
||||
.setNegativeButton(android.R.string.no, this).show();
|
||||
mRootDialog.setOnDismissListener(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
writeRootAccessOptions(newValue);
|
||||
}
|
||||
return true;
|
||||
}else if (preference == mBtHciSnoopLog) {
|
||||
writeBtHciSnoopLogOptions();
|
||||
} else if (preference == mEnableOemUnlock) {
|
||||
@ -1580,6 +1625,10 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
|
||||
mEnableDialog.dismiss();
|
||||
mEnableDialog = null;
|
||||
}
|
||||
if (mRootDialog != null) {
|
||||
mRootDialog.dismiss();
|
||||
mRootDialog = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
@ -1616,6 +1665,10 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
|
||||
// Reset the toggle
|
||||
mSwitchBar.setChecked(false);
|
||||
}
|
||||
} else if (dialog == mRootDialog) {
|
||||
if (which == DialogInterface.BUTTON_POSITIVE) {
|
||||
writeRootAccessOptions(mSelectedRootValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1631,7 +1684,10 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
|
||||
mSwitchBar.setChecked(false);
|
||||
}
|
||||
mEnableDialog = null;
|
||||
}
|
||||
}else if (dialog == mRootDialog) {
|
||||
updateRootAccessOptions();
|
||||
mRootDialog = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -245,7 +245,8 @@ static const struct fs_path_config android_files[] = {
|
||||
|
||||
/* the following five files are INTENTIONALLY set-uid, but they
|
||||
* are NOT included on user builds. */
|
||||
{ 04750, AID_ROOT, AID_SHELL, 0, "system/xbin/su" },
|
||||
{ 06755, AID_ROOT, AID_ROOT, 0, "system/xbin/su" },
|
||||
{ 06755, AID_ROOT, AID_ROOT, 0, "system/xbin/xsu" },
|
||||
{ 06755, AID_ROOT, AID_ROOT, 0, "system/xbin/vm" },
|
||||
{ 06755, AID_ROOT, AID_ROOT, 0, "system/xbin/librank" },
|
||||
{ 06755, AID_ROOT, AID_ROOT, 0, "system/xbin/procrank" },
|
||||
|
||||
@ -156,6 +156,11 @@ static int check_perms(const char *name, char *sctx)
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(strcmp("persist.sys.root_access",name)==0)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(!strncmp(name, "ro.", 3))
|
||||
name +=3;
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@ include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_SRC_FILES:= su.c
|
||||
|
||||
LOCAL_MODULE:= su
|
||||
LOCAL_MODULE:= xsu
|
||||
|
||||
LOCAL_FORCE_STATIC_EXECUTABLE := true
|
||||
|
||||
|
||||
BIN
vendor/rockchip/common/apps/DeviceTest/lib/vm
vendored
Normal file → Executable file
BIN
vendor/rockchip/common/apps/DeviceTest/lib/vm
vendored
Normal file → Executable file
Binary file not shown.
Reference in New Issue
Block a user