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应该是比较多的,你输入

  1. logcat

就会和你的IDE一样在刷log了,如果你想过滤,其实也好办

  1. logcat -s TAG

有时候程序突然挂了,而我的IDE也没什么东西,可能抽风了,那怎么办?输入

  1. logcat -s "AndroidRuntime"

如果你的log太多,想保存下来分析的话,你也可以这样

  1. logcat > c:\XX.txt

adb shell

shell下能做很多的事情,常用的是我们Linux命令,我们先来看几个简单的命令吧

  1. su

su是获取权限的意思,这样就有权限查看系统文件了

  1. cat

如果你想查看文本或者其他文本类,比如.java等文件就可以直接cat xxx.txt了,嗯,这些都比较简单,我们想看一下连接的设备可以

  1. adb devices

有设备了,我想安装一个apk,那就很简单咯

  1. adb install c:\\xxx.apk

如果卸载呢?卸载有很多种方式哈,你删掉也是其中一种,先说下正常卸载,那也是你安装的应用才能卸载,系统的应用是不让卸载的,卸载可以用

  1. adb uninstall 包名

如果你想删掉一个系统文件,你会怎么做?首先进入system/app目录下对吧,然后输入

  1. rm -rf xxx.apk

但是,你会看到这样的一个提示

什么?只读文件?我明明已经是#的root管理权限了啊,那我应该怎么做呢?

  1. adb root

首选我们获取一下root,然后

  1. adb remount

切换一下remount模式,这样我们就可以删掉了,那好,问题来了,我们如何用命令启动一个Activity或者一个Servie呢?

首先看下启动Activity,假设我现在有一个程序的包名是com.lgl.test,而我想启动这个MainActivity,服务就是MainService那应该怎么写?首先你得进入shell模式,然后

  1. am start -n com.lgl.test/.MainActivity

启动服务的话

  1. am startservice -n com.lgl.test/.MainService

到这里,一些简单的应该是没什么问题的了

Linux

在shell模式下,你可以看一些权限

  1. ls -l

你可以看到一行有两个root,他们是什么意思呢》左边的是用户组,右边的是用户群组,这个可是在源码编译中有些注意的哟

但是你如果在linux中

你可以看到不管是用户组还是用户群组都是我是用户名,再实际开发中,肯定是我们的文件拥有的权限要大一些,那这些怎么改呢?

左边的可以这么改

  1. sudo chown -R 用户名 文件名

右边

  1. sudo chown -R root:用户名 文件名

这里刚好说到权限的问题,如果你想要一个权限是可读可写的话,你可以这样设置

  1. sudo chmod 777 文件

还有一些简单的,我就直接贴出来

  1. //移动
  2. mv
  3. //复制
  4. cp
  5. //重启
  6. reboot
  7. //我们想重启也可以adb reboot
  8. //创建文件
  9. mkdir
  10. //压缩
  11. tar

这些都是比较常见的了,我们怎么这么快就扯到了Linux?我们的adb还有很多命令没说呢,再来看下我们的的push和pull

想取的系统的文件的文件的话,就需要pull了

  1. adb pull /system/app/phone.apk c:\\

这里我就把这个apk放在了c盘,如果你想把一些文件给塞进去系统,你可以

  1. adb push c:\\phone.apk /system/app/

对了,ls是我们的清单,显示当前目录的文件夹,在Dos下是dir,如果我想在一个目录项回退到上一个目录,可以

  1. cd ..

如果想回退到上上个目录,可以

  1. cd ../..

如果你蛋疼的想回到上上上个目录,那就以此类推了

  1. cd ../../..

好的,我们再来看下剩下的adb命令

adb命令

这部分我也不是很常用

    1. 显示系统中全部Android平台:
  1. android list targets
  • 2.显示系统中全部AVD(模拟器)
  1. android list avd
  • 3.创建AVD(模拟器)
  1. android create avd --name 名称 --target 平台编号
  • 4.启动模拟器
  1. emulator -avd 名称 -sdcard ~/名称.img (-skin 1280x800)
  • 5.删除AVD(模拟器)
  1. android delete avd --name 名称
  • 6.启动DDMS
  1. ddms
  • 7.模拟按键
  1. input keyevent 5

