1.流程

USB插入接收广播授权->建立adb连接服务->执行adb 命令
2.adb相关属性
| ro.secure = 0 | 开启root权限 |
| ro.adb.secure = 1 | 1开启adb RSA 指纹认证 ,0关闭 |
| ro.debuggable = 1 | 1开启adb debug,0关闭 |

3.修改源码位置 build/core/main.mk 部分代码如下图所示


4、/PA1032/frameworks/base/packages/SystemUI/src/com/android/systemui/usb

5其他:需要注意更换电脑 需要将默认.android目录adbkey.pub/adbkey文件 替换到misc目录adb_keys文件即可

6.Android 9与Android 10 Android11 Android12 异同
6.1 Android 9
/system/core/adb/Android.mk(注意Android 10此目录是Android.bp文件,不了解Android.bp文件请查看这篇文章android - Android.bp 简介_个人文章 - SegmentFault 思否)
- LOCAL_CFLAGS += -DALLOW_ADBD_NO_AUTH=$(if $(filter userdebug eng,$(TARGET_BUILD_VARIANT)),1,0)
+ LOCAL_CFLAGS += -DALLOW_ADBD_NO_AUTH=$(if $(filter user userdebug eng,$(TARGET_BUILD_VARIANT)),1,0)
6.2关闭弹窗提示
源码位置:
frameworks/base/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java
boolean connected = intent.getBooleanExtra(UsbManager.USB_CONNECTED, false);
+ // boolean connected = intent.getBooleanExtra(UsbManager.USB_CONNECTED, false);
+ boolean connected = false;
if (!connected) {
mActivity.finish();
}
+ try {
+ IBinder b = ServiceManager.getService(USB_SERVICE);
+ IUsbManager service = IUsbManager.Stub.asInterface(b);
+ service.allowUsbDebugging(true, mKey); //USB授权通过
+ // service.clearUsbDebuggingKeys();
+ } catch (Exception e) {
+ Log.e(TAG, "Unable to notify Usb service", e);
+ }
6.3 Android 10 去掉默认授权弹窗代码如下,只需要在接收到USB插入广播之后进行adb ipc跨进程通信即可 如下图所示

6.4 Android 11 和12 去掉默认授权弹窗代码如下,只需要在接收到USB插入广播之后进行adb ipc跨进程通信即可(前面默认打开adb操作 见步骤3)如下图所示

6.5 Anoroid 9 源码位置framework/base/core/java/android/hardware/usb/IUsbManager.aidl

6.6 Android 10源码位置framework/base/core/java/android/hardware/usb/IUsbManager.aidl

6.7 Android 11/12源码位置framework/base/core/java/android/hardware/usb/IUsbManager.aidl

6.8 执行 source build/envsetup.sh->lunch 25-> make installclean -> make -j32(不了解编译指令查看这里玩转AOSP源码编译_yzm65580952的博客-CSDN博客_aosp编译)烧录软件之后 查看修改 到这里基本结束了。默认打开adb调试 如下图所示

