读书人

Jelly Bean在硬件下的带起

发布时间: 2012-08-17 02:08:34 作者: rapoo

Jelly Bean在硬件上的带起


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

    重编openGL,错误一堆,主要是几个android_native_buffer接口相关的头文件,都找不到了LOG的打印换了,之前的LOGD,LOGE,现在要用ALOGD,ALOGE来输出了之前写的HAL模块,放进去,基本上都会出现段错误,一个都不能运行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:
Jelly Bean在硬件下的带起

游戏太卡,几乎玩不动。

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

Jelly Bean在硬件下的带起

读书人网 >移动开发

热点推荐