Jelly Bean在硬件上的带起


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上,调试功能接口又增加了一些:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值