Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令
Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令
我自己平时开发的时候积累的一些命令,希望对你有所帮助
adb是什么?:
adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在IDE中调试Android程序,说白了就是debug工具。adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行Android Studio时adb进程就会自动运行。
adb环境
在我们的sdk目录androidSdk\platform-tools下可以直接使用我们的adb
但是如果你想像JDK一样可以全局使用,那就得配置一下adb的环境了,不然会爆adb找不到的错误,配置环境很简单,把我们的路径加入到我们的PATH路径下就好了,不会的可以搜索
Log
如果只是纯应用开发的话,用到的log应该是比较多的,你输入
logcat
就会和你的IDE一样在刷log了,如果你想过滤,其实也好办
logcat -s TAG
有时候程序突然挂了,而我的IDE也没什么东西,可能抽风了,那怎么办?输入
logcat -s "AndroidRuntime"
如果你的log太多,想保存下来分析的话,你也可以这样
logcat > c:\XX.txt
adb shell
shell下能做很多的事情,常用的是我们Linux命令,我们先来看几个简单的命令吧
su
su是获取权限的意思,这样就有权限查看系统文件了
cat
如果你想查看文本或者其他文本类,比如.java等文件就可以直接cat xxx.txt了,嗯,这些都比较简单,我们想看一下连接的设备可以
adb devices
有设备了,我想安装一个apk,那就很简单咯
adb install c:\\xxx.apk
如果卸载呢?卸载有很多种方式哈,你删掉也是其中一种,先说下正常卸载,那也是你安装的应用才能卸载,系统的应用是不让卸载的,卸载可以用
adb uninstall 包名
如果你想删掉一个系统文件,你会怎么做?首先进入system/app目录下对吧,然后输入
rm -rf xxx.apk
但是,你会看到这样的一个提示
什么?只读文件?我明明已经是#的root管理权限了啊,那我应该怎么做呢?
adb root
首选我们获取一下root,然后
adb remount
切换一下remount模式,这样我们就可以删掉了,那好,问题来了,我们如何用命令启动一个Activity或者一个Servie呢?
首先看下启动Activity,假设我现在有一个程序的包名是com.lgl.test,而我想启动这个MainActivity,服务就是MainService那应该怎么写?首先你得进入shell模式,然后
am start -n com.lgl.test/.MainActivity
启动服务的话
am startservice -n com.lgl.test/.MainService
到这里,一些简单的应该是没什么问题的了
Linux
在shell模式下,你可以看一些权限
ls -l
你可以看到一行有两个root,他们是什么意思呢》左边的是用户组,右边的是用户群组,这个可是在源码编译中有些注意的哟
但是你如果在linux中
你可以看到不管是用户组还是用户群组都是我是用户名,再实际开发中,肯定是我们的文件拥有的权限要大一些,那这些怎么改呢?
左边的可以这么改
sudo chown -R 用户名 文件名
右边
sudo chown -R root:用户名 文件名
这里刚好说到权限的问题,如果你想要一个权限是可读可写的话,你可以这样设置
sudo chmod 777 文件
还有一些简单的,我就直接贴出来
//移动
mv
//复制
cp
//重启
reboot
//我们想重启也可以adb reboot
//创建文件
mkdir
//压缩
tar
这些都是比较常见的了,我们怎么这么快就扯到了Linux?我们的adb还有很多命令没说呢,再来看下我们的的push和pull
想取的系统的文件的文件的话,就需要pull了
adb pull /system/app/phone.apk c:\\
这里我就把这个apk放在了c盘,如果你想把一些文件给塞进去系统,你可以
adb push c:\\phone.apk /system/app/
对了,ls是我们的清单,显示当前目录的文件夹,在Dos下是dir,如果我想在一个目录项回退到上一个目录,可以
cd ..
如果想回退到上上个目录,可以
cd ../..
如果你蛋疼的想回到上上上个目录,那就以此类推了
cd ../../..
好的,我们再来看下剩下的adb命令
adb命令
这部分我也不是很常用
- 显示系统中全部Android平台:
android list targets
- 2.显示系统中全部AVD(模拟器)
android list avd
- 3.创建AVD(模拟器)
android create avd --name 名称 --target 平台编号
- 4.启动模拟器
emulator -avd 名称 -sdcard ~/名称.img (-skin 1280x800)
- 5.删除AVD(模拟器)
android delete avd --name 名称
- 6.启动DDMS
ddms
- 7.模拟按键
input keyevent 5
这些就差不多了,有些不行的话,可以尝试在shell模式下进行
编译命令
编译源码的命令大家按照流程走下去应该就可以了,首先熟悉一下linux命令,先从下载源码开始吧
repo init xxx
初始化一下你的空间,这个一般就是闭门服务器的地址,然后同步
repo sync
同步完之后一般有u-boot会先编译u-boot
cd u-boot/
make 产品代码
make
这里三个命令,然后编译完成之后,就有一个uboot.img的镜像了,然后编译内核(Kernel)
cd kernel/
make 产品名
这里每家的芯片都不一样哈,详见编译文档,编译之后我们回到主页面
make -j8
如果想保存日志文件
repo sync > 123.txt
make是编译,后面带的参数是什么呢?是启动的核数,这个你可以根据自己的电脑配置来,编译完成之后
source build/envsetup.sh
lunch
你可以输入lunch选择你要编译的类型
最后执行一下
./mkimage.sh
就可以生成固件了
m mm mmm
关于这三个的差别,其实就是
- m : 编译全部
- mm : 编译当前模块
- mmm : 编译指定路径
上述有些可能不对称,平台之间还是有些差异性的
monkey
我们调试的时候需要用到monkey 的话可以执行
//对应用做压力测试1W次
monkey -p 包名 --pct-syskeys 0 -v 100000
//对整个系统进行压力测试1000W次
monkey --pct-syskeys 0 -v 10000000
大体的应该是这些常用的吧,如果有后续的话会继续补充,欢迎各位评论
我的群:555974449欢迎一起来玩耍一下
Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令的更多相关文章
- Android源码浅析(三)——Android AOSP 5.1.1源码的同步sync和编译make,搭建Samba服务器进行更便捷的烧录刷机
Android源码浅析(三)--Android AOSP 5.1.1源码的同步sync和编译make,搭建Samba服务器进行更便捷的烧录刷机 最近比较忙,而且又要维护自己的博客,视频和公众号,也就没 ...
- Android开发中常用的库总结(持续更新)
这篇文章用来收集Android开发中常用的库,都是实际使用过的.持续更新... 1.消息提示的小红点 微信,微博消息提示的小红点. 开源库地址:https://github.com/stefanjau ...
- c++实现游戏开发中常用的对象池(含源码)
c++实现游戏开发中常用的对象池(含源码) little_stupid_child2017-01-06上传 对象池的五要素: 1.对象集合 2.未使用对象索引集合 3.已使用对象索引集合 4.当前 ...
- (转) 浅析HTML5在移动应用开发中的使用
(转)浅析HTML5在移动应用开发中的使用 (原)http://www.iteye.com/magazines/67 2012-03-07 来自 UECD.163.com 编辑 wangguo ...
- Android开发中常用Dialog(普通弹窗&时间选择器&日历选择器)
引言 开发中,我们会有很多地方使用 Dialog 来展示一些提示信息或设置信息.如:用户提示.进度展示.时间设置.日期设置等. 下面我和大家一些学习下Android中常用的几种Dialog吧~ * 首 ...
- Android开发中常用的设计模式
首先需要说明的是,这篇博文灵感来自于 http://www.cnblogs.com/qianxudetianxia/archive/2011/07/29/2121547.html ,在这里,博主已经很 ...
- Android 开发中常用 ADB 命令总结
adb 的全称为 Android Debug Bridge,就是起到调试桥的作用.通过 adb 我们可以在 Eclipse 中方便通过 DDMS 来调试 Android 程序,说白了就是 debug ...
- Android开发中常用到方法总结
1.判断服务是否在运行中 public static boolean isServiceRunning(Context context, String serviceName) { boolean ...
- android adt与android sdk有什么关系,他们在开发中各起到什么作用
ADT(Android Development Tools):目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级 ...
随机推荐
- pat 1001 A+B Format
题目链接:传送门 题目简述: 1. 给定两个整数值a,b: 2.范围-1000000 <= a, b <= 1000000: 3.按指定格式输出结果 例:-100000 9 输出: -99 ...
- [POI 2015]Kinoman
Description 共有m部电影,编号为1~m,第i部电影的好看值为w[i]. 在n天之中(从1~n编号)每天会放映一部电影,第i天放映的是第f[i]部. 你可以选择l,r(1<=l< ...
- Educational Codeforces Round 19
A. k-Factorization 题目大意:给一个数n,求k个大于1的数,乘积为n.(n<=100,000,k<=20) 思路:分解质因数呗 #include<cstdio> ...
- [USACO08JAN]跑步Running
题目描述 The cows are trying to become better athletes, so Bessie is running on a track for exactly N (1 ...
- Python3 sys.argv[ ]的用法解释
sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个"外部"很关键,所以那些试图从代码来说明它作用的解释一直没看明白.因为我们从外部取得的参数可以是多个,所以获得的是一 ...
- Awesome-Text-Classification:文本分类资源合集
Awesome-Text-Classification https://github.com/fendouai/Awesome-Text-Classification Projects fastTex ...
- 81. Search in Rotated Sorted Array II (中等)
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- CentOS6.8虚拟机安装及ORALCE安装记录
CENTOS6.8安装数据库及设置自启动脚本教程 作者:张欣橙 本文所需要的所有参数均位于文末附录中 一.新建虚拟机 选择下一步 选择下一步 选择稍后安装操作系统 选择LINUX 版本 CentOS ...
- bootstrap 栅格系统 HTTP协议 软件架构 B/S C/S 常见的WEB服务器
Day32 bootstrap Bootstrap就是响应式布局最成功的实现,为了兼容不同的浏览器采用jQuery,为了适配不同的终端采用CSS3 Media Query (媒体查询) 1.1.1 栅 ...
- 用命令直接在两台ubuntu之间传输数据
首先查看openssh-server是否启动: ps -e | grep ssh 如果没有任何提示则是没有启动: sudo /etc/init.d/ssh -start 启动进程.若提示找不到命令则需 ...