一個(gè)開(kāi)源的項(xiàng)目已經(jīng)完成了這個(gè)功能
app_process-shell-use,這個(gè)項(xiàng)目網(wǎng)上講解的,很多,我這邊就把操作時(shí)一些簡(jiǎn)要步驟說(shuō)明一下
但是該方式有缺點(diǎn):必須要先USB連接,debug的時(shí)候,運(yùn)行第13步,
斷開(kāi)USB 無(wú)法再通過(guò)Socket運(yùn)行adb shell命令
國(guó)內(nèi)github又訪問(wèn)不了了,我就在gitee上隨便找了個(gè)一樣的項(xiàng)目,
步驟如下:
1. Android Studio 新增一個(gè)沒(méi)有Activity的項(xiàng)目
2. 新建package shellService
3. 將路徑中四個(gè)文件都copy到新建的package下
文件地址:https://gitee.com/zhang_yu_xing/app_process-shell-use/tree/master/app/src/main/java/shellService
4. java ->項(xiàng)目包名 ->copyMainActivity,
文件地址:https://gitee.com/zhang_yu_xing/app_process-shell-use/blob/master/app/src/main/java/top/gtf35/shellapplicatontest/MainActivity.java
同路徑下,copy工具類(lèi)
文件地址:https://gitee.com/zhang_yu_xing/app_process-shell-use/blob/master/app/src/main/java/top/gtf35/shellapplicatontest/SocketClient.java
5. res -> layout copy布局
文件地址:https://gitee.com/zhang_yu_xing/app_process-shell-use/blob/master/app/src/main/res/layout/activity_main.xml
6. 文件清單修改,copy應(yīng)用入口,及默認(rèn)權(quán)限
文件地址:https://gitee.com/zhang_yu_xing/app_process-shell-use/blob/master/app/src/main/AndroidManifest.xml
7.連上設(shè)備 debug運(yùn)行
8. 在項(xiàng)目名稱(chēng)\\app\build\outputs\apk\debug\下存在debug APK,將其解壓,將解壓后文件夾內(nèi)的classes.dex copy到與debug APK同級(jí)的路徑下
cd app\build\outputs\apk\debug\
9. Android Studio 底部terminal窗口,默認(rèn)在當(dāng)前項(xiàng)目下,cd app\build\outputs\apk\debug
10. adb push classes.dex /data/local/tmp
11.adb shell
12.cd /data/local/tmp
13. app_process -Djava.class.path=/data/local/tmp/classes.dex /system/bin shellService.Main
至此,執(zhí)行shell命令的socket服務(wù)開(kāi)啟,
打印內(nèi)容如下:
>>>>>>Shell服務(wù)端程序被調(diào)用<<<<<<
服務(wù)端運(yùn)行在4521端口
在設(shè)備運(yùn)行的初始頁(yè)面中,輸入要執(zhí)行的命令(如命令前帶有abd shell,可將其去掉),點(diǎn)擊執(zhí)行即可
至此完成
聯(lián)系客服