一開始使用paul 的r5 root包開始就納悶,
爲什麼他的adb-windows 和 android 官方adb 有一個決定性的區別:
官方windows 下的adb push 上手機的文件都沒有可執行的權限, 而adb-windows就是777.
還是從代碼入手:
adb 的commandline.c 中 push 參數 會執行 do_sync_push 函數(file_sync_client.c 定義)
do_sync_push 函數 會調用stat 獲取文件信息 .
然後傳入sync_send 跟文件一併發送:
static int sync_send(int fd, const char *lpath, const char *rpath,
unsigned mtime, mode_t mode, int verifyApk);
測試證實, 自己通過android源代碼編譯獲取的adb 是帶上原文件權限的.
估計就是因爲 adb-windows 通過修改 sync_send中傳出的 mode , 讓目標777
我沒有windows下的源碼編譯環境, 沒法實現, 現在愈發發現在ubuntu 上玩 android 比windows下爽多了...