android app执行shell命令视频课程补充android 10/11适配-千里马android
Posted learnframework
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android app执行shell命令视频课程补充android 10/11适配-千里马android相关的知识,希望对你有一定的参考价值。
(https://blog.csdn.net/learnframework/article/details/120103471)
https://blog.csdn.net/learnframework/article/details/120103471
hi,有学员在学习跨进程通信专题课程时候,在实战app执行一个shell命令的项目时候,对课程本身的android 8.1平台没有什么问题,但是学员想要自己适配到android 11上,估计也是目前最新的android版本,因为普遍android S厂商都还没有发布,因为android 的大版本升级适配本身工作也不小,这里就对android app执行shell命令这一部分进行一个升级适配的补充,尽量让买课的学员可以直接用于最新的android版本。
原来课程的项目实现思路等可以看如下blog
Socket让app实现shell命令行执行 https://blog.csdn.net/learnframework/article/details/119965296
具体项目代码和详细视频讲解可以购买我的相关视频
android跨进程通信实战视频课程(一定加群422901085获取优惠)
好了进入正题,主要分为以下几个步骤:
1、编译课程的源码rootServer时候会编译报错,这里的编译报错原因主要是因为android 8.1编译时候不会把定义了但是没有使用的变量认为是错误,但是在android 10/11上就是错误,这个大家直接把提示相关unused变量删除就可以
2、adbd中加入了StartSubprocess方法启动rootServer已经不生效了,因为android 10/11上对这个方法进行更新,继续直接使用无法在adbd拉起rootServer,所以这里采用了临时替代方案:
用截图几句替代原来的StartSubprocess既可以启动rootServer
3.第三方app无法与shell进程进行连接,会报错Permission Denied,这个其实是因为selinux权限的加强,让普通第三方app无法与shell进程进行一个socket通信:
解决方案:只能使用配置增加selinux权限,在对应的system/sepolicy/private/untrusted_app_27.te修改如下
4.adbd无法自启动
这个本身就是留给学员自己完成作业,大概思路有以下几个:
1、让用户自己去设置中开启adb调试开关就可以启动adbd
2、在system/core/init/rootdir/init.usb.rc修改启动adbd,同时也要禁止关闭adbd,学员也提出这个,进行验证也可行,但是可能不能关闭adbd
3、自己去init相应任何地方startService就可以,可以参考:
https://blog.csdn.net/learnframework/article/details/116719986
4、注意stop adbd会导致rootServer停止,因为stop时候会对adbd的所有子进程都进行kill,也就能理解为什么设置中关闭一下调试就会导致电脑的cmd也退出,logcat也无法抓了
csdn在线学习课程,课程咨询答疑和新课信息:QQ交流群:422901085进行课程讨论
[千里马Android Framework实战开发-跨进程通信专题博客总结]
以上是关于android app执行shell命令视频课程补充android 10/11适配-千里马android的主要内容,如果未能解决你的问题,请参考以下文章
Android Framework实战开发-Socket让app实现shell命令行执行
Android Framework实战开发-Socket让app实现shell命令行执行
Android Framework实战开发-Socket让app实现shell命令行执行