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. css中单位px,em,rem和vh/vw的理解

    >px像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的. em是相对长度单位.相对于当前对象内文本的字体尺寸.如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认 ...

  2. [SHOI2017]相逢是问候

    Description 信息将你我连结.B君希望以维护一个长度为n的数组,这个数组的下标为从1到n的正整数.一共有m个操作,可以 分为两种:0 l r表示将第l个到第r个数(al,al+1,...,a ...

  3. [USACO16OPEN]关闭农场Closing the Farm_Silver

    题目描述 FJ和他的奶牛们正在计划离开小镇做一次长的旅行,同时FJ想临时地关掉他的农场以节省一些金钱. 这个农场一共有被用M条双向道路连接的N个谷仓(1<=N,M<=3000).为了关闭整 ...

  4. 【译】基于主机的卡仿真(Host-based Card Emulation)

    基于主机的卡仿真(Host-based Card Emulation) 能提供NFC功能很多Android手机已经支持NFC卡模拟.在大多数情况下,该卡是由设备中的单独的芯片仿真,所谓的安全元件.由无 ...

  5. 毕业设计-JSP论文盲审系统

    之前做的一款jsp的论文盲审系统,ssh框架的,学生提交论文,系统管理员将论文分配给教员,教员在不知学员是谁的情况之下,对论文进行打分,然后提交给系统,最后系统发布成绩,供学员查看. 整体做的还不错, ...

  6. SpringCloud学习之sleuth&zipkin

    一.调用链跟踪的必要性 首先我们简单来看一下下单到支付的过程,别的不多说,在业务复杂的时候往往服务会一层接一层的调用,当某一服务环节出现响应缓慢时会影响整个服务的响应速度,由于业务调用层次很“深”,那 ...

  7. python类库numpy中常见函数的用法

    1. numpy.reshape  重塑 reshape是一种函数,函数可以重新调整矩阵的行数.列数.维数. B = reshape(A,m,n) 返回一个m*n的矩阵B, B中元素是按列从A中得到的 ...

  8. Express 配置 https / 443 安全链接

    按照教程已配置成功 前一部分内容参照     https://blog.csdn.net/chenyufeng1991/article/details/60340006 前半部分是生成证书文件,关键部 ...

  9. Dynamics 365中使用Web API将查找字段的值设置为空值的方法。

    摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复270或者20180424可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyon ...

  10. Elasticsearch 学习(二):安装和使用

    一.安装 安装 Elasticsearch 之前,需要先安装 Java,并配置好 Java 环境变量. 安装好 Java 环境后,进入 Elasticsearch 官网下载安装包. 解压安装包,进入解 ...