Android 11 UsbDebug 关于adb RSA 认证
1.Android 11 -- 强制清理app后台,关于权限引发的问题2.Android 11 (MTK)状态栏图标反色-->跟随当前应用变化代码流程3.Android 11 --关于Toast的异常4.Android 11 -- 关于dialog和悬浮窗导致SystemUI状态栏下拉频繁闪烁(窗口焦点问题)5.Android 11 下拉菜单长按WiFi图标SystemUI ANR6.Android 11 sim卡来电不弹出悬浮通知,默认来电默认全屏7.Android Bluetooth 蓝牙开发/蓝牙协议 小结8.Android11 —— 自定义添加一个System Services9.Android系统——AOSP相关-->随记10.Android11 , Launcher3 切换阿拉伯语,最近应用(后台)不能滑动11.Android 底层问题日志记录12.Android 11 -- app 服务保活13.Android11 - 添加自定义服务注意事项14.Android 11 导航栏添加一个虚拟按钮--问题合集15.Android 11--设置第三方Launcher并默认 与 如何预置apk16.Android11 系统修改 AOSP输入法的默认输入键盘布局17.Settings里面切换不同Launcher的代码流程18.关于Android`系统默认屏保`19.关于Android 11 Settings添加新的选项界面的细节20.Android 11 自由窗口模式 || 全屏模式启动app21.强制app横屏显示或者竖屏显示(动态)22.Android 11 禁止从SD卡上安装第三方应用23.实体物理音量键替换为home键24.AMS- kill Launcher进程的代码流程25.Android 11 recovery恢复出厂设置保留某些文件26.Android 11 禁用 adb root (userdebug版本)27.Android11 应用默认获取通知使用权限(可以获取系统所有通知信息)
28.Android 11 UsbDebug 关于adb RSA 认证
29.Android 11 NavigationBar && Status Bar 如果改变背景颜色30.Anroid 11 关于NotificationManager && NotificationManagerService -- 衍生到权限管理31.Android13 控制设置界面 双栏显示或单栏显示32.Android 13 大屏显示时关于SystemUI和Launcher3问题33.Android 系统适配无源码app34.Android 11 关于app的权限重置35.Android 11.0 关于app进程保活36.Android 11 关于按键拦截/按键事件处理分享37.Android R Settings关于屏保/PowerManagerService欺骗系统不让其进入休眠状态38.Android13 关于SystemUI更新/Nav Bar add volume button&&other button39.Android 13 移植EthernetSettings/Ethernet更新40.Anrdoir 13 关于设置静态IP后,突然断电,在上电开机卡动画41.Android T(13) The app is granted permissions by default42.Android T 关于屏幕旋转 (一)43.Android T about screen rotation(二)44.Android 13 about launcher3 (1)45.Android T don't abort background activity starts46.Android T adout replace bootanimation47.Launcher start App WINDOWING_MODE_FREEFORM48.Android 11 About SleepToken / (Settings)Screen timeout49.Settings.System数据监听/prop&SystemProperties数据监听user版本时默认打开adb RSA指纹密钥的 ,就是那个连接adb的时候弹出一个dialog让你确认的界面!
eng和userdebug 版本中关闭了adb RSA 指纹密钥认证.
注意:Google 现在强制要求在USER 版本中开启adb RSA 指纹认证,如果关闭,将无法通过Google CTS 测试
ro.adb.secure=1 adb RSA指纹打开
ro.adb.secure=0 adb RSA指纹关闭
ro.secure ro.debuggable (关于 root)
./frameworks/base/services/core/java/com/android/server/adb/AdbDebuggingManager.java
/**
* This class will poll for a period of time for adbd to write the port
* it connected to.
*
* TODO(joshuaduong): The port is being sent via system property because the adbd socket
* (AdbDebuggingManager) is not created when ro.adb.secure=0. Thus, we must communicate the
* port through different means. A better fix would be to always start AdbDebuggingManager, but
* it needs to adjust accordingly on whether ro.adb.secure is set.
*/
//大意:如果ro.adb.secure=0 ,adb 连接不会走AdbDebuggingManager的流程
./frameworks/base/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java
/**
* 允许adb debugging
* @param allow whether the connection should be allowed
* @param alwaysAllow whether subsequent requests from this key should be allowed without user consent
*/
private void notifyService(boolean allow, boolean alwaysAllow) {
try {
IBinder b = ServiceManager.getService(ADB_SERVICE);
IAdbManager service = IAdbManager.Stub.asInterface(b);
if (allow) {
service.allowDebugging(alwaysAllow, mKey);
} else {
service.denyDebugging();
}
mServiceNotified = true;
} catch (Exception e) {
Log.e(TAG, "Unable to notify Usb service", e);
}
}
./system/core/adb/daemon/main.cpp
static bool should_drop_privileges() {
//是否可以root,drop_privileges 关于权限,降权
// The properties that affect `adb root` and `adb unroot` are ro.secure and
// ro.debuggable. In this context the names don't make the expected behavior
// particularly obvious.
//
// ro.debuggable:
// Allowed to become root, but not necessarily the default. Set to 1 on
// eng and userdebug builds.
//
// ro.secure:
// Drop privileges by default. Set to 1 on userdebug and user builds.
bool ro_secure = android::base::GetBoolProperty("ro.secure", true);
bool ro_debuggable = __android_log_is_debuggable();
// Drop privileges if ro.secure is set...
bool drop = ro_secure;
// ... except "adb root" lets you keep privileges in a debuggable build.
std::string prop = android::base::GetProperty("service.adb.root", "");
bool adb_root = (prop == "1");
bool adb_unroot = (prop == "0");
if (ro_debuggable && adb_root) {
drop = false;
}
// ... and "adb unroot" lets you explicitly drop privileges.
if (adb_unroot) {
drop = true;
}
return drop;
}
//实际应用:改装RAS指纹认证弹窗
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java
public class UsbDebuggingActivity extends AlertActivity
ap.mView = checkbox;
window.setCloseOnTouchOutside(false);
- setupAlert();
+ //setupAlert();
+ alertDialog();
}
+ //add text
+ private void alertDialog() {
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ final EditText editText = new EditText(this);
+ editText.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
+ editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
+ builder.setTitle(getString(R.string.usb_debugging_title));
+ builder.setView(editText);
+ builder.setCancelable(false);
+ builder.setPositiveButton(getString(R.string.usb_debugging_allow), new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialogInterface, int i) {
+ String str = editText.getText().toString().trim();
+ String pwd = SystemProperties.get("persist.xxx.xxx.pwd", "android");
+ if (str.equals(pwd)) {
+ notifyService(true, false);
+ } else {
+ notifyService(false, false);
+ }
+ finish();
+ }
+ });
+ builder.setNegativeButton(getString(android.R.string.cancel), new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialogInterface, int i) {
+ finish();
+ }
+ });
+ builder.show();
+ }
+ //add text
+
android9.0默认打开adb调试以及默认授权RSA秘钥指纹弹框_adb rsa-CSDN博客
如何开启与关闭adb 的认证机制_adb auth-CSDN博客
Android系统 adb shell auth授权使用_adb授权-CSDN博客
关于dialog的小技巧
private void checkText(Context context) {
final EditText editText = new EditText(context);
//密码键盘
editText.setInputType(InputType.TYPE_CLASS_NUMBER);
editText.setTransformationMethod(new PasswordTransformationMethod());
/*
//清理焦点,显示输入法键盘
editText.setFocusable(false);
editText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText.setFocusableInTouchMode(true);
editText.requestFocus();
editText.requestFocusFromTouch();
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
}
});*/
//dialog点击BUTTON_POSITIVE 不消失
AlertDialog inputDialog = new AlertDialog.Builder(context).setCancelable(false)
.setTitle("Please enter password")
.setView(editText)
.setPositiveButton(android.R.string.ok, null)
.setNeutralButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
//输入法键盘隐藏
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}
}).create();
inputDialog.show();
inputDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(v -> {
String pwd = editText.getText().toString().trim();
//todo
});
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2022-07-12 带进度条的控件--CircleProcessView