標籤:
首先本人使用的是ubuntu系統,在Eclipse下開發的時候使用無線調試,在終端直接輸入adb connect 114.114.114.114沒有問題,給手機安裝軟體用adb install ***.apk也沒有問題,可能是之前我在終端安裝過adb-tools的原因,但是對於其他的命令比如push pull命令一直不能使用總是出現error:device not found。後來查詢了些資料,說的是應該使用SDK目錄下的platform-tools檔案夾裡面的adb,相關的使用命令如下:
而像push、pull的命令不需要在shell環境中進行,比如我將/system/build.prop檔案複製到PC上:
這樣就成功的將build.prop檔案複製到我的下載檔案夾裡面了,當使用push命令將PC上的檔案複製到android裝置上,你可能需要的問題:
1.提示read-only file system
當使用adb shell時,向/system目錄及其子目錄寫檔案時經常提示“read-only file system”。其實產生該提示的原因很簡單:/system是以ro模式掛載的,因此我們所要做的就是以讀寫入模式(rw)重新掛載需要修改的目錄(本例中為/system),具體流程如下:
1). 進入adb shell並查看當前掛在情況
命令號下輸入:adb shell#mount
這個時刻可以看到當前的掛載情況:
rootfs on / type rootfs (rw,relatime)tmpfs on /dev type tmpfs (rw,relatime,mode=755)devpts on /dev/pts type devpts (rw,relatime,mode=600)proc on /proc type proc (rw,relatime)sysfs on /sys type sysfs (rw,relatime)none on /acct type cgroup (rw,relatime,cpuacct)tmpfs on /mnt/asec type tmpfs (rw,relatime,mode=755,gid=1000)tmpfs on /mnt/obb type tmpfs (rw,relatime,mode=755,gid=1000)none on /dev/cpuctl type cgroup (rw,relatime,cpu)/dev/block/mmcblk0p25 on /system type ext4 (ro,relatime,barrier=1,data=ordered)/dev/block/mmcblk0p26 on /data type ext4 (rw,nosuid,nodev,noatime,barrier=1,data=ordered,noauto_da_alloc)/dev/block/mmcblk0p27 on /cache type ext4 (rw,nosuid,nodev,noatime,barrier=1,data=ordered)/dev/block/mmcblk0p28 on /devlog type ext4 (rw,nosuid,nodev,noatime,barrier=1,data=ordered)/data/d on /data/d type debugfs (rw,relatime)/sys/kernel/debug on /sys/kernel/debug type debugfs (rw,relatime)/dev/block/vold/179:65 on /mnt/sdcard type vfat (rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0602,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)/dev/block/vold/179:65 on /mnt/secure/asec type vfat (rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0602,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)tmpfs on /mnt/sdcard/.android_secure type tmpfs (ro,relatime,size=0k,mode=000)
我們感興趣的就是代碼中底線的部分,可以看到system是以唯讀權掛載的
2)重新掛載需要修改許可權的目錄:
#mount -o remount -o rw /system
修改完成之後最後還是將其改成唯讀許可權,只需要將上面的rw改成ro即可。
3)查看修改後的結果
# mountrootfs on / type rootfs (rw,relatime)tmpfs on /dev type tmpfs (rw,relatime,mode=755)devpts on /dev/pts type devpts (rw,relatime,mode=600)proc on /proc type proc (rw,relatime)sysfs on /sys type sysfs (rw,relatime)none on /acct type cgroup (rw,relatime,cpuacct)tmpfs on /mnt/asec type tmpfs (rw,relatime,mode=755,gid=1000)tmpfs on /mnt/obb type tmpfs (rw,relatime,mode=755,gid=1000)none on /dev/cpuctl type cgroup (rw,relatime,cpu)/dev/block/mmcblk0p25 on /system type ext4 (rw,relatime,barrier=1,data=ordered)/dev/block/mmcblk0p26 on /data type ext4 (rw,nosuid,nodev,noatime,barrier=1,data=ordered,noauto_da_alloc)/dev/block/mmcblk0p27 on /cache type ext4 (rw,nosuid,nodev,noatime,barrier=1,data=ordered)/dev/block/mmcblk0p28 on /devlog type ext4 (rw,nosuid,nodev,noatime,barrier=1,data=ordered)/data/d on /data/d type debugfs (rw,relatime)/sys/kernel/debug on /sys/kernel/debug type debugfs (rw,relatime)/dev/block/vold/179:65 on /mnt/sdcard type vfat (rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0602,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)/dev/block/vold/179:65 on /mnt/secure/asec type vfat (rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0602,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)tmpfs on /mnt/sdcard/.android_secure type tmpfs (ro,relatime,size=0k,mode=000)#
這樣就可以盡情的使用push、pull命令。
但是在實際中我的還是提示failed to copy *****,operation denied。具體的原因我不太清除,但是我做了一個折中的解決辦法,先將檔案push到SD卡上,然後進入shell環境下使用root許可權移動到你需要的目錄,裡面的操作命令和Linux下的shell命令是一樣的。
2.使用chmod修改許可權提示bad mode,解決辦法是使用數字形式的許可權:
chmod 755 build.prop
3. 在執行mv命令時提示“-cross-device link”
這種情況下,可以使用cat將檔案重新導向到指定位置,然後根據需要,修改許可權即可。
cat /mnt/sdcard/test.apk > /system/app/test.apk
安卓adb調試命令常見的問題