Lenovo k860i 移植Android 4.4 cm11进度记录【下篇--实时更新中】

2014.8.24

k860i的cm11的移植在中断了近两三个月之后又开始继续了,进度记录的日志上一篇已经没什么写的了,就完结掉它吧,重新开一篇日志做下篇好了。最近的战况是,在scue同学的努力之下,device部分已经可以通过编译,而且也拿到了官方给的一些源码(目前有没有用还不知道,不过可以编译通过),不过呢,坏消息是scue同学由于工作比较忙,已经全面放弃对k860i的努力。

现在遇到了一些问题,使用官方的源码,编译上cm11,刷入之后会出现开机第二屏黑屏的问题,抓了logcat,发现应该是surfaceflinger和hwcomposer部分没起来,surfaceflinger一直崩溃如此循环,部分logcat如下:

--------- beginning of /dev/log/system

I/auditd ( 1372): Starting up

--------- beginning of /dev/log/main

I/cm ( 1367): ____ _ _ ____ _ _ ____ ____ ____ _ _ _ _ ____ ___

I/cm ( 1383): | \_/ |__| |\ | | | | __ |___ |\ | |\/| | | | \

I/cm ( 1384): |___ | | | | \| |__| |__] |___ | \| | | |__| |__/

I/cm ( 1387): Welcome to Android 4.4.4 / CyanogenMod-11-20140822-UNOFFICIAL-stuttgart

I/DEBUG ( 1374): debuggerd: Aug 22 2014 21:12:40

I/installd( 1380): installd firing up

I/audit_log( 1372): Previous audit logfile detected, rotating

I/Vold ( 1370): Vold 2.1 (the revenge) firing up

... ...

I/SurfaceFlinger( 1376): SurfaceFlinger is starting

I/SurfaceFlinger( 1376): SurfaceFlinger‘s main thread ready to run. Initializing graphics H/W...

D/libEGL ( 1376): loaded /system/lib/egl/libEGL_mali.so

D/libEGL ( 1376): loaded /system/lib/egl/libGLESv1_CM_mali.so

D/libEGL ( 1376): loaded /system/lib/egl/libGLESv2_mali.so

E/ ( 1376): Device driver API match

E/ ( 1376): Device driver API version: 20

E/ ( 1376): User space API version: 20

E/ ( 1376): mali: REVISION=Linux-r3p2-01rel2 BUILD_DATE=Thu Aug 29 15:22:27 CST 2013

I/gralloc ( 1376): using (fd=16)

I/gralloc ( 1376): id = s3cfb

I/gralloc ( 1376): xres = 720 px

I/gralloc ( 1376): yres = 1280 px

I/gralloc ( 1376): xres_virtual = 720 px

I/gralloc ( 1376): yres_virtual = 2560 px

I/gralloc ( 1376): bpp = 32

I/gralloc ( 1376): r = 16:8

I/gralloc ( 1376): g = 8:8

I/gralloc ( 1376): b = 0:8

I/gralloc ( 1376): width = 114 mm (160.421051 dpi)

I/gralloc ( 1376): height = 203 mm (160.157639 dpi)

I/gralloc ( 1376): refresh rate = 60.38 Hz

I/SurfaceFlinger( 1376): Using composer version 1.0

W/SurfaceFlinger( 1376): getting VSYNC period from fb HAL: 16561775

W/SurfaceFlinger( 1376): no suitable EGLConfig found, trying a simpler query

I/SurfaceFlinger( 1376): EGL informations:

I/SurfaceFlinger( 1376): vendor : Android

I/SurfaceFlinger( 1376): version : 1.4 Android META-EGL

I/SurfaceFlinger( 1376): extensions: EGL_KHR_get_all_proc_addresses EGL_ANDROID_presentation_time EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image
EGL_KHR_gl_renderbuffer_image EGL_KHR_reusable_sync EGL_KHR_fence_sync EGL_EXT_create_context_robustness EGL_ANDROID_image_native_buffer EGL_ANDROID_recordable

I/SurfaceFlinger( 1376): Client API: OpenGL_ES

I/SurfaceFlinger( 1376): EGLSurface: 8-8-8-0, config=0x60000012

I/SurfaceFlinger( 1376): OpenGL ES informations:

I/SurfaceFlinger( 1376): vendor : ARM

I/SurfaceFlinger( 1376): renderer : Mali-400 MP

I/SurfaceFlinger( 1376): version : OpenGL ES 2.0

I/SurfaceFlinger( 1376): extensions: GL_EXT_debug_marker GL_OES_texture_npot GL_OES_compressed_ETC1_RGB8_texture GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_depth24 GL_ARM_rgba8
GL_ARM_mali_shader_binary GL_OES_depth_texture GL_OES_packed_depth_stencil GL_EXT_texture_format_BGRA8888 GL_EXT_blend_minmax GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_rgb8_rgba8 GL_EXT_multisampled_render_to_texture GL_EXT_discard_framebuffer GL_OES_get_program_binary
GL_ARM_mali_program_binary GL_EXT_shader_texture_lod GL_EXT_robustness GL_OES_depth_texture_cube_map

