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命令

这部分我也不是很常用

    1. 显示系统中全部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命令,源码编译命令的更多相关文章

  1. Android源码浅析(三)——Android AOSP 5.1.1源码的同步sync和编译make,搭建Samba服务器进行更便捷的烧录刷机

    Android源码浅析(三)--Android AOSP 5.1.1源码的同步sync和编译make,搭建Samba服务器进行更便捷的烧录刷机 最近比较忙,而且又要维护自己的博客,视频和公众号,也就没 ...

  2. Android开发中常用的库总结(持续更新)

    这篇文章用来收集Android开发中常用的库,都是实际使用过的.持续更新... 1.消息提示的小红点 微信,微博消息提示的小红点. 开源库地址:https://github.com/stefanjau ...

  3. c++实现游戏开发中常用的对象池(含源码)

    c++实现游戏开发中常用的对象池(含源码) little_stupid_child2017-01-06上传   对象池的五要素: 1.对象集合 2.未使用对象索引集合 3.已使用对象索引集合 4.当前 ...

  4. (转) 浅析HTML5在移动应用开发中的使用

    (转)浅析HTML5在移动应用开发中的使用 (原)http://www.iteye.com/magazines/67   2012-03-07  来自 UECD.163.com  编辑 wangguo ...

  5. Android开发中常用Dialog(普通弹窗&时间选择器&日历选择器)

    引言 开发中,我们会有很多地方使用 Dialog 来展示一些提示信息或设置信息.如:用户提示.进度展示.时间设置.日期设置等. 下面我和大家一些学习下Android中常用的几种Dialog吧~ * 首 ...

  6. Android开发中常用的设计模式

    首先需要说明的是,这篇博文灵感来自于 http://www.cnblogs.com/qianxudetianxia/archive/2011/07/29/2121547.html ,在这里,博主已经很 ...

  7. Android 开发中常用 ADB 命令总结

    adb 的全称为 Android Debug Bridge,就是起到调试桥的作用.通过 adb 我们可以在 Eclipse 中方便通过 DDMS 来调试 Android 程序,说白了就是 debug ...

  8. Android开发中常用到方法总结

    1.判断服务是否在运行中 public static boolean isServiceRunning(Context context, String serviceName) {  boolean ...

  9. android adt与android sdk有什么关系,他们在开发中各起到什么作用

    ADT(Android Development Tools):目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级 ...

随机推荐

  1. django 模板继承与重写

    1.模板的继承一般用在别人给我们做好的HTML页面,当我们发现有很多的页面都具有相同的部分,这会我们应该考虑怎么能把他们相同的部分给提取出来,提取出来的部分我们作为一个单独的HTML文件叫做base. ...

  2. python day two,while

    一.运算符号 算数运算符:+ .-.*././/(取整除).%(去余).** 比较运算符:>.< .>=.<=.== 赋值运算符:=.+=.-=./=.%=.**= 逻辑预算符 ...

  3. pwd

    显示当前在文件系统里的确切位置 注: 系统根目录是/ 用户主目录是/home/用户名 对于root用户,用户主目录为/root

  4. JS点击按钮打开新的独立页面

    工作中遇到需要点击按钮弹出一个独立的页面,并显示指定内容的问题,查了一些资料后,得到以下方法: window.open('locationPage.html', '_blank', 'height=1 ...

  5. [SCOI 2012]滑雪与时间胶囊

    Description a180285非常喜欢滑雪.他来到一座雪山,这里分布着M条供滑行的轨道和N个轨道之间的交点(同时也是景点),而且每个景点都有一编号i(1<=i<=N)和一高度Hi. ...

  6. ●ZOJ 2112 Dynamic Rankings

    ●赘述题目 对于一个长为n(n<50000)的序列(序列中的数小于1000000000),现有如下两种指令: Q a b c:询问区间[a,b]中第c小的数. C p b:将序列中的从左往右数第 ...

  7. HDU2108和HDU2036(叉乘)

    hdu2108 判断是否为凸边形 判断连续三点的叉乘 若为凸,内角<180:若为凹,内角>180 所以通过正负来判断 #include <iostream> #include ...

  8. 2015 多校联赛 ——HDU5323(搜索)

    Solve this interesting problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  9. [Noi2013]矩阵游戏

    来自FallDream的博客,未经允许,请勿转载,谢谢. 婷婷是个喜欢矩阵的小朋友,有一天她想用电脑生成一个巨大的n行m列的矩阵(你不用担心她如何存储).她生成的这个矩阵满足一个神奇的性质:若用F[i ...

  10. final、finally与finalize的区别

    1. final  在java中,final可以用来修饰类,方法和变量(成员变量或局部变量).下面将对其详细介绍. 1.1 修饰类 当用final修饰类的时,表明该类不能被其他类所继承.当我们需要让一 ...