Jelly Bean在硬件上的带起

来源:互联网 发布:opencv 字符旋转 算法 编辑:程序博客网 时间:2024/05/16 01:28


Jelly Bean的发布已经有几天了,上周我们尝试了下将其在我们的机器上带起,折腾了半天,总算是起来了,不过发现些问题,先总结一下.

  1. 重编openGL,错误一堆,主要是几个android_native_buffer接口相关的头文件,都找不到了
  2. LOG的打印换了,之前的LOGD,LOGE,现在要用ALOGD,ALOGE来输出了
  3. 之前写的HAL模块,放进去,基本上都会出现段错误,一个都不能运行
  4. openGL驱动引起的段错误,满屏满屏的滚

这几个问题:

  • openGL的编译问题,是因为google整理了他们的文件命名方式,现在那个头文件统一叫 ANativeObjectBase.h,放在 /frameworks/native 下了。
  • HAL的段错误问题,原因也是找到了,是HMI(HAL module Info)在各个HAL中,被定义成const型了,但在hardware.c的load函数中,会有
     hmi->dso = handle; 
    修改了只读变量,这在JB上会造成段错误而crash,但之前版本不会,应该是新增的编译选项引起的吧。
  • openGL的问题,需要厂商重新给驱动了,这没法把。JB的新增功能vsync,看其中很多工作是要hwcomposer来实现,看来一时半会这个搞不定。

初步带起,不用openGL,慢就慢点,先看看功能和其他地方。目前我禁用hardware openGL方法是:
系统BoardConfig中,将USE_HW_COMPOSER设为false,同时拦下harwareAccelerated的请求,用soft路子的skia实现。
如 frameworks/base/core/java/android/view/Window.java

 LocalWindowManager(WindowManager wm, boolean hardwareAccelerated) {            super(wm, getCompatInfo(mContext));           // mHardwareAccelerated = hardwareAccelerated ||            //        SystemProperties.getBoolean(PROPERTY_HARDWARE_UI, false);   mHardwareAccelerated = false;        }


还有其他地方,可以搜下源码,将所有hardwareAccelerated 赋值的地方改成false就好。

将wallpaper去掉,老死掉,现阶段还不想看它,禁用方法:
修改 frameworks/base/core/res/res/values/config.xml

    <!-- True if WallpaperService is enabled -->    <!-- Temporarily set to false until openGL is ready. -->    <bool name="config_enableWallpaperService">false</bool>

 

完成后,编译固件,烧写,装几个apk:

游戏太卡,几乎玩不动。

 

JB上,调试功能接口又增加了一些:

原创粉丝点击