您的位置:首页 > 娱乐 > 八卦 > Android12 禁用adb

Android12 禁用adb

2024/10/5 22:21:14 来源:https://blog.csdn.net/wxd_csdn_2016/article/details/139989216  浏览:    关键词:Android12 禁用adb

这种做法没有删除任何adb相关的东西,只是设置persist.sys.usb.config中的adb相关属性时添加宏控制。
userdebug版本一样可以禁用

添加宏开关
  • device/mediatek/mt6761/BoardConfig.mk
# for adb
ADB_ENABLE:=false
添加ro.adb.enabled属性
  • build/make/core/main.mk
# for adb
ifeq (true,$(strip $(ADB_ENABLE)))ADDITIONAL_SYSTEM_PROPERTIES += ro.adb.enabled=1
elseADDITIONAL_SYSTEM_PROPERTIES += ro.adb.enabled=0
endif
根据ro.adb.enabled设置persist.sys.usb.config
  • system/core/init/property_service.cpp
static uint32_t PropertySet(const std::string& name, const std::string& value, std::string* error) {// for adb if (name == "persist.sys.usb.config" /*|| name == "sys.usb.config"*/){LOG(INFO) << " name= " << name << " value= " << value;std::string adb_value = GetProperty("ro.adb.enabled", "0");if (adb_value == "0"){if (value.find("adb") != std::string::npos){LOG(ERROR) << " ro.adb.enabled is 0, adb is not allowed ";return PROP_SUCCESS;}}}// endsize_t valuelen = value.size();if (!IsLegalPropertyName(name)) {*error = "Illegal property name";return PROP_ERROR_INVALID_NAME;}if (auto result = IsLegalPropertyValue(name, value); !result.ok()) {*error = result.error().message();return PROP_ERROR_INVALID_VALUE;}
#ifdef MTK_LOGSnapshotPropertyFlowTraceLog("_spf");
#endifprop_info* pi = (prop_info*) __system_property_find(name.c_str());if (pi != nullptr) {// ro.* properties are actually "write-once".if (StartsWith(name, "ro.")) {*error = "Read-only property was already set";return PROP_ERROR_READ_ONLY_PROPERTY;}#ifdef MTK_LOGSnapshotPropertyFlowTraceLog("_spu");
#endif__system_property_update(pi, value.c_str(), valuelen);} else {
#ifdef MTK_LOGSnapshotPropertyFlowTraceLog("_spa");
#endifint rc = __system_property_add(name.c_str(), name.size(), value.c_str(), valuelen);if (rc < 0) {*error = "__system_property_add failed";return PROP_ERROR_SET_FAILED;}}// Don't write properties to disk until after we have read all default// properties to prevent them from being overwritten by default values.if (persistent_properties_loaded && StartsWith(name, "persist.")) {WritePersistentProperty(name, value);}// If init hasn't started its main loop, then it won't be handling property changed messages// anyway, so there's no need to try to send them.auto lock = std::lock_guard{accept_messages_lock};if (accept_messages) {
#ifdef MTK_LOGSnapshotPropertyFlowTraceLog("SPC");
#endifPropertyChanged(name, value);}#ifdef MTK_LOGif (GetMTKLOGDISABLERATELIMIT()) // MTK add logPropSetLog(name, value, error);
#endifreturn PROP_SUCCESS;
}
相关UI及开发者模式控制
  • frameworks/base/core/java/android/os/Build.java
 /** True if Adb is enabled*/public static final boolean IS_ADB_ENABLED =SystemProperties.getInt("ro.adb.enabled", 0) == 1;  
  • vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/SettingsActivity.java
 // True if Adb is enabledfinal boolean showDev = Build.IS_ADB_ENABLED/*DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(this)&& !Utils.isMonkeyRunning()*/;somethingChanged = setTileEnabled(changedList, new ComponentName(packageName,Settings.DevelopmentSettingsDashboardActivity.class.getName()),showDev, isAdmin)|| somethingChanged;
  • vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsController.java
 @Overridepublic boolean isAvailable() {// for adb// True if Adb is enabledreturn Build.IS_ADB_ENABLED/*!Utils.isMonkeyRunning()*/;}
  • vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
 @Overridepublic boolean handlePreferenceTreeClick(Preference preference) {// for adbif (preference.getKey().equals("build_number")){if (!Build.IS_ADB_ENABLED){preference.setSelectable(false);}}// endif (!TextUtils.equals(preference.getKey(), getPreferenceKey())) {return false;}...}

修改完后,连接USB不会显示功能选择列表,无法连点调出开发者模式。

测试

编译完成后,build.prop中显示

ro.adb.enabled=0
... 
# Auto-added by post_process_props.py
persist.sys.usb.config=adb
# end of file

命令窗口显示

C:\Users\dell>adb devices
List of devices attachedC:\Users\dell>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com