安卓開發常用命令
一、工程編譯命令
1) 全編譯
$ source build/envsetup.sh
$ lunch
$ select one project
$ make -j8
a) 單獨編譯system.img/boot.img/userdata.img/lk
$ make systemimage / make bootimage / make userdataimage/ make aboot
b) 單獨打包system
$ makesnod
c) 編譯sdk
$make sdk
d) 編譯cts
$make cts
e) 清空編譯
$ make installclean
$ make clean
2) 編譯模塊1
$ source build/envsetup.sh
$ lunch
$ select one project [如圖1]
$ make [module name] -j8
[module name]: 請參考Android.mk中的Module Name
3) 編譯模塊2
$ source build/envsetup.sh
$ lunch
$ select one project [如圖1]
$ mmm [module patch]
或
$ cd [module path] ; mm
[module patch]: 要編譯模塊Android.mk所在目錄
二、Linux常用命令
命令 |
描述 |
舉例 |
dmesg |
輸出內核的調試信息,作用和cat /proc/kmsg一樣 |
|
grep |
在*路徑下查找字段"to find something" |
grep -rn “to find something” * |
|
在當前目錄下查找"to find something" |
grep -rn “to find something” ./ |
|
在當前目錄下查找PeopleActivity 並顯示 |
grep PeopleActivity . -rn --color |
find |
在當前目錄下查找aaa.java文件 |
find ./ -name "aaa.java" |
|
在./frameworks 目錄下的java文件中查找 hello字符串 |
find ./frameworks/ -name "*.java" | xargs grep -rn "hello" |
cd |
進入目錄test |
cd test |
|
後退一步 |
cd .. |
|
回上一次所在的目錄 |
cd - |
|
回當前用戶的宿主目錄 |
cd ~ 或 cd |
ls |
顯示當前目錄下的文件 |
ls |
|
列出包含隱藏文件 |
ls -a |
|
列出當前目錄下文件的詳細信息 |
ls -l |
gedit |
打開文件a.txt查看內容 |
gedit a.txt |
cat |
查看文件內容--例如查看ubuntu 版本 |
cat /etc/issue |
|
查看文件內容--例如查看 cpu 信息 |
cat /proc/cpuinfo |
ps |
查看當前有哪些進程 |
ps -A |
top |
查看CPU佔用率最高的應用 |
top -m 10 |
kill |
強制殺死一個進程 |
kill -9 進程號 |
chown |
把 /home 的屬主改成 root 用戶 |
chown chown root /home |
|
殺死一個進程 |
kill 進程號 或 killall 進程名 |
chgrp |
把 /home 的屬組改成 root 組 |
chgrp chgrp root /home |
chmod |
改權限--例如賦予超級權限 |
chmod 777 文件名 |
mkdir |
創建文件夾test |
mkdir test |
cp |
複製文件a.apk到當前目錄下的apps文件夾裏 |
cp a.apk ./apps/ |
|
複製文件夾a到root目錄下 |
cp -r /tmp/a /root/a |
rm |
強制刪除a.log文件 |
rm -f a.log |
|
強制刪除文件夾A |
rm -rf A |
mv |
在當前目錄下改名 |
mv 文件名 新名稱 |
|
移動相對路經下的文件到絕對路經下 |
mv 文件名 /路徑/文件名 |
tar |
解壓a.tar.gz |
tar -zxvf a.tar.gz |
|
將A打包到a.tar.gz |
tar -zcvf a.tar.gz A |
zip |
zip -mr [zipfile] srcfile |
|
unzip |
unzip [zipfile] |
|
shutdown |
電腦在100分鐘後關機 |
sudo shutdown +100 |
apt-get install |
安裝軟件samba |
sudo apt-get install samba |
nautilus |
命令行中圖形打開home目錄 |
nautilus home |
su |
切換到root |
|
passwd |
爲用戶創建密碼 |
passwd 用戶名 |
|
刪除用戶密碼也能登陸 |
passwd -d 用戶名 |
uname |
查看內核版本 |
uname -a |
lsusb |
查看 usb 設備 |
|
printenv |
顯示環境變量--例如查看HOSTNAME |
printenv HOSTNAME |
touch |
已存在文件的時間標籤更新爲系統當前的時間 |
touch a |
|
創建新的空文件 |
touch a |
locate |
查找文件name_file的路徑 |
locate name_file |
ssh |
ssh連接到遠程主機 |
ssh [email protected] -p 22 |
scp |
用於Linux之間複製文件和目錄,基於ssh的cp。需要根據權限輸入密碼 |
把本地文件複製到遠程: |
|
|
scp local_file remote_username@remote_ip:remote_folder |
|
|
從遠程複製文件到本地: |
|
|
scp remote_username@remote_ip:remote_file local_file |
sed |
處理文本文件工具 |
將文件轉換爲Unix格式: |
|
|
$ sed 's/.$//' filename |
export |
設置或顯示環境變量 |
列出當前環境變量 |
|
|
export -p |
|
|
定義環境變量 |
|
|
export MYENV |
pwd |
輸出當前工作目錄 |
|
ftp |
ftp客戶端 |
連接ftp服務器 |
|
|
|
crontab |
計劃任務 |
指定某用戶的計劃任務: |
|
|
crontab -u pico file |
free |
顯示系統當前內存的使用情況,包括已用內存、可用內存和交換內存的情況 |
按照GB顯示 |
|
|
free -g |
top |
顯示系統中佔用資源最多的一些進程,默認以cpu佔用率排序 |
顯式某個特定用戶的進程 |
|
|
top -u mysql |
df |
顯示文件系統的磁盤的使用情況 |
人類可讀方式顯示本地磁盤使用情況: |
|
|
df -hl |
|
|
顯示文件系統類型 |
|
|
df -T |
killall |
終止相關進程 |
killall httpd |
mount |
掛在一個文件系統 |
mkdir /u01 |
|
|
mount /dev/sdb1 /u01 |
ifconfig |
顯示網口配置 |
ifconfig -a |
whereis |
顯示某個命令的位置 |
whereis ls |
whatis |
顯示某個命令的描述 |
whatis ls |
man |
查看某命令的幫助 |
man crontab |
tail |
顯示文件的最後若干行 |
顯示文件的最後100行: |
|
|
tail -n 100 a.conf |
|
|
監視文件變化: |
|
|
tail -f a.conf |
less |
不加載整個文件的前提下顯示文件內容,一般用於查看大型日誌文件 |
less system.log |
yum |
依賴軟件源的包管理工具,自動解決依賴 |
安裝httpd包 |
|
|
yum install httpd |
|
|
更新httpd包 |
|
|
yum update httpd |
|
|
卸載httpd包 |
|
|
yum remove httpd |
rpm |
rpm包管理工具 |
使用rpm安裝apache |
|
|
rpm -ivh httpd-2.2.3-22.0.0.e15.i386.rpm |
|
|
使用rpm更新apache |
|
|
rpm -uvh httpd-2.2.3-22.0.0.e15.i386.rpm |
|
|
卸載apache |
|
|
rpm -ev httpd |
date |
查看和設置系統時間 |
查看系統時間 |
|
|
date |
|
|
設置系統時間 |
|
|
date -s "04/06/2018 12:12:12" |
wget |
下載工具 |
|
curl |
一種根據url的傳輸文件的工具,支持上傳和下載 |
打開某資源: |
|
|
|
|
|
保存資源到文件 |
|
|
三、Adb/調試常用命令
1) Eng或userdebug版本更改系統具備可寫屬性
$ adb root
$ adb disable-verity -- 非必需
$ adb remount
2) 重啓設備
$ adb reboot --重啓設備
$ adb reboot bootloader –進入fastboot下載模式
3) 和PC端互傳文件
$ adb push [本地路徑] [設備裏的路徑/文件名]
$ adb pull [設備裏的路徑/文件名] [本地路徑]
4) 安裝或卸載應用
$ adb install -r [apk路徑]
$ adb uninstall [包名] 或 adb shell rm -rf [設備里路徑]
5) 登錄設備shell
$ adb shell <command命令>
6) 抓取kernel log信息
$ adb shell dmesg
$ adb shell cat /proc/kmsg
7) 抓取logcat log信息
$ adb logcat -v time --打印到控制端
$ adb logcat -v time > logcat.log --將log輸出到文件中
$ adb logcat | grep "^..zhansan" --打印TAG爲zhangsan的信息
$ adb logcat -v time -s zhansan --打印TAG爲zhangsan的信息
$ adb logcat *:W --打印所有優先級高於W的log
$ adb logcat -c --清空已存在日誌
8) Monkey測試命令
$ adb shell monkey -p com.android.dialer -p com.android.contacts -v50000
--Monkey測試Dialer模塊
9) Am命令啓動/關閉應用/服務或發廣播
$ adb shell am start -n packname/activityname --啓動某個activity
$ adb shell am start -ncom.android.music/om.android.music.MusicBrowserActivity
--打開音樂播放器
$ adb shell am start -a android.intent.action.VIEW -d http://www.baidu.com
--打開某個網頁; 這裏-a表示動作,-d表述傳入的數據,還有-t表示傳入的類型
$ adb shell am force-stop <packagename> --強制停止應用
$ adb shell am startservice <服務名稱> --啓動某個服務
$ adb shell am startservice -ncom.android.music/com.android.music.MediaPlaybackService (這裏-n表示組件)
$ adb shell am startservice -a com.smz.myservice (這裏-a表示動作,就是你在Androidmanifest裏定義的)
$ adb shell am broadcast -a <廣播動作> --發送一個廣播
$ adb shell am broadcast -a com.smz.mybroadcast
$ adb shell am kill package --殺死進程
10) 網絡抓包命令
$ adb shell tcpdump -i usb0 -s0 -w /data/local/tmp/`date"+%Y%m%d%H%M%S"`.pcap
$ adb shell tcpdump -i usb0 -s0 -vv tcp port 80 and host hostname
11)svc命令 -- 控制電源、數據流量、wifi、usb的開關狀態
$ adb shell svc wifi enable --打開wifi
12)發送HOME/BACK按鍵事件(其他事件雷同)
$ adb shell input keyevent HOME
$ adb shell input keyevent BACK 或$ adb shell input keyevent 4
13) 設置/獲取系統屬性
$ adb shell setprop [prop name] [prop name]
$ adb shell getprop [prop name]
14) 監聽系統屬性的改變當系統屬性發生改變時輸出改變的系統屬性
$ adb shell watchprops
15) start啓動服務 或 stop停止服務
$ adb shell setprop ctl.start <service>
$ adb shell setprop ctl.stop <service>
16) 內存閾值與應用內存使用狀況
$ adb shell cat /sys/module/lowmemorykiller/parameters/minfree
$ adb shell procmem <process_pid>
$ adb shell dumpsys meminfo <process_pid>
$ adb shell cat /proc/<process_pid>/smaps
$ adb shell dumpsys procstats <process_pid>
$ adb shell procrank
17) dumpsys命令
$ adb shell dumpsys -l --當前運行的服務列表
$ adb shell dumpsys <service> --調用對應service的dump函數
$ adb shell dumpsyspackage -m [packagename] --查看包信息
$ adb shell dumpsys activity activities --查看activity的堆棧信息
$ adb shell dumpsys SurfaceFlinger
--查看SurfaceFlinger狀態,獲取顯示屏信息,當前顯示的應用等
$ adb shell dumpsys cpuinfo
$ adb shell dumpsys meminfo --查看內存狀態
18) screencap 截屏 / screenrecord 錄屏
$ adb shell screencap -p /mnt/sdcard/screen.png
$ adb shell screenrecord --time-limit 10 --bit-rate 6000000/sdcard/demo.mp4
19) strace 用於跟蹤系統調用
$ adb shell strace -f -p <pid>
20) debuggerd 用於輸出進程的native堆棧
$ adb shell debuggerd -b <pid>
21) 查看連接的終端列表
$ adb devices
$ adb -s [指定設備] [cmd]
22) adb連接終端(遠程/ Wifi調試真機)
$ adb tcpip 5555
$ adb connect 192.168.16.222
$ adb connect 192.168.16.222:5555
23) 命令方式開關屏
$ adb shell echo mem>/sys/power/state
$ adb shellecho on>/sys/power/state
24) 串口方式重新掛在/system目錄獲取讀寫權限
$ mount -oremount,rw /system
25) 獲取設備Mac地址
$ adb shell cat /sys/class/net/wlan0/address
26) wm命令
$ adb shell wm size --獲取設備屏幕分辨率
$ adb shell wm size 720x1080 --設置分辨率爲720x1080
$ adb shell wm size reset--恢復屏幕尺寸
$ adb shell wm density --獲取設備密度
$ adb shell wm density 200 --設置設備密度爲200
$ adb shell wm density reset --恢復設備密度
$ adb shell wm overscan 200,300,400,500
--讓界面在靠左200, 靠上300,靠右400 , 靠下500的顯示區域顯示
27) pm包管理
$ adb shell pm list packages --列出所有app的包名
$ adb shell pm path <packageName> --獲取指定包名的存儲路徑
$ adb shell pm clear <packagename> --清除數據與緩存
$ adb shell pm disable [packagename] --禁用應用
$ adb shell pm enable [packagename] --啓用應用
28) ADB Forward
$ adb forward tcp:6100 tcp:7100
--設備和PC端之間直接使用Socket進行通信
29) settings命令 --查看、更改SettingsProvider數據庫的值
$ adb shell settings get global airplane_mode_on --獲取飛行模式狀態
$ adb shell settings put global captive_portal_server neo.picovr.com
--設置captive..值
30) content命令 --對contentprovider數據集進行增刪改查操作
$ adb shell content query --uri content://media/external/images/media
--查看系統media數據庫裏存放的圖片記錄
31) aapt命令 (SDK下的build-tools目錄裏)
查看一個apk包含的資源類信息,比如版本號,權限等
32) 高通平臺“開關bcl”
$ adb shell echo -n disable > /sys/devices/soc/soc:qcom,bcl/mode
$ adb shell echo -n enable > /sys/devices/soc/soc:qcom,bcl/mode
33) Pico自有“更新user版本system分區內容(例如高通配置文件)”
$ adb shell setprop picovr.factorytest.cmd "remount /system"
$ adb shell setprop picovr.factorytest.cmd "cp/sdcard/svrapi_config.txt /system/vendor/etc/qvr/svrapi_config.txt"
34) 查看高通QVRService的信息(6Dof 版本等)
$ adb shell "qvrservicetest -u P
35) 高通平臺CPU/GPU信息查看
adb shell "cat/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies" 查看CPU0可運行的頻率值
adb shell "cat/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq" 查看CPU0運行頻率的最小值
adb shell "cat/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq" 查看CPU0運行頻率的最大值
adb shell "cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor" 查看CPU0當前使用的調節器
adb shell "echo 300000 >/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq" 設置CPU0運行頻率的最小值
adb shell "echo 1593600 >/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq" 設置CPU0運行頻率的最大值
adb shell "echo 'performance'>/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor" 修改CPU0的調節器,默認爲interactive,performance就是運行在允許頻率範圍的最大
adb shell "cat/sys/class/kgsl/kgsl-3d0/devfreq/available_frequencies" 查看GPU的可運行頻率值
adb shell "cat /sys/class/kgsl/kgsl-3d0/devfreq/max_freq" 查看GPU運行頻率的最大值
adb shell "cat/sys/class/kgsl/kgsl-3d0/devfreq/min_freq" 查看GPU運行頻率的最小值
adb shell "cat/sys/class/kgsl/kgsl-3d0/devfreq/governor" 查看GPU當前使用的調節器
adb shell "echo 624000000 > /sys/class/kgsl/kgsl-3d0/devfreq/max_freq"設置GPU運行頻率的最大值
adb shell "echo 180000000 >/sys/class/kgsl/kgsl-3d0/devfreq/min_freq" 設置GPU運行頻率的最小值
adb shell "echo 'performance'>/sys/class/kgsl/kgsl-3d0/devfreq/governor" 設置GPU當前使用的調節器
以下爲8998平臺不停打印cpu0~cpu7的頻率和溫度的腳本,不同平臺需要修改後才能用,主要是溫度節點有區別
adb shell "while true;do echo cpu0;cat/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq;cat/sys/class/thermal/thermal_zone8/temp;echo cpu1;cat/sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq;cat/sys/class/thermal/thermal_zone9/temp;echo cpu2;cat/sys/devices/system/cpu/cpu2/cpufreq/scaling_cur_freq;cat/sys/class/thermal/thermal_zone10/temp;echo cpu3;cat/sys/devices/system/cpu/cpu3/cpufreq/scaling_cur_freq;cat/sys/class/thermal/thermal_zone11/temp;echo cpu4;cat /sys/devices/system/cpu/cpu4/cpufreq/scaling_cur_freq;cat/sys/class/thermal/thermal_zone12/temp;echo cpu5;cat/sys/devices/system/cpu/cpu5/cpufreq/scaling_cur_freq;cat/sys/class/thermal/thermal_zone13/temp;echo cpu6;cat/sys/devices/system/cpu/cpu6/cpufreq/scaling_cur_freq;cat /sys/class/thermal/thermal_zone14/temp;echocpu7;cat /sys/devices/system/cpu/cpu7/cpufreq/scaling_cur_freq;cat/sys/class/thermal/thermal_zone15/temp;echo gpu;cat/sys/class/kgsl/kgsl-3d0/devfreq/cur_freq;cat/sys/class/thermal/thermal_zone18/temp;echo HW Status 0;cat/sys/class/thermal/cooling_device0/cur_state;echo HW Status 1;cat/sys/class/thermal/cooling_device1/cur_state;echo PowerCore;cat/d/clk/pwrcl_clk/measure;echo PerformaceCore;cat /d/clk/perfcl_clk/measure;echomem;cat /sys/kernel/debug/clk/bimc_clk/measure;sleep 1;echo =====;done"
四、Git操作命令
克隆服務器項目
git clone ….
查看某項目的當前分支
git branch
查看某項目的所有分支
git branch -a
切換某個到分支
git checkout ca03(分支名)
提交代碼到服務器
git push origin master:master(主分支名:分支名)}
//提交代碼到服務器
{
gitk 比較修改前,後的代碼
git add . 把代碼到本地
git commit -a 提交到本地的git庫
進入編輯界面之後按i進入編輯模式
編輯完成之後按ESC退出編輯模式
i 進入編輯模式,編寫此次提交的內容
:wq 保存並退出編輯模式
git fetch origin 下載服務器最新代碼
git rebase -i origin/ca03(分支名) 更新服務器代碼到本地合併
:wq 保存退出
假設合併出錯,修改android工程後
git add .
git rebase –continue
:wq
提交合並後的代碼到服務器
git push origin ca03:ca03(主分支名:分支名)
}
將android工程與git關聯
cd到項目根目錄
git init
git status
git add .
git commit -m “初始化倉庫”
git commit --amend --如果需要重新修改提交信息時才用
gitk
五、SVN操作命令
SVN一般安裝“TortoiseSVN”圖形工具使用比較方便
1) 下載主線上的代碼:
svn co svn://192.168.1.122/mtk6572_18 mtkbaseline_6572
svn co svn://192.168.1.122/mt6582_trunk_v16 mtkbaseline_6582
2) 添加新文件 ,後面還是需要commit命令把文件上傳
svn add test_add.java
svn commit -m "add file test_add.java" test_add.java
3) 提交文件
svn commit -m “提交當前目錄下的全部在版本控制下的文件“ *
svn commit -m “提交我的測試用test.php“ test.php
4) 更新文件
svn update
svn update -r 修正版本 文件名
svn update 文件名
svn update <- 後面沒有目錄,默認將當前目錄以及子目錄下的所有文件都更新到最新版本
svn update -r 200 test.cpp <- 將版本庫中的文件 test.cpp 還原到修正版本(revision)200
svn update test.php <- 更新與版本庫同步。 提交的時候提示過期衝突,需要先 update 修改文件, 然後清 除svn resolved,最後再提交commit
5) 刪除文件
svn delete test.php
svn ci -m “刪除測試文件test.php”
6) 如何自動添加目錄下的所有文件,並上傳添加和修改後的所有文件:
svn add * --force
svn commit -m "xxxxxxxxxxxxx"
六、VI常用命令
1) 進入vi的命令
vi filename //打開或新建文件,並將光標置於第一行首
vi +n filename //打開文件,並將光標置於第n行首
2) 屏幕翻滾類命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
3) 最後行方式命令
:w : 保存當前文件
:e filename: 打開文件filename進行編輯
:x: 保存當前文件並退出
:q: 退出vi
:q!: 不保存文件並退出vi
:wq 保存退出