常用命令操作
Linux命令行基础操作教学 #生活知识# #编程教程#
1.日期格式转换:
date -d '1970-01-01 UTC 1514783294 seconds' +"%Y-%m-%d %T %z"
2.so转换成代码行数:
addr2line -C -e **.so -f 0001e91b
3.android studio 下载地址:
https://developer.android.google.cn/studio/
4.
AS升级后,发现原来的代码会生成报出一个:App is not indexable by Google Search; consider adding at least one Activity with an ACTION-VIEW的warning
解决办法:
在app的bulid.gradle 文件中增加下面几行代码来关闭检索的功能。
defaultConfig {
///。。。。。。。。。。。。。。。。///
}
//xucancheng add line begin
lintOptions {
disable 'GoogleAppIndexingWarning'
baseline file("lint-baseline.xml")
}
//xucancheng add line end
重新编译后问题解决。
5.得到屏幕的大小:
5.1
adb shell wm size
5.2
WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display display = manager.getDefaultDisplay(); Point point = new Point(); display.getRealSize(point);
point.x 和point.y便是屏幕实际的宽度和高度。
display.getWidth();//显示的宽度
display.getHeight();//显示的高度
6.常用log关键字:
1,亮灭屏
DisplayManagerService: Display device changed state: "内置屏幕", OFF
DisplayManagerService: Display device changed state: "内置屏幕", ON
2,powermanager接收到power键灭屏:
PowerManagerService: Going to sleep due to power button
3,windowmanager接收到全局按键
WindowManager: interceptKeyTq keycode=26 interactive=false keyguardActive=true policyFlags=2000000
WindowManager: interceptKeyTq keycode=26 interactive=false keyguardActive=true policyFlags=2000000 down =true // 按下
WindowManager: interceptKeyTq keycode=26 interactive=true keyguardActive=false policyFlags=22000000
WindowManager: interceptKeyTq keycode=26 interactive=true keyguardActive=false policyFlags=22000000 down =false // 松开
4.camera service
1,
既然Camera是利用binder通信,它肯定要将它的service注册到ServiceManager里面,
以备后续Client引用,那么这一步是在哪里进行的呢?细心的人会发现,
在frameworks\base\media\mediaserver\Main_MediaServer.cpp下有个main函数,
可以用来注册媒体服务。没错就是在这里,CameraService完成了服务的注册
Main_MediaServer主函数由init.rc在启动是调用,所以在设备开机的时候Camera就会注册一个服务,用作binder通信
2,camera 在servicemanager 完成服务注册,提供给client随时使用。
sp Camera::connect(int cameraId)
{
LOGV("connect");
sp c = new Camera();
const sp& cs = getCameraService();
if (cs != 0) {
c->mCamera = cs->connect(c, cameraId);
}
if (c->mCamera != 0) {
c->mCamera->asBinder()->linkToDeath(c);
c->mStatus = NO_ERROR;
} else {
c.clear();
}
return c;
}
通过getCameraService()函数获取一个Camera服务实例。
const sp& Camera::getCameraService()
{
if (mCameraService.get() == 0) {
sp sm = defaultServiceManager();
sp binder;
do {
binder = sm->getService(String16("media.camera"));
if (binder != 0)
break;
LOGW("CameraService not published, waiting...");
usleep(500000); // 0.5 s
} while(true);
mCameraService = interface_cast(binder);
}
LOGE_IF(mCameraService==0, "no CameraService!?");
return mCameraService;
}
这个调用用来得到一个名称为"media.camera" 的服务,这个调用返回值的类型为IBinder,根据实现将其转换成类型ICameraService使用
7.查看进程的方法
ps -A |grep camera
ps -ef|grep camera
ps -ef 是用标准的格式显示进程的、其格式如下
其中各列的内容意思如下
UID //用户ID、但输出的是用户名
PID //进程的ID
PPID //父进程ID
C //进程占用CPU的百分比
STIME //进程启动到现在的时间
TTY //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。
CMD //命令的名称和参数
8.杀死进程
kill -Signal pid
默认参数下,kill 发送SIGTERM(15)信号给进程,告诉进程,你需要被关闭,请自行停止运行并退出。
kill -9 发送SIGKILL信号给进程,告诉进程,你被终结了,请立刻退出。
TERM(或数字9)表示“无条件终止”;
因此 kill - 9 表示强制杀死该进程;与SIGTERM相比,这个信号不能被捕获或忽略,同时接收这个信号的进程在收到这个信号时不能执行任何清理
9.查看内存信息
dumpsys meminfo cameraserver
10.
grep -nsr "***" .
11.binderDied异常死亡添加log
//Binder机制服务端的具体实现类
class BnXXX: public BnInterface<IXX>
{
public:
virtual status_t onTransact( uint32_t code,
const Parcel& data,
Parcel* reply,
uint32_t flags = 0);
//当Binder机制的客户端死掉,导致了该Binder结束,会回调此方法
void FMRadio::binderDied(const wp<IBinder>& who) {
//输出该Binder进程所在的信息 包括进程Id(pid)等
LOGD("binderDied() 1 %p, tid %d, calling tid %d", who.unsafe_get(), gettid(),
IPCThreadState::self()->getCallingPid());
// do something
}
}
12.
http://gityuan.com/2016/10/02/binder-died/
13.
pid分配上限的查询方式cat /proc/sys/kernel/pid_max,Android系统一般默认为32768。对于pid<300的情况值允许分配一次,不可再改变。也就是进程pid分配范围为(300, 32768);每个pid分配成功,便会把当前的pid设置到last_pid, 那么下次pid的分配便是从last_pid+1开始 往下查找。这就意味着当last_pid+1或者附近的进程,刚被杀并回收该pid,此时再创建新进程,很有可能会复用 pid.位图法记录已分配和未分配pid,由于pid的最大上限为32768,故pidmap采用4KB大小的内存,每一位代表一个进程ID号,正好4K*8=32K= 32768。网址:常用命令操作 https://www.yuejiaxmz.com/news/view/328526
相关内容
Docker常用命令整理实例9、Command 命令模式
Python命令行定时任务自动化工作流程
掌握橱柜设计CAD命令,打造理想厨房空间(橱柜设计cad命令)
节令是一种命令
linux下alias命令详解
Linux命令行效率提升技巧与工具
Linux ===> 实用的8个LINUX命令行监测工具
Commix:自动化命令注入漏洞检测与利用工具
哪些远程操作软件比较好用?