创建一个脚本

 #!/bin/sh  log_path=/cache/boot_logcat.log kernel_log=/cache/boot_kernel.log  while true  do     df | grep cache     cache_check=$?     echo ${cache_check}     if [ ${cache_check} = 1 ]; then         echo "wait for cache!"         sleep 2     else         echo "cache mounted!"         break     fi done  if [ -e ${log_path}".1" ]; then     mv /cache/boot_kernel.log.1 /cache/boot_kernel.log.2     mv /cache/boot_logcat.log.1 /cache/boot_logcat.log.2 fi  if [ -e ${log_path} ]; then     mv /cache/boot_logcat.log /cache/boot_logcat.log.1     mv /cache/boot_kernel.log /cache/boot_kernel.log.1 fi  logcat -v time -b kernel > /cache/boot_kernel.log & logcat -v time > /cache/boot_logcat.log                                                                          

以我的情况为例,我想定位我的机器为什么userdata挂载失败,所以这个脚本会抓logcat到cache分区中。

在initrc中创建service

service logcat  /system/bin/sh /vendor/etc/logcat.sh    class main    user root    group shell log readproc    oneshot    seclabel u:r:qti-testscripts:s0

service的主体是sh,logcat.sh只是作为一个参数传递给shell进行运行。

设备配置

install.sh:

#!/bin/bash#adb wait-for-deviceadb rootadb shell mount -o remount,rw /vendoradb push logcat.sh /vendor/etc/adb push init.target.rc /vendor/etc/init/hw/adb reboot

这个install脚本是在PC上运行的,需要手机连接PC,并且打开开发者权限,我们可以使用adb push我们的测试脚本到机器对应的目录。

思考

1.为什么service中不能直接把主体设置为我们的logcat.sh脚本,而只把logcat.sh作为参数来传递。
原因也简单,因为我们shell是已经有对应的selinux配置了,不必再去修改selinux相关的东西。而如果主体是我们的脚本,那么我们就需要专门为他创建selinux domain等一堆东西。

2.有没有其他方式
除了脚本的方式以外,还可以直接把service设置为logcat,因为脚本本身也是调用的/system/bin/logcat这个可执行文件来抓logcat的。只是这样做,和前面一样,必须要配置相关的selinux权限可以。

更多相关文章

  1. android创建自定义对话框
  2. Android(安卓)API level 与version对应关系(最新整理2017.06.26
  3. 如何把android设备中的固件dump出来
  4. android studio 与gradle的版本对应
  5. 如何查看ADT的版本号
  6. Android(安卓)如何删除短信
  7. android meta-data获取
  8. android 多渠道打包,build.gradle文件配置、manifest文件配置
  9. Android平台开发-3G function porting-3G功能移植

随机推荐

  1. Android(安卓)App程序运行过程 ActivityT
  2. Android(安卓)ROM开发
  3. 使android:fillAfter="true"在xml中起作
  4. Android(安卓)Studio 里搭建自动化测试框
  5. Android动画之帧动画
  6. android hwcomposer 在视频播放中的应用
  7. Android之粘性广播理解
  8. Mac os下android源码下载及安装
  9. Android(安卓)Retrofit 源码系列(五)~ 设计
  10. Android判断当前网络是否可用--示例代码