I/SurfaceFlinger( 1376): GL_MAX_TEXTURE_SIZE = 4096

I/SurfaceFlinger( 1376): GL_MAX_VIEWPORT_DIMS = 4096

E/cutils-trace( 1376): Error opening trace file: No such file or directory (2)

E/[EGL-ERROR]( 1376): mali_surface* __egl_platform_create_surface_from_native_buffer(android_native_buffer_t*, egl_surface*, mali_base_ctx_handle):614: invalid buffer handle given (0x411008f0)

E/[EGL-ERROR]( 1376): void __egl_platform_dequeue_buffer(egl_surface*):1629: Failed to create a surface from native buffer (0x41100860)

E/libEGL ( 1376): eglMakeCurrent:784 error 3003 (EGL_BAD_ALLOC)

E/libEGL ( 1376): call to OpenGL ES API with no current context (logged once per thread)

D/SurfaceFlinger( 1376): Screen acquired, type=0 flinger=0x414c7450

F/libc ( 1376): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 1376 (surfaceflinger)

D/libEGL ( 1459): loaded /system/lib/egl/libEGL_mali.so

D/libEGL ( 1459): loaded /system/lib/egl/libGLESv1_CM_mali.so

D/libEGL ( 1459): loaded /system/lib/egl/libGLESv2_mali.so

E/ ( 1459): Device driver API match

E/ ( 1459): Device driver API version: 20

E/ ( 1459): User space API version: 20

E/ ( 1459): mali: REVISION=Linux-r3p2-01rel2 BUILD_DATE=Thu Aug 29 15:22:27 CST 2013

E/cutils-trace( 1459): Error opening trace file: No such file or directory (2)

E/[EGL-ERROR]( 1459): mali_surface* __egl_platform_create_surface_from_native_buffer(android_native_buffer_t*,
egl_surface*, mali_base_ctx_handle):614: invalid buffer handle given (0x40092360)

E/[EGL-ERROR]( 1459): void __egl_platform_dequeue_buffer(egl_surface*):1629: Failed to create a surface
from native buffer (0x40092230)

E/libEGL ( 1459): eglMakeCurrent:784 error 3003 (EGL_BAD_ALLOC)

I/DEBUG ( 1374): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

I/DEBUG ( 1374): Build fingerprint: ‘Lenovo/cm_stuttgart/stuttgart:4.4.4/KTU84Q/149b325933:userdebug/test-keys‘

I/DEBUG ( 1374): Revision: ‘0‘

I/DEBUG ( 1374): pid: 1376, tid: 1376, name: surfaceflinger >>> /system/bin/surfaceflinger <<<

I/DEBUG ( 1374): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000

我感觉如果把这个问题给解决了的话,离cm11进桌面应该就不远了。

当然最近也有一些好消息。

偶然间从cm的github的smdk4412内核的commit记录里面找到了不少的好东西,比如内核开启selinux(对于4.3、4.4很重要),又比如解决使用arm-linux-gcc 4.7版编译这个内核出现的一堆inline函数定义的编译错误的解决方法等等,开源的力量就是强大啊,这个内核的commit次数居然高达25万多次。。。。地址是https://github.com/CyanogenMod/android_kernel_samsung_smdk4412/tree/stable/cm-11.0

之前由于使用arm-linux-gcc 4.7编译内核会出现inline函数定义的错误,所以导致编译cm11的时候只能使用预编译的内核,因为cm11编译过程中会使用4.7版的arm-linux-gcc,而联想给的内核源码之前只有使用4.6版的arm-linux-gcc才不会有问题。cm官方是推荐使用内核源码跟cm11的源码树一起编译,官方的解释是在这里 http://wiki.cyanogenmod.org/w/Doc:_integrated_kernel_building。解决了4.7版的toolchain编译内核的错误之后,就可以让内核源码跟cm11一起编译了。相关的commit在这里https://github.com/CyanogenMod/android_kernel_samsung_smdk4412/commit/49c33dab8b7a57780affea28db976ccab8dc345b
需要注意的是文件名不完全一致,drivers/media/video/exynos/fimc-lite/fimc-lite-core.c和fimc-lite.core.h是对的,删掉inline定义的地方也是一样的,但是在这个commit里面提到的另外两个文件,drivers/video/samsung_extdisp/s3cfb_extdsp.h 和s3cfb_extdsp_main.c,文件名有差异,在联想的内核源码里面,应该是drivers/video/samsung/s3cfb.h和s3cfb_main.c,修改的行数略有差异,但实际上也都是去掉inline的定义。

