Android驱动开发工作常用命令集

首先分享促使我写文章分享的一段话,期待与大家互相学习,共同进步:

最有用的研究是去研究那些与你的工作相关的事情,尤其是一些类似的工作。无论你正在干什么,你其实都会找到这样的机会,那就是总有什么人在什么地方干过与你相似的事情,从别人的成功和教训当中去研究,学习别人的经验而规避别人的教训,这对于你未来的工作是非常有帮助的。

——摘自《麦肯锡思维与工作法》第二章 分析准确,问题就解决了一半

OTA差分包制作命令
适用于MT2601:
./build/tools/releasetools/ota_from_target_files --block -k build/target/product/security/testkey -i ../release-HS_KR_HV10_SV02_171030/mota.zip ../release-HS_KR_HV10_SV03_171106/mota.zip update.zip

md5sum -b update.zip

echo md5数值 > md5sum

zip package.zip md5sum update.zip

适用于MT6735:

./build/tools/releasetools/ota_from_target_files -v --block  -k build/target/product/security/testkey -s device/mediatek/build/releasetools/mt_ota_from_target_files  -i old new update.zip

例如:
./build/tools/releasetools/ota_from_target_files -v --block -k build/target/product/security/testkey -s device/mediatek/build/releasetools/mt_ota_from_target_files -i /home/wzh/bak/bak_data/bins/V118/SV52_0929/full_V118_35_66_m0-target_files-1506699026.zip release-v118_ABR_CN_HV30_SV56_171201/mota.zip update.zip

适用于MT6739:

./build/tools/releasetools/ota_from_target_files -s vendor/mediatek/proprietary/scripts/releasetools/mt_ota_from_target_files.py -i old new update.zip

例如:
./build/tools/releasetools/ota_from_target_files -s vendor/mediatek/proprietary/scripts/releasetools/mt_ota_from_target_files.py -i release-M30_ABR_CN_HV33_SV62_191214/full_abr6739_T3_64_go-target_files-1576296825.zip release-M30_ABR_CN_HV33_SV62_191218/full_abr6739_T3_64_go-target_files-1576641931.zip update.zip
手动验证OTA升级的命令:
adb push update.zip /data/data/com.mediatek.systemupdate/system_update/update.zip

adb shell "mkdir /cache/recovery"

adb shell "echo --update_package=/data/data/com.mediatek.systemupdate/system_update/update.zip > /cache/recovery/command"

