一個開源的項目已經完成了這個功能
app_process-shell-use,這個項目網上講解的,很多,我這邊就把操作時一些簡要步驟說明一下
但是該方式有缺點:必須要先USB連接,debug的時候,運行第13步,
斷開USB 無法再通過Socket運行adb shell命令
國內github又訪問不了了,我就在gitee上隨便找了個一樣的項目,
步驟如下:
1. Android Studio 新增一個沒有Activity的項目
2. 新建package shellService
3. 將路徑中四個文件都copy到新建的package下
文件地址:https://gitee.com/zhang_yu_xing/app_process-shell-use/tree/master/app/src/main/java/shellService
4. java ->項目包名 ->copyMainActivity,
文件地址:https://gitee.com/zhang_yu_xing/app_process-shell-use/blob/master/app/src/main/java/top/gtf35/shellapplicatontest/MainActivity.java
同路徑下,copy工具類
文件地址: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應用入口,及默認權限
文件地址:https://gitee.com/zhang_yu_xing/app_process-shell-use/blob/master/app/src/main/AndroidManifest.xml
7.連上設備 debug運行
8. 在項目名稱\\app\build\outputs\apk\debug\下存在debug APK,將其解壓,將解壓后文件夾內的classes.dex copy到與debug APK同級的路徑下
cd app\build\outputs\apk\debug\
9. Android Studio 底部terminal窗口,默認在當前項目下,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
至此,執行shell命令的socket服務開啟,
打印內容如下:
>>>>>>Shell服務端程序被調用<<<<<<
服務端運行在4521端口
在設備運行的初始頁面中,輸入要執行的命令(如命令前帶有abd shell,可將其去掉),點擊執行即可
至此完成