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. hadoop一键安装伪分布式

    hadoop伪分布式和hive在openSUSE中的安装 在git上的路径为:https://github.com/huabingood/hadoop--------/tree/master 各个文件 ...

  2. [SHOI 2011]双倍回文

    Description 题库链接 记一个字符串为 \(X\) ,它的倒置为 \(X^R\) .现在给你一个长度为 \(n\) 的字符串 \(S\) ,询问其最长的形同 \(XX^RXX^R\) 的子串 ...

  3. hdu 5880 AC自动机

    Family View Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  4. TDMA over WiFi

    0 引言 TDMA可以修正WiFi中DCF机制中连接速率不同终端间信道占用时间片公平性缺陷,从而提升整体WiFi网络的性能.著名的UBNT的网桥就用其独创的TDMA技术为其赢得了市场.以前是不同的公司 ...

  5. 基于SSM框架实现简单的登录注册

    一.环境配置 工程目录 在pom.xml添加依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=& ...

  6. C语言程序第三次作业

    (一)改错题 计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数. 输入输出样例1: Enterr x: 10.0 f(10.0) = 0.1 输入输出样例2: En ...

  7. Mysql锁机制--写锁

    Mysql 系列文章主页 =============== 1 准备数据 1.1 建表 1.1.1 建立 Employee表 DROP TABLE IF EXISTS employee; CREATE ...

  8. Go实现海量日志收集系统(四)

    到这一步,我的收集系统就已经完成很大一部分工作,我们重新看一下我们之前画的图: 我们已经完成前面的部分,剩下是要完成后半部分,将kafka中的数据扔到ElasticSearch,并且最终通过kiban ...

  9. c# 复制dataset中table结构跟数据

    DataTable dt = new DataTable(); dt = ds.Tables[0].Copy();

  10. redux 最简例子

    方便初学redux的同学学习,这里是最简单的redux例子 1 import React, {Component, PropTypes} from 'react' 2 import ReactDOM ...