adb shell "reboot recovery"
A33板卡测试软件编译命令:
cd lichee
./build.sh config   //这一步的时候选择 DragonBoard 就好了。
打包的话:
./build.sh pack
V10编译命令:
在lichee目录下:
./build.sh -p sun6i_venus
在android4.4目录下:
source build/envsetup.sh
lunch 17
extract-bsp
make -j8
pack
V10 PMU gpio控制位置:
cd /sys/devices/platform/sun6i-i2c.1/i2c-1/1-0034/axp22-gpio.20
在a10-android4.0/lichee目录下:
./build.sh -p sun4i_crane -k 3.0
source build/envsetup.sh
lunch 7
extract-bsp
make -j8
pack
./build.sh -p a13_nuclear -k 3.0
source build/envsetup.sh
lunch 7
extract-bsp
make -j8
pack
查看系统中prink打印信息:
adb shell cat /proc/kmsg
将打印信息保存为txt文档
adb shell cat /proc/kmsg > e:\123.txt
getevent
将手机卡中的某个文本文件复制到电脑D盘
adb pull /sdcard/**.txt   D:\
临时设置环境变量
export PATH=$PATH:/home/extend/wff/a13_sdk4.0/lichee/buildroot/output/external-toolchain/bin

export PATH=$PATH:/home/wff/wff_extend/a10_sdk4.0/lichee/buildroot/output/external-toolchain/bin
logcat查看含有相关内容的打印信息:
logcat|grep "gps_oem"

或者

adb shell 

root@android:/ # logcat | busybox grep "gps_oem"

查看系统进程占用内存信息:

adb shell top -m 5
在当前目录及子目录下查找包含字符串 gpio_write_one_pin_value 的所有.h文件,并用颜色标明
find ./ -name *.h |xargs grep -n2 "gpio_write_one_pin_value" --color
解压文件到指定目录下:
tar -xzvf drivers/misc/dm201.tar.gz -C drivers/misc/
3G模块查看调试信息命令
adb logcat -b radio -v time
停止ril库
stop ril-daemon
启动ril库
start ril-daemon
启动gsmmux脚本
gsmmux -p /dev/ttyS5 -b 115200 -s /dev/mux -w /dev/ptmx /dev/ptmx
根据名字kill进程:
busybox killall -15 gsmmux
串口命令查看硬件模块是否连接正常的方法:
# echo -e  "AT+CSQ\r"   >    /dev/ttyS2
# echo -e  "ATS24=0\r"   >    /dev/mux1
查看是否能通过2G上网的方法:
adb shell
root@wing-cdr:/ # ping 8.8.8.8
TF卡启动软件编译命令:
./build.sh -p sun4i_dragonboard -k 3.0
./build.sh pack
./build.sh -p a13_dragonboard -k 3.0
//卸载apk命令
adb uninstall com.daxun.bluetooth.activity
PMU的GPIO口控制位置
cd /sys/class/i2c-dev/i2c-0/device/0-0034/axp20-gpio.29
查看服务或进程占用内存情况:
adb shell
procrank
查看触摸屏分辨率:
root@android:/ # getevent -p /dev/input/event2
getevent -p /dev/input/event2
add device 1: /dev/input/event2
  name:     "ft5x_ts"
  events:
    KEY (0001): 014a
    ABS (0003): 0030  : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0
                0032  : value 0, min 0, max 200, fuzz 0, flat 0, resolution 0
                0035  : value 0, min 0, max 800, fuzz 0, flat 0, resolution 0
                0036  : value 0, min 0, max 480, fuzz 0, flat 0, resolution 0
                0039  : value 0, min 0, max 4, fuzz 0, flat 0, resolution 0
  input props:
    <none>     
获取已安装的应用的包名
adb shell pm list packages
结果(节选):
package:com.dx.launcher.activity
package:com.dx.radardetection
获取包名对应的APK 路径 
adb shell pm path com.dx.launcher.activity
  
package:/system/app/DX_LauncherX5E.apk


adb shell pm path com.dx.radardetection
  
package:/data/app/com.dx.radardetection-2.apk
把APK pull到本地
adb pull /data/app/com.dx.radardetection-2.apk f:\
使用aapt 来解析包的信息
aapt d badging X:\8801_android4.0\android4.0\out\target\product\crane-cvr\system\app\DX_LauncherX5E.apk

解析结果(节选):
package: name='com.dx.launcher.activity' versionCode='1' versionName='1.0'
application-label:'DX_Launcher02'
(命令启动apk的关键信息)
launchable-activity: name='com.dx.launcher.activity.MainActivity'  label='DX_Launcher02'
locales: '--_--' 'zh_CN'
densities: '160'         
安装apk的命令:
adb install F:\com.dx.radardetection-2.apk
启动apk的命令:
adb shell
am start -n com.dx.launcher.activity/.MainActivity

am start -n com.dx.radardetection/.DetectionActivity
卸载apk命令:
adb uninstall com.dx.radardetection
zip压缩命令
-q:不显示指令执行过程;
-r:递归处理,将指定目录下的所有文件和子目录一并处理;
例子:
将/home/Blinux/html/这个目录下所有文件和文件夹打包为当前目录下的html.zip:
zip -q -r html.zip /home/Blinux/html
tar 分包压缩与合并 
要将目录logs打包压缩并分割成多个1024M的文件,可以用下面的命令:
 tar cjf - logs/ |split -b 1024m - logs.tar.bz2.
完成后会产生下列文件:
 logs.tar.bz2.aa, logs.tar.bz2.ab, logs.tar.bz2.ac
例子:
tar cjf - 源码文件夹名称/ |split -b 1001m - 源码文件夹名称.tar.bz2.
要解压的时候只要执行下面的解压命令就可以了:
cat logs.tar.bz2.a* | tar xj
e.g.  cat ${customer_project}_INHOUSE.tar.gz* | tar zxf -

压缩命令:
将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一  个gzip压缩过的包,命名为jpg.tar.gz
tar –czf jpg.tar.gz *.jpg


将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –cjf jpg.tar.bz2 *.jpg
解压命令:
tar -xzvf file.tar.gz     //解压tar.gz
tar -xjvf file.tar.bz2    //解压 tar.bz2

1、解压到当前文件夹
输入:tar zxvf  文件名.tgz -C ./     比如我的是:tar zxvf simple-examples.tgz -C ./

2、解压到指定文件夹下
输入:tar  zxvf  文件名.tgz  -C /指定路径
比如我想解压到Home下:则变成tar zxvf simple-examples.tgz -C /Home

ADB server didn't ACK 解决方法:
adb nodaemon server
    显示:cannot bind 'tcp:5037'

netstat -ano | findstr "5037"
    显示:TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       6284

tasklist /fi "pid eq 6284
显示:
    图像名                       PID 会话名           会话#       内存使用
    ========================= ====== ================ ======== ============
    sjk_daemon.exe              6284 Console                 0      4,536 K
批量修改某个目录为指定用户所有(用户组权限修改):
chown -R xxx:ddd dir

例如:
sudo chown -R user_1:user_1 user_1/
修改用户名
vim /etc/passwd
vim /etc/shadow
修改组名  
groupmod -n new_username old_username

groupmod命令用来修改组相关信息,-n用来指定新的组名,用原来的组名作为参数。这里修改的是与用户默认同名的组。
修改用户名  
usermod -l new_username -d /home/new_username -m old_username

用usermod命令来修改用户帐户相关信息,-l指定新的登录名称,-d指定新的主目录,如果同时指定-m选项则移动原来用户主目录的内容到新的用户住目录,最后指定原来的登录用户名。
更改用户的全称  
chfn -f new_fullname new_username

chfn命令来修改真实的用户名称和其他相关信息,-f指定新的用户全称,需要修改全称的用户名作为参数
终端方法:以下用newuser代替想要删除的用户账户
在root用户下:userdel -r newuser
在普通用户下:sudo userdel -r newuser
因为需要彻底删除用户,所以加上-r的选项,在删除用户的同时一起把这个用户的宿主目录和邮件目录删除。
单独编译和烧录boot.img的方法:
cd lichee
./build.sh -p sun7i_android
cd android4.4
. ./build/envsetup.sh
lunch 5
extract-bsp
make bootimage
在cmd窗口中:
adb remount
adb push boot.img /data
adb shell
dd if=/data/boot.img of=/dev/block/nandc
sync
reboot
[self]
data = 254
服务器重启网卡及网络的方法:
sudo ifconfig eth0 down
sudo ifconfig eth0 up
sudo /etc/init.d/networking restart
打补丁
patch -bp1 < xxx.patch

参数-b是为了生成一个.orig后缀的备份文件
撤销打的补丁
patch -Rp1 < xxx.patch

需要在打完xxx.patch补丁的基础上执行
在CMD窗口中运行如下命令可以打开当前运行的路径
C:\Users\Administrator> start .
1. 编译方法
#cd lichee/brandy/u-boot-2011.09
#make distclean && make sun7i_config && make -j8
2. 生成文件存放地址
位置:lichee\tools\pack\chips\sun7i\bin\u-boot-sun7i.bin
查看硬盘UUID的方法:
ls -l /dev/disk/by-uuid
添加用户(新增用户):
sudo useradd -m -d /home/user001 -s /bin/bash user001
设置用户密码:
sudo passwd user001
设置samba用户密码:
sudo smbpasswd -a user001
修改windows访问samba的权限:
sudo vim /etc/samba/smb.conf
samba重启命令:
sudo service smbd restart
脱离端口、后台运行命令:
nohup 你的shell命令 &

例子:
nohup make -j24 &
后台执行编译命令的方法:
该命令的一般形式为:nohup command &
使用nohup命令提交作业
如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:
nohup command > myout.file 2>&1 &
在上面的例子中,输出被重定向到myout.file文件中。
使用 jobs 查看任务。
使用 fg %n 关闭。

例如:
nohup ./test-pack_add_userdebug.sh > myout.file 2>&1 &
jobs    //只能在当前窗口未关闭的状态下有效
    [1]+  运行中               nohup ./test-pack_add_userdebug.sh > myout.file 2>&1 &
fg %1   //将1号任务调到前台运行,想关闭可以接着运行Ctrl+c

ps -ef | grep make    //当窗口关闭后,可以执行此命令查看nohup的编译任务
UID       PID   PPID     C STIME   TTY    TIME     CMD
root     18887 18828   0  08:09     pts/0    00:00:00    grep ApacheJetspeed
然后kill -9 +对应的PID
服务器定时关机:
nohup sudo shutdown -h 23:00
使用scp跨服务器传输大文件
拷贝远程服务器的代码到本地:
以拷贝192.168.3.175服务器上的/home/wff_1/A20_linux目录为例:
scp -P22 -r wff_1@192.168.3.175:/home/wff_1/A20_linux /home/extend/wff_2/

如果需要在后台运行则使用下面的方法:
注意末尾不用加&
[mars@gms03 build]$ nohup scp MARS_2.2_1268.tar.gz 10.96.251.72:/data
    nohup: appending output to `nohup.out'
    Password:
输入密码后按:ctrl+z
    [1]+  Stopped                 nohup scp MARS_2.2_1268.tar.gz 10.96.251.72:/data
然后紧接着输入:
[mars@gms03 build]$ bg
    上述命令便又能在后台恢复运行了
    [1]+ nohup scp MARS_2.2_1268.tar.gz 10.96.251.72:/data


#以拷贝192.168.3.175服务器上的/home/wff_1/A20_linux目录为例:
使用scp传输大文件
注意末尾不用加&
[mars@gms03 build]$ nohup scp -P22 -r wff_1@192.168.3.175:/home/wff_1/A20_linux /home/extend/wff_2/
    nohup: appending output to `nohup.out'
    Password:
输入密码后按:ctrl+z
    [1]+  Stopped                 nohup scp -P22 -r wff_1@192.168.3.175:/home/wff_1/A20_linux /home/extend/wff_2/
然后紧接着输入:
[mars@gms03 build]$ bg
    上述命令便又能在后台恢复运行了
    [1]+ nohup scp -P22 -r wff_1@192.168.3.175:/home/wff_1/A20_linux /home/extend/wff_2/
建立软连接:(相当于windows的快捷方式)
ln -s a b     //其中a是源文件名,b是连接文件名
删除软连接
 rm -rf b
//注意不是 rm -rf b/
建立硬连接:
 ln a b
修改system内容后单独编译打包刷机固件的命令:
make systemimage-nodeps
Linux-vim替换命令
写代码时,难免需要替换一些字符串,vim的替换命令如下:
#替换每一行的第一个a
:%s/a/b/

#全部替换
:%s/a/b/g

#替换/时需要转义"\/"
编译时边显示边存储编译信息
make –j24 2>&1 |tee build.log
Find应用实例(查找最近修改的文件)
返回最近24小时内修改过的文件:
find ./ -mtime 0

查找最近30分钟修改的当前目录下的.php文件
find . -name '*.php' -mmin -30

查找最近24小时修改的当前目录下的.php文件
find . -name '*.php' -mtime 0

查找最近24小时修改的当前目录下的.php文件,并列出详细信息
find . -name '*.inc' -mtime 0 -ls

查找当前目录下,最近24-48小时修改过的常规文件。
find . -type f -mtime 1

查找当前目录下,最近1天前修改过的常规文件。
find . -type f -mtime +1
Linux查看命令行历史命令记录(默认1000条命令历史操作记录)
history
history -w history.txt
拷贝的时候,自动创建参数中源文件的路径:
cp --parents parentdir1/parentdir2/sourcefile destdir/

这样拷贝的时候,会在目标路径中创建源文件参数中的所有父目录层级(不止是一层父目录),然后将源文件拷贝进去。
查找指定时间段创建的文件(搜索指定时间段内创建的所有文件)
#!/bin/bash
begintime=`date -d -1hour +%T`
echo $begintime
endtime=`date +%T`
echo $endtime
find  -name '*.jpg' -newermt $begintime  ! -newermt  $endtime

例子:
find  -name '*' -newermt 01:28:49  ! -newermt 03:28:49
windows下查看局域网内所有主机的IP和mac地址:
arp -a
Linux下拷贝文件夹并过滤不想要的文件或目录( cp 指定不拷贝内容
rsync -a --exclude=.git --exclude=.repo /extend01/ssd/MT8735_repo_extend01 ./
"--exclude"排除规则
使用"--exclude"选项指定排除规则,排除那些不需要传输的文件。

[root@xuexi tmp]# rsync -r -v --exclude="anaconda/*.log" /var/log/anaconda /var/log/audit /tmp
sending incremental file list
anaconda/
anaconda/syslog
audit/
audit/audit.log
sent 3365629 bytes  received 58 bytes  6731374.00 bytes/sec
total size is 3365016  speedup is 1.00
上例中只排除了anaconda目录中的log文件,但是audit目录中的log文件是正常传输的。

注意,一个"--exclude"只能指定一条规则,要指定多条排除规则,需要使用多个"--exclude"选项,或者将排除规则写入到文件中,然后使用"--exclude-from"选项读取该规则文件。

另外,除了"--exclude"排除规则,还有"--include"包含规则,顾名思义,它就是筛选出要进行传输的文件,所以include规则也称为传输规则。它的使用方法和"--exclude"一样。如果一个文件即能匹配排除规则,又能匹配包含规则,则先匹配到的立即生效,生效后就不再进行任何匹配。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值