免Root实现Android静默安装(非无障碍) | 您所在的位置:网站首页 › adb静默安装应用 › 免Root实现Android静默安装(非无障碍) |
好耶!是 app_process 那么如何具体用 shell 运行 Java 程序呢?肯定不是「java xxx.jar」啦,Android 能运行的格式是 dex 。没错,就是apk 里那个 dex 。然后我们可以通过「app_process」来启动 Java 。app_process 的参数如下: app_process [vm-options] cmd-dir [options] start-class-name[main-options] 这个诡异又可怕的东西是没有 -help 的。我们要么看源码,要么看别人分析好的。本人水平有限,这里选择看别人分析好的: vm-options – VM 选项 cmd-dir –父目录 (/system/bin) options –运行的参数 : –zygote –start-system-server –application (api>=14) –nice-name=nice_proc_name (api>=14) start-class-name–包含main方法的主类 (com.android.commands.am.Am) main-options–启动时候传递到main方法中的参数 实践 因为是 dex 我们就直接在 as 里写吧,提取 dex 也方便。新建个空白项目,初始结构是这样: 我们新建个包,存放我们要在 shell 下运行的 Java 代码: 这里我们补全 Main 方法,因为我们这个不是个 Android 程序,只是编译成 dex 的纯 Java 程序,所以我们这个的入口是 Main : packageshellService; publicclassMain{ publicstaticvoidmain(String[] args){ System.out.println("我是在 shell 里运行的!!!"); } } 我们在代码里只是打印一行「我是在 shell 里运行的!!!」,因为这里是纯 Java 所以也用的 println。现在编译 apk: 因为 apk 就是 zip 所以我们直接解压出 apk 文件里的classes.dex,然后执行 : adb push classes.dex /data/local/tmp cd /data/local/tmp app_process -Djava.class.path=/data/local/tmp/classes.dex /system/bin shellService.Main 这时就能看到已经成功运行啦: 这里因为 utf8 在 Windows shell 里有问题,所以乱码了,但是还是说明我们成功了。 具有实用性 只能输出肯定是不行的,不具有实用性。我们之前说过,我们应该建立个本地 socket 服务器来接受命令并执行,这里的「Service」类实现了这个功能,因为如何建立 socket 不是文章的重点,所以大家只要知道这个类内部实现了一个「ServiceGetText」接口,在收到命令之后会把命令内容作为参数回掉 getText 方法,然后我们执行 shell 命令之后,吧结果作为字符串返回即可,具体实现可以看查看源码Service。 https://github.com/gtf35/app_process-shell-use/blob/master/app/src/main/java/shellService/Service.java https://github.com/gtf35/app_process-shell-use/blob/master/app/src/main/java/shellService/Service.java 我们新建一个「ServiceThread」 https://github.com/gtf35/app_process-shell-use/blob/master/app/src/main/java/shellService/ServiceThread.java https://github.com/gtf35/app_process-shell-use/blob/master/app/src/main/java/shellService/ServiceThread.java 来运行「Service」服务和执行设立了命令: publicclassServiceThreadextendsThread{ privatestaticintShellPORT = 4521; @Override publicvoidrun(){ System.out.println(">>>>>>Shell服务端程序被调用 |
CopyRight 2018-2019 实验室设备网 版权所有 |