另外一个是selinux的问题了,相关的commit在这里 https://github.com/CyanogenMod/android_kernel_samsung_smdk4412/commit/84c11baf1cd2873665c9bd51f720ee3d83faefa2 ,这个commit里面包含了多个机器的内核defconfig,实际上只需要对照它修改ki的官方内核源码的kernel/arch/arm/configs/stuttgart_android_defconfig这个文件,对照着上面的commit里面的某个内核的defconfig依样画葫芦添加修改就可以了。其实还可以在内核根目录用make
menuconfig或make nconfig自己手工开启selinux的支持,不过既然有现成的可以直接用,那也大可不必自己再修改了。

还是得学习一下git的使用啊,要把这些东西都上传到github上面去,不然管理这些东西实在是太麻烦了。

时间: 2024-11-10 13:10:55

Lenovo k860i 移植Android 4.4 cm11进度记录【下篇--实时更新中】的相关文章

Lenovo k860i 移植Android 4.4 cm11进度记录--实时更新中

http://quick.xiangrikui.com/blog/3687931.html http://quick.xiangrikui.com/blog/3688021.html http://quick.xiangrikui.com/blog/3688337.html http://quick.xiangrikui.com/blog/3688403.html http://quick.xiangrikui.com/blog/3688507.html http://quick.xiangri

[转]Android开发要看的网站(不断更新中)

Android网址或Blog Android官网 身为Android开发者不知道这个网站就太说不过去了,上面有你任何你需要的东西 Android Developers Blog Android官网博客, 在上面可以关注Android最新的进展与最权威的博客(须翻墙) Android开源项目汇总 我的好朋友Trinea整理的非常全面的GitHub开源项目汇总,不需要重复发明轮子,尽情遨游在开源世界里吧 Android的开源库 国外整理的Android开源库汇总,和上面的比起来分类更明确,你总能很方

Android学习笔记48:使用Handler实时更新UI

在Android中,主要通过MessageQueue.Looper和Handler三个类来实现Android应用程序的消息处理.其中,MessageQueue类用来描述消息队列:Looper类用来创建消息队列,以及进入消息循环:Handler类则用来发送消息和接收消息. 本文将主要对Handler进行简要介绍,并以一个简单的实例演示如何使用Handler实时更新UI. 1.Handler的作用 在Android中,当应用程序启动时,Android系统会启动一个主线程(也被称为UI线程),主要用来

android开发文档工具集(持续更新中...)

http://www.androiddevtools.cn/ android 产品->交互->视觉->开发->测试各种工具地址下载, 各种文档下载应有尽有,强烈推荐. https://nimbledroid.com app性能测试网站,尤其是计算你的apk的包大小,很详细 使用方式也很方便,上传你的apk即可. https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ android源码下载网站,对于不能FQ的人来说,很爽. https://w

cocos2d-x 移植android横竖横屏设置

AndroidManifest.xml中android:screenOrientation字段控制屏幕方向,默认情况是横屏 android:screenOrientation="landscape" //横屏 android:screenOrientation="portrait"//坚屏 cocos2d-x 移植android横竖横屏设置,布布扣,bubuko.com

Android学习笔记(24):进度条组件ProgressBar及其子类

ProgressBar作为进度条组件使用,它还派生了SeekBar(拖动条)和RatingBar(星级评分条). ProgressBar支持的XML属性: Attribute Name Related Method Description style 设置ProgressBar指定风格 android:indeterminate 设置为true时,进度条不显示运行进度 android:indeterminateBehavior indeterminate模式下.当进度条达到最大值时的动画处理行为

Android自定义文本的进度条

工作中要求实现如下图中进度条(进度条上面是带比例数的文本,进度条颜色与比例数对应),写下自己的实现过程. 整体思路:Android中ProgressBar控件不支持自定义文本,所以需要写自定义progressBar. 1.progressBar上要自定义文本,需要重写onDraw()方法: 2.为实现进度是红色,底色是灰色效果,需要自定义progressBar样式 代码实现: 1.自定义的ProgressBar实现代码: 1 package com.example.myprogressbar;

Android百日程序:进度条对话框实现

显示由Activity管理的dialog. 这种dialog有多种多样,其中比较常见的是loading的时候,显示的一个loading进度条. Android显示这样的进度条还是非常方便的,因为有现成的模块可以调用. 首先看看本程序的效果吧: 1 主界面: 2 点击这个按钮之后,显示: 进度条到了100的时候就会自动关闭,当然这里是模拟下载,真实的下载算法还需要继续完善,不过也是很简单的算法了,不算是难点. 点击Cancel或者OK按钮也可以调用函数,进行有需要的操作,这里直接显示一个Toast

Android 5.0 - ProgressBar 进度条无法展示到按钮的前面

在低于SDK < 21 的版本中,ProgressBar 可以展示到按钮前面,并且为之在按钮的中间,但是切换到android 5.0后进度条ProgressBar 展示顺序变化了,按钮再前面,ProgressBar 在后面了 我的xml配置文件如下: <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button