Android内置的Factory Test(有测试模式/工厂模式/工程模式等叫法)框架

Android框架中已经对FactoryTest做了支持,通过一些配置和开发工作就可以把FactoryTest代码融入到Android系统中。

一、FactoryTest级别的定义

Android系统中在com.android.server.SystemServer(loc:frameworks/base/services/java/)中对FactoryTest的级别做了定义:

[java] view plain copy
  1. publicstaticfinalintFACTORY_TEST_OFF=0;
  2. publicstaticfinalintFACTORY_TEST_LOW_LEVEL=1;
  3. publicstaticfinalintFACTORY_TEST_HIGH_LEVEL=2;

  • FACTORY_TEST_OFF是正常模式;
  • FACTORY_TEST_LOW_LEVEL是工程模式做在较低的级别,也就是运行工程模式的时候,很多的service并不需要启动;
  • FACTORY_TEST_HIGH_LEVEL是工程模式做在较高的级别,也就是运行工程模式的时候,基本的Android运行环境是同正常模式是相同的。在原生的实现中,与正常模式相比除了ActivityManagerService外并没有太多不同。

后面着重来看FACTORY_TEST_LOW_LEVEL,也用此模式来代替FactoryTest的表述。

=================================知识介绍结束===================================

一,Android FactoryTest 流程:

当设置了启动模式是工厂模式后,开机启动后进入工厂测试程序,

让工厂测试测序启动后,自动安步骤或者循环运行测试项目,显示测试结果。

二,Android FactoryTest 设置:

1 FactoryTest应用的配置

由上面简要分析知道,FACTORY_TEST_LOW_LEVEL模式下,第一个被启动的程序就是工程模式的测试程序,而这个程序必须:

  • 有响应Action为Intent.ACTION_FACTORY_TEST(“android.intent.action.FACTORY_TEST”)的Activity;
  • 另外,这个程序还必须获取“android.permission.FACTORY_TEST”;
  • 这个程序必须为系统内置程序(安装在/system/app/)

响应Action为Intent.ACTION_FACTORY_TEST (“android.intent.action.FACTORY_TEST”)的Activity在开机之后就被执行。

2 启动模式设置

启动模式是由“ro.factorytest”这个系统属性来决定的,取值范围是0/1/2,对应第一部分定义的三个级别模式。可在在.mk文件中通过PRODUCT_PROPERTY_OVERRIDES或ADDITIONAL_DEFUALT_PROPERTIES追加一个这样的属性。比如:

[plain] view plain copy
  1. #FactoryTestLowLevel
  2. PRODUCT_PROPERTY_OVERRIDE+=ro.factorytest=1

3 内核启动模式

有些实现通过上面的设置还不起作用,那是因为在内核启动时,通过启动模式对“ro.factorytest”这个系统属性进行了设置。

理想状态是由内核来决定启动模式,而不需要上小节的设置。

内核通过参数“androidboot.mode”来决定工厂模式(”factory”对应FACTORY_TEST_LOW_LEVEL;”factory2”对应FACTORY_TEST_HIGH_LEVEL;其他值或未设置对应”factory”对应FACTORY_TEST_OFF)。

上面需要内核支持,不支持的话就固定为正常模式。

所以,如果内核不支持,可以直接把init.c中判断“androidboot.mode”而设置“ro.factorytest”的代码暂时屏蔽,直接用上节所说的“ro.factorytest”来决定Factory的模式。

这里工厂测试的程序要怎么写,也记录下:

1,手机信息

wifi,声音,。。。

2,电池信息

更多相关文章

  1. android 录音和播放
  2. Android实现动态显示或隐藏密码输入框的内容
  3. Android利用setLayoutParams在代码中调整布局(Margin和居中)
  4. Android布局_View属性
  5. android 关于程序升级问题
  6. EditText 的常用属性与解释
  7. android 为摄像头增加闪光灯(s5pv210)
  8. android启动--深入理解zygote
  9. activity启动模式

随机推荐

  1. android一个简单的线程实例
  2. android第三天--AbsoluteLayout绝对布局
  3. Android控件之——输入框TextInputLayout
  4. 像素鸟(flapybird)的简单实现
  5. android面试题(1)
  6. [Android]获取网络连接状态
  7. Android使用selector改变文字的颜色
  8. android中ProgressBar的使用SeekBar的使
  9. Android 可選文件格式瀏覽器
  10. Android xposed Hook 初探01