这些就差不多了,有些不行的话,可以尝试在shell模式下进行

编译命令

编译源码的命令大家按照流程走下去应该就可以了,首先熟悉一下linux命令,先从下载源码开始吧

  1. repo init xxx

初始化一下你的空间,这个一般就是闭门服务器的地址,然后同步

  1. repo sync

同步完之后一般有u-boot会先编译u-boot

  1. cd u-boot/
  2. make 产品代码
  3. make

这里三个命令,然后编译完成之后,就有一个uboot.img的镜像了,然后编译内核(Kernel)

  1. cd kernel/
  2. make 产品名

这里每家的芯片都不一样哈,详见编译文档,编译之后我们回到主页面

  1. make -j8

如果想保存日志文件

  1. repo sync > 123.txt

make是编译,后面带的参数是什么呢?是启动的核数,这个你可以根据自己的电脑配置来,编译完成之后

  1. source build/envsetup.sh
  2. lunch

你可以输入lunch选择你要编译的类型

最后执行一下

  1. ./mkimage.sh

就可以生成固件了

m mm mmm

关于这三个的差别,其实就是

  • m : 编译全部
  • mm : 编译当前模块
  • mmm : 编译指定路径

上述有些可能不对称,平台之间还是有些差异性的

monkey

我们调试的时候需要用到monkey 的话可以执行

  1. //对应用做压力测试1W次
  2. monkey -p 包名 --pct-syskeys 0 -v 100000
  3. //对整个系统进行压力测试1000W次
  4. 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. ReactNative Android之原生UI组件动态addView不显示问题解决

    ReactNative Android之原生UI组件动态addView不显示问题解决 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com ...

  2. python 云打码 hhtp接口

    import http.client, mimetypes, urllib, json, time, requests ######################################## ...

  3. nginx方向代理

    nginx 的安装 # yum install nginx 新建配置文件 # vi /etc/nginx/conf.d/resume-xyz-8081.conf 配置 upstream resume ...

  4. [HNOI 2015]菜肴制作

    Description 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予 1到N的顺序编号,预估质量最高的菜肴编号 ...

  5. [HAOI2016]找相同字符

    题目描述 给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数.两个方案不同当且仅当这两个子串中有一个位置不同. 输入输出格式 输入格式: 两行,两个字符串s1,s2,长度分别为 ...

  6. 单纯形求解线性规划(BZOJ1061)

    推荐一篇论文:http://wenku.baidu.com/view/ce5784754a7302768f99391d 我们设xi为第i个志愿者的招募次数,以样例为例,则不难列出如下的线性规划方程: ...

  7. SqlServer 跨网段跨服务器复制

    注意:被同步的表必须有主键,否则无法同步.对数据库进行操作时需要登录服务器,在服务器本地进行操作,远程对数据库进行操作不能完成所有的步骤 准备工作: 1.将发布数据库完整备份到订阅服务器上,并在订阅服 ...

  8. 使用JdbcTemplate过程中使用到多个参数和like模糊

    项目中经常会用到模糊查询,最近使用JdbcTemplate过程中就遇到了. 一开始尝试了拼接的方式去 String sql = "select count(1) from web_users ...

  9. html取地址栏参数的方法

    现在的人写的博客真是日常挖坑 闲的蛋疼 想把所有东西都转成jstl格式 有个界面是取地址栏的信息的 之前用的是 <%--不用jstl的方法直接传递--%> <%--String ro ...

  10. FJUT寒假作业涨姿势题解

    题意非常简单易懂,对于涨姿势0,数据非常小,比较容易想到的是直接循环暴力解题完成任务.把数据放入数组arr,循环i,j控制所有区间算和.结果记入vis. 到了涨姿势1,2,3,我们观察数据变化,发现数 ...