7.总结
虽然这个功能不难但是涉及很多细节
1、adb 基础 root权限 sytem/bin/ 或者 xbin
2、aidl 这里不再赘述有需要自行百度
3、跨进程通信 binder服务(java binder 和 native binder)
4、framework/base/packages/SystemUI/systemui/usb
5、AOSP 源码 答案一般都是来自源码 网上百度不到源码一定可以找到答案
AOSP 源码学习网站
1、学习网站
(1) http://aospxref.com/(Android13)
(2)http://aosp.opersys.com/(Android12)
(3)https://android.googlesource.com(需要vpn翻墙)
(4) http://androidxref.com/(目前最新Android 9.0)
2、学习源码阅读工具
(1)SouceInsight(无法编译源码/无法获取最新源码)
(2)Android Studio
(3)VsCode
(4)SublimeText
(5)NodePad++
(6)Xshell
感谢
android user版本默认开启adb调试,不弹出对话框_王不六的博客-CSDN博客_adb调试弹窗
注意:这里只是高通平台 具体其他平台请以实际平台为主例如RK(瑞芯)/AllWinner(全志)/MTK/展讯
有一起想学framework可以加我wx (kdanmobile)
转载请注明出处 ,谢谢。高通平台(Qualcomm) Android 10/11/12 user版本默认打开adb 调试小结_KdanMin的博客-CSDN博客
我怎样才能完成http://php.net/manual/en/function.call-user-func-array.php在ruby中?所以我可以这样做:classAppdeffoo(a,b)putsa+benddefbarargs=[1,2]App.send(:foo,args)#doesn'tworkApp.send(:foo,args[0],args[1])#doeswork,butdoesnotscaleendend 最佳答案 尝试分解数组App.send(:foo,*args)
运行bundleinstall后出现此错误:Gem::Package::FormatError:nometadatafoundin/Users/jeanosorio/.rvm/gems/ruby-1.9.3-p286/cache/libv8-3.11.8.13-x86_64-darwin-12.gemAnerroroccurredwhileinstallinglibv8(3.11.8.13),andBundlercannotcontinue.Makesurethat`geminstalllibv8-v'3.11.8.13'`succeedsbeforebundling.我试试gemin
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
Devise是一个Ruby库,它为我提供了这个User类:classUser当写入:confirmable时,注册时会发送一封确认邮件。上周我不得不批量创建300个用户,所以我在恢复之前注释掉了:confirmable几分钟。现在我正在为用户批量创建创建一个UI,因此我需要即时添加/删除:confirmable。(我也可以直接修改Devise的源码,但我宁愿不去调和它)问题:如何即时添加/删除:confirmable? 最佳答案 WayneConrad的解决方案:user=User.newuser.skip_confirmation
我刚刚安装了带有RVM的Ruby2.2.0,并尝试使用它得到了这个:$rvmuse2.2.0--defaultUsing/Users/brandon/.rvm/gems/ruby-2.2.0dyld:Librarynotloaded:/usr/local/lib/libgmp.10.dylibReferencedfrom:/Users/brandon/.rvm/rubies/ruby-2.2.0/bin/rubyReason:Incompatiblelibraryversion:rubyrequiresversion13.0.0orlater,butlibgmp.10.dylibpro
我正在运行Ubuntu11.10并像这样安装Ruby1.9:$sudoapt-getinstallruby1.9rubygems一切都运行良好,但ri似乎有空文档。ri告诉我文档是空的,我必须安装它们。我执行此操作是因为我读到它会有所帮助:$rdoc--all--ri现在,当我尝试打开任何文档时:$riArrayNothingknownaboutArray我搜索的其他所有内容都是一样的。 最佳答案 这个呢?apt-getinstallri1.8编辑或者试试这个:(非rvm)geminstallrdocrdoc-datardoc-da
我已经通过提供MagickWand.h的路径尝试了一切,我安装了命令工具。谁能帮帮我?$geminstallrmagick-v2.13.1Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingrmagick:ERROR:Failedtobuildgemnativeextension./Users/ghazanfarali/.rvm/rubies/ruby-1.8.7-p357/bin/rubyextconf.rbcheckingforRubyversion>=1.8.5...yescheckingfor/
我正在使用macos,我想使用ruby驱动程序连接到sqlserver。我想使用tiny_tds,但它给出了缺少free_tds的错误,但它已经安装了。怎么能过这个?~brewinstallfreetdsWarning:freetds-0.91.112alreadyinstalled~sudogeminstalltiny_tdsBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtiny_tds:ERROR:Failedtobuildgemnativeextension.完整日志如下:/System
我正在尝试运行rakedb:create在DigitalOcean服务器上使用postgresql。但是,它返回错误Peerauthenticationfailedforuser"rails",引用config/database.yml登录凭据的存储位置奇怪的是,当我通过SSH登录服务器时,这些凭据以纯文本形式显示给我。我都试过了密码以纯文本形式显示给我,同样的事情发生了。环境在生产中,我必须手动强制执行,因为应用程序在启动时正在开发中并强制它在config/environments.rb中更改不工作。如果我不得不猜测,我可能会说环境中发生了一些有趣的事情,因为DigitalOcean
我正在使用PostgreSQL9.1.3(x86_64-pc-linux-gnu上的PostgreSQL9.1.3,由gcc-4.6.real(Ubuntu/Linaro4.6.1-9ubuntu3)4.6.1,64位编译)和在ubuntu11.10上运行3.2.2或3.2.1。现在,我可以使用以下命令连接PostgreSQLsupostgres输入密码我可以看到postgres=#我将以下详细信息放在我的config/database.yml中并执行“railsdb”,它工作正常。开发:adapter:postgresqlencoding:utf8reconnect:falsedat