安卓命令linux,安卓命令终端

Android中AM、PM、dumpsys命令使用总结

am指令是 activity manager的缩写,可以启动Service、Broadcast,杀进程,监控等功能,这些功能都非常便捷调试程序。

丹东网站建设公司创新互联,丹东网站设计制作,有大型网站制作公司丰富经验。已为丹东上1000+提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的丹东做网站的公司定做!

可以通过adb shell 进入Android 的Linux命令界面,输入am -help查看详细命令,先介绍几个简单用法,

命令格式如下

命令列表:

原理分析:am命令实的实现方式在Am.java,最终几乎都是调用ActivityManagerService相应的方法来完成的,am monitor除外。比如前面概述中介绍的命令am start -a android.intent.action.VIEW -d , 启动Acitivty最终调用的是ActivityManagerService类的startActivityAsUser()方法来完成的。再比如am kill-all命令,最终的实现工作是由ActivityManagerService的killBackgroundProcesses()方法完成的。

下面说一下[options]和 INTENT参数的意义以及如何正确取值。

主要是启动Activity命令am start [options] INTENT使用options参数,接下来列举Activity命令的[options]参数:

启动Activity的实现原理: 存在-W参数则调用startActivityAndWait()方法来运行,否则startActivityAsUser()。

命令

例如: 向pid=12345的进程,发出level=RUNNING_LOW的收紧内存命令

level取值范围为: HIDDEN、RUNNING_MODERATE、BACKGROUND、RUNNING_LOW、MODERATE、RUNNING_CRITICAL、COMPLETE

am的子命令,startservice, stopservice, broadcast, kill, profile start, profile stop, dumpheap的可选参数都允许设置--user USER_ID。目前市面上的绝大多数手机还是单用户模式,因此可以忽略该参数,默认为当前用户。

例如:启动id=10001的用户的指定service。

Intent的参数和flags较多,为了方便,这里分为3种类型参数,常用参数,Extra参数,Flags参数

实例

(1). 基本类型

参数es是Extra String首字母简称,实例:

(2). 数组类型

参数eia,是Extra int array首字母简称,多个value值之间以逗号隔开,实例:

(3). ArrayList类型

参数efal,是Extra float Array List首字母简称,多个value值之间以逗号隔开,实例:

pm工具为包管理(package manager)的简称,可以使用pm工具来执行应用的安装和查询应用宝的信息、系统权限、控制应用,pm工具是Android开发与测试过程中必不可少的工具,shell命令格式如下:

原理分析:pm命令实的实现方式在Pm.java,最后大多数都是调用PackageManagerService相应的方法来完成的。disbale之后,在桌面和应用程序列表里边都看到不该app。

查看所有的package,

[options]参数:

disabled + enabled = 总应用个数; 系统 + 第三方 = 总应用个数。

查看第3方应用:

查看已经被禁用的包名

FILTER参数

当FILTER为不为空时,则只会输出包名带有FILTER字段的应用;当FILTER为空时,则默认显示所有满足条件的应用。

例如,查看包名带有weather字段的包名

[options]参数:

PATH参数: 指的是需要安装的apk所在的路径

dumpsys是Android自带的强大debug工具,从名字就可以看出,主要是用于dump 当前android system的一些信息,是一项分析手机问题,运行状态,使用情况等十分有效的手段。

实现原理

dumpsys的源码结构其实很简单,只有一个dumpsys.cpp

/frameworks/native/cmds/dumpsys/dumpsys.cpp

先通过defaultServiceManager()函数获得ServiceManager对象,然后根据dumpsys传进来的参数通过函数checkService来找到具体的service, 并执行该service的dump方法,达到dump service的目的。

不同的Android系统版本支持的命令有所不同,可通过下面命令查看当前手机所支持的dump服务,先进入adb shell,再执行如下命令:dumpsys -l。 这些服务名可能并看不出其调用的哪个服务,可以通过下面指令:service list。

服务列表有很多,这里简单介绍几种

通过下面命令可打印具体某一项服务:dumpsys service,其中service便是前面表格中的服务名

接下来主要说下dumpsys activity 用法

命令

options可选值

dumpsys activity等价于依次输出下面7条指令:

cmd可选值

命令

返回结果

上面的输出结果可以分为以下四个部分

也可以只输出某个pid或package的进程信息:

下面以AmberLocker作为实例进行分析

场景1:查询某个App所有的Service状态

