ADB的run-as和exec-out引數
https://www.jianshu.com/p/2b10310cd545
run-as 可以用某個使用者的許可權來執行命令,這可以解決沒有訪問許可權的問題,在不帶這個引數時執行:
adb push sample.db /data/data/com.sample.foo/databases/sample.db
sample.db就不能被com.sample.foo訪問,因為檔案的使用者和所在的組與com.sample.foo不一致,必須要經過chown修改使用者和組後才能訪問,而且由於每次app安裝後獲得的使用者名稱不一致,沒法將chown命令的引數批處理化,這是個很重要的缺陷。
帶上run-as執行:
adb shell "run-as com.sample.foo sh -c 'cp /sdcard/sample.db /data/data/com.sample.foo/databases/sample.db'"
sample.db就變成com.sample.foo親生的。如果你沒有root許可權,執行pull或者push時又提示Permission denied,不妨加上run-as引數看看。
exec-out是本文的另一個主角。在用adb pull從裝置拉db之類的二進位制檔案的過程中,程式會自作主張的加上一些換行符,最終導致得到的檔案被修改,exec-out的意思是說,給我保留原汁原味,我不要新增劑,謝謝!
你可以對比以下命令的輸出:
adb shell "su -c cat /data/data/com.android.providers.settings/databases/settings.db" > settings.db
和adb exec-out "su -c cat /data/data/com.android.providers.settings/databases/settings.db" > settings.db
更詳細的說明請參考adb的幫助和下面的連線:
https://stackoverflow.com/questions/13578416/read-binary-stdout-data-from-adb-shell
https://stackoverflow.com/questions/22703254/copying-files-in-adb-shell-with-run-as/22751947
相關文章
- 常用adb 和 adb shell 命令
- 引數的定義和引數的傳遞
- Bash變數和引數變數
- python變數和引數Python變數
- Java對比有引數和無引數Java
- Laravel同時接收路由引數和查詢字串中的引數Laravel路由字串
- OpenAI的Temperature和Top P 引數OpenAI
- 函式的呼叫方式和引數函式
- 小程式內引數和掃碼引數統一
- TypeScript 函式可選引數和預設引數TypeScript函式
- postman 請求引數和 Spring Boot Controller 接受引數PostmanSpring BootController
- C# 中的 in 引數和效能分析C#
- 3.3.2 函式的預設引數和佔位引數 函式過載函式
- 選購交換機的引數依據和主要的引數指標詳解指標
- java 執行緒池的初始化引數解釋和引數設定Java執行緒
- .yaml引數檔案的編寫和使用YAML
- shell的引數和指令碼流程改進指令碼
- Django 常用欄位和引數Django
- C#通過反射獲取類中的方法和引數個數,反射呼叫方法帶引數C#反射
- c#基礎-5.變長引數和引數預設值C#
- Java替換RequstBody和RequestParam引數的屬性Java
- PostgreSQL的"double buffers"刷髒機制和引數SQL
- pytest的資料驅動和引數傳遞
- Android中常見的佈局和佈局引數Android
- 常用的ADB命令
- SweepGradient的引數
- 常用的jvm配置引數 :永久區引數配置JVM
- Python可變引數*args和**kwargsPython
- mydumper和myloader使用引數解釋
- mydumper和myloader引數使用說明
- OB有問必答 | 引數和變數的區別是什麼?變數
- win10系統adb環境變數配置怎麼設定_win10系統adb環境變數配置的方法Win10變數
- shell中定義變數用雙引號和單引號以及不用引號的區別變數
- 什麼是請求引數、表單引數、url引數、header引數、Cookie引數?一文講懂HeaderCookie
- 形式引數和返回值型別的對比型別
- 深入瞭解 Java 方法和引數的使用方法Java
- subprocess中命令為引數序列和字串的區別字串
- LMT和DMT下儲存引數的異同(轉)