解读:Service类名为com.amber.lockscreen.LockerHeartService,包名为mobi.infolife.ezweather.locker.locker_2,baseDir(apk路径)为/data/app/mobi.infolife.ezweather.locker.locker_2-2/base.apk,dataDir((apk数据路径)

运行在进程pid=1115,进程名为进程名为mobi.infolife.ezweather.locker.locker_2,,uid=10060,还有创建时间等信息

场景2:查询某个App所有的广播状态

场景3:查询某个App所有的Activity状态

场景4:查询某个App的进程状态

格式:ProcessRecord{Hashcode pid:进程名/uid},进程pid=941,进程名为mobi.infolife.ezweather.locker.locker_2:live,uid=10060.

该进程中还有Services,Connections, Providers, Receivers,

场景5:查询栈顶Activity

dumpsys 的命令还有很多,这里就不一一列举了。

安卓Linux环境下的dd命令使用总结

dd :用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。

注意:指定数字的地方若以下列字符结尾,则乘以相应的数字: b=512 ; c=1 ; k=1024 ; w=2

参数注释:

4、备份与恢复MBR

·备份文件开始的512个字节大小的MBR信息到指定文件:

#dd if=/system/xbin/busybox of=/data/local/tmp/bb count=1 bs=512

· count=1 指仅拷贝一个块; bs=512 指块大小为512个字节

·恢复:

#dd if=/data/local/tmp/bb of=/data/local/tmp/bbb

·将备份的MBR信息写到磁盘开始部分

/dev/null ,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着!

/dev/zero ,是一个输入设备,你可你用它来初始化文件。该设备无穷尽地提供 0 ,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串 0 。

/dev/null ——它是空设备,也称为位桶( bit bucket )。任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。

安卓用eclipse编程如何调用linux命令?

使用eclipse进行嵌入式Linux的开发环境配置:

1、安装jdk

jdk(java development kit)即java开发包,其中包含了运行eclipse所需要的jre. ubuntu缺省安装的gnu版本的jre运行效率不高,所以需要安装sun公司的jre. 首先从sun的网站上下载安装包jdk-6u7-linux-i586.bin,然后如下进行安装:

# mkdir -p /opt/java

# ./jdk-6u7-linux-i586.bin // 执行自解压文件,生成目录

# mv jdk1.6.0_07 /opt/java // 把目录移到/opt/java下

# cd /opt/java

# ln -s jdk1.6.0_07 jdk

# mv /etc/alternatives/java /etc/alternatives/java.gnu

# ln -s /opt/java/jdk/bin/java /etc/alternatives/java

# export JAVA_HOME=/opt/java/jdk // 设置环境变量

2、安装eclipse和cdt

从eclipse网站上下载安装包eclipse-SDK-3.4-linux-gtk.tar.gz 和cdt-master-5.0.0.zip

# cd /opt

# tar zxvf eclipse-SDK-3.4-linux-gtk.tar.gz // 解压生成eclipse目录

# export PATH=/opt/eclipse:$PATH

# mkdir -p /opt/cdt

# cd /opt/cdt

# unzip cdt-master-5.0.0.zip

# cp -r plugins/* /opt/eclipse/plugins/

# cp -r features/* /opt/eclipse/features/

二、创建c/c++工程

假设已经在linux上安装好了arm交叉工具链,下面介绍如何创建、交叉编译和调试c/c++工程,进入eclipse安装路径后,运行eclipse。

创建c 工程

使用缺省的Linux GCC工具链

进入c/c++ 界面

添加源代码文件1

 

添加源代码文件2

编辑代码

设置工程属性,指定交叉工具链1

设置工程属性,指定交叉工具链2

设置工程属性,指定交叉工具链3

编译工程

已生成arm平台可执行代码

配置调试选项

设置Debugger和 GDB debugger选项

设置连接类型为TCP,目标板的ip地址和调试端口号。端口号任意指定,通常大于1024(避免和系统所用端口号冲突)

在开发板上运行程序,格式如上图所示:gdbserver是交叉调试辅助程序;192.168.0.150是主机的ip地址;1234是调试端口号,和eclipse调试选项里设定的端口号要一致

点击Debug,进入调试界面

执行到断点

eclipse的调试界面和操作和在windows下开发类似。

所需开发工具及环境

虚拟机Linux:Fedora 9

交叉编译工具:arm-linux-gcc-3.4.1.tar.bz2

集成开发工具:Eclipse(Linux安装包中自带的,安装Linux时选中安装)

安装ARM交叉编译器

1. 安装。其实很简单,就是将下载的arm-linux-gcc-3.4.1.tar.bz2解压到Linux根目录即可(因为解压后已经包含了/usr/local目录,所以要解压到根目录),如下命令:

tar -jxvf arm-linux-gcc-3.4.1.tar.bz2 -C /

解压后的目录/usr/local/arm/3.4.1/

2. 设置环境变量。就是把交叉编译器的路径设置到系统环境变量里面去。

echo $PATH

查看现有的环境变量

如果只想临时添加交叉编译器的环境变量(注:临时添加的系统重启或注销后又没有了),只需在命令行输入如下命令:

export PATH=$PATH:/usr/local/arm/3.4.1/bin

如果想这个环境变量永久的添加到系统的环境变量中,则你只需把这个命令添加到/root/.bashrc文件的最后一行即可(这个文件是隐藏文件,你要在文件浏览器中单击查看菜单,勾选显示隐藏文件才能看到)

3. 测试建立的交叉编译环境。新建一个c程序,文件名:test.c, 如下:

#include stdio.h

int main(void)

{

printf("Hellow world!\n");

return 0;

}

进行交叉编译,如下:

arm-linux-gcc -o test test.c

将交叉编译好的目标文件test下载到ARM开发板中并运行,如下:

./test

输出结果为:

Hellow world!

用集成开发工具Eclipse来开发嵌入式应用程序

双击Eclipse图标启动Eclipse

设置Eclipse的工作空间,就是选个目录,单击OK

启动后的主界面

开始新建一个应用程序工程

选择新建一个C工程,单击Next

给工程取个名字,这里我就叫test_app;然后选择工程类型,我选择了个Hellow world C工程模版,单击Next

填写作者、版权等信息,单击Next

没什么选的,点击Finish

单击Yes

新建好的项目工程

展开左边的源代码目录,双击打开主函数。这里只是输出一句"Hello World!!!",你可以做一些其他复杂的应用

单击Project菜单,去掉Build Automatically的勾选,因为勾选的话,每次修改一个地方工程都会自动进行编译

打开工程的属性对话框进行编译选项的设置

我们的应用程序最终要到嵌入式arm上运行,这里就要把gcc改成arm-linux-gcc编译器,当然前提是你要在你的开发主机上先安装arm-linux-gcc

C连接器也要改成arm-linux-gcc

这里的Libraries是设置你的应用程序中用到的库文件,比如应用程序中用到了线程类,则这里在上面添加pthread这个库,下面就添加这个库的路径。如果应用程序没用到任何库文件就不用管了

选中左侧的工程名,右键,在弹出的菜单中选择Build Project编译工程

编译好后的工程,目标文件在Debug目录下

android 中linux 命令pm常见用法(安装卸载app)

27种用法格式 :

用法说明 :

1、 pm list packages : prints all packages, optionally only those whose package name contains the text in FILTER. Options:

例子:列出系统中所有packages

2、 pm list permission-groups : prints all known permission groups.

例子:

3、 pm list permissions : prints all known permissions, optionally only those in GROUP. Options:

例子:列出系统所有许可

4、 pm list instrumentation : use to list all test packages; optionally supply to list the test packages for a particular application. Options:

-f: list the .apk file for the test package.

5、 pm list features : prints all features of the system.

例子:列出所有手机特性

6、 pm list users : prints all users on the system.

例子:

7、 pm path : print the path to the .apk of the given PACKAGE.

例子:按包名查找apk文件所在路径

8、 pm dump : print system state associated with the given PACKAGE.

9、 pm install : installs a package to the system. Options:

例子:

10、 pm uninstall : removes a package from the system. Options:

-k: keep the data and cache directories around after package removal. 保留数据

例子:

11、 pm clear : deletes all data associated with a package..

例子:只删除数据

12、 pm enable, disable, disable-user, disable-until-used : these commands change the enabled state of a given package or component (written as "package/class").

13、 pm grant, revoke : these commands either grant or revoke permissions to applications. Only optional permissions the application has declared can be granted or revoked.

14、 pm get-install-location : returns the current install location.

15、 pm set-install-location : changes the default install location.

NOTE: this is only intended for debugging; using this can cause applications to break and other undersireable behavior.

16、 pm trim-caches : trim cache files to reach the given free space.

17、 pm create-user : create a new user with the given USER_NAME, printing the new user identifier of the user. 创建新用户

18、 pm remove-user : remove the user with the given USER_IDENTIFIER, deleting all data associated with that user 。 按用户ID删除用户

如何打开android命令行终端

1、连接电脑上,用adb打开,android命令行终端即可。

2、如果你想直接在android上打开,可以安装一个android terminal,在手机上使用linux命令行。

扩展资料:

终端命令sudo: Executing Commands with Elevated Privileges 执行命令特权 sudo是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登陆 和管理时间,同样也提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的。

app_0是用户名,也就是终端在系统中的名字。android是主机名/ 表示当前路径。

这些信息存储在变量PS1中,自己可以改变。改成彩色更加美观,而且输入命令后更加容易找到提示符。有一个重要的基本变量是PATH,这叫命令搜索路径。

参考资料:安卓中文网--在手机端使用命令行刷入Recovery教程详解


分享文章:安卓命令linux,安卓命令终端
URL分享:http://scyanting.com/article/hsjdso.html