将 Android 5.1.1 移植到 RaspbrryPi2

Porting Android 5.1.1 to RaspbrryPi2

我一直在努力将 Android 5.1.1 移植到 RaspberryPi2。 我用 device configuration 编译了 Android!它成功了。

内核方面,我使用的是4.0版本,编译时的配置是bcm2709_defconfig、android-base.cfg和android- recommended.cfg.

但是当我尝试启动它时,LogCat 显示:

--------- beginning of main
I/installd(    0): installd firing up
I/Netd    (    0): Netd 1.0 starting
E/Netd    (    0): Failed to open /proc/sys/net/ipv6/conf/default/accept_ra_rt_table: No such file or directory
E/Netd    (    0): Failed to open /proc/sys/net/ipv6/conf/eth0/accept_ra_rt_table: No such file or directory
E/Netd    (    0): Failed to open /proc/sys/net/ipv6/conf/lo/accept_ra_rt_table: No such file or directory
E/Netd    (    0): Failed to open /proc/sys/net/ipv6/conf/sit0/accept_ra_rt_table: No such file or directory
I/        (    0): debuggerd: Feb  1 2016 18:35:07
--------- beginning of system
I/Vold    (   84): Vold 2.1 (the revenge) firing up
I/lowmemorykiller(   82): Using in-kernel low memory killer interface
I/keystore(   94): SELinux: Keystore SELinux is disabled.
I/SurfaceFlinger(   85): SurfaceFlinger is starting
I/SurfaceFlinger(   85): SurfaceFlinger's main thread ready to run. Initializing graphics H/W...
F/libEGL  (   85): couldn't find an OpenGL ES implementation
--------- beginning of crash
F/libc    (   85): Fatal signal 6 (SIGABRT), code -6 in tid 85 (surfaceflinger)
I/DEBUG   (   89): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG   (   89): Build fingerprint: 'unknown'
I/DEBUG   (   89): Revision: '10489921'
I/DEBUG   (   89): ABI: 'arm'
I/DEBUG   (   89): pid: 85, tid: 85, name: surfaceflinger  >>> /system/bin/surfaceflinger <<<
I/DEBUG   (   89): signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
I/DEBUG   (   89): Abort message: 'couldn't find an OpenGL ES implementation'
I/DEBUG   (   89):     r0 00000000  r1 00000055  r2 00000006  r3 00000000
I/DEBUG   (   89):     r4 b6f3ce38  r5 00000006  r6 00000002  r7 0000010c
I/DEBUG   (   89):     r8 b6082000  r9 00000000  sl 00000000  fp be942b0c
I/DEBUG   (   89):     ip 00000055  sp be942580  lr b6e99745  pc b6ebcbd8  cpsr 60000010
I/DEBUG   (   89): 
I/DEBUG   (   89): backtrace:
I/DEBUG   (   89):     #00 pc 00039bd8  /system/lib/libc.so (tgkill+12)
I/DEBUG   (   89):     #01 pc 00016741  /system/lib/libc.so (pthread_kill+52)
I/DEBUG   (   89):     #02 pc 0001735f  /system/lib/libc.so (raise+10)
I/DEBUG   (   89):     #03 pc 00013b39  /system/lib/libc.so (__libc_android_abort+36)
I/DEBUG   (   89):     #04 pc 00012f18  /system/lib/libc.so (abort+4)
I/DEBUG   (   89):     #05 pc 00007c51  /system/lib/libcutils.so (__android_log_assert+88)
I/DEBUG   (   89):     #06 pc 000431bd  /system/lib/libEGL.so
I/DEBUG   (   89):     #07 pc 00010795  /system/lib/libEGL.so
I/DEBUG   (   89):     #08 pc 00010f45  /system/lib/libEGL.so (eglGetDisplay+24)
I/DEBUG   (   89):     #09 pc 00017815  /system/lib/libsurfaceflinger.so (android::SurfaceFlinger::init()+60)
I/DEBUG   (   89):     #10 pc 00000af1  /system/bin/surfaceflinger
I/DEBUG   (   89):     #11 pc 00012dc9  /system/lib/libc.so (__libc_init+44)
I/DEBUG   (   89):     #12 pc 00000c08  /system/bin/surfaceflinger
I/DEBUG   (   89): 
I/DEBUG   (   89): Tombstone written to: /data/tombstones/tombstone_04
I/Netd    (  179): Netd 1.0 starting
E/Netd    (  179): Failed to open /proc/sys/net/ipv6/conf/default/accept_ra_rt_table: No such file or directory
E/Netd    (  179): Failed to open /proc/sys/net/ipv6/conf/eth0/accept_ra_rt_table: No such file or directory
E/Netd    (  179): Failed to open /proc/sys/net/ipv6/conf/lo/accept_ra_rt_table: No such file or directory
E/Netd    (  179): Failed to open /proc/sys/net/ipv6/conf/sit0/accept_ra_rt_table: No such file or directory
I/SurfaceFlinger(  180): SurfaceFlinger is starting
I/SurfaceFlinger(  180): SurfaceFlinger's main thread ready to run. Initializing graphics H/W...    

不断重复。我检查了 /lib/ 中的 libEGL.so、libGLESv1_CM.so、libGLESv2.so 和 /lib/egl/ 中的 libGLES_android.so。

为什么会出现这些错误以及如何解决?

错误最有可能发生是因为 surfaceflinger 进程跳入 一些 分配的内存,期望找到它计划使用的 OpenGL ES 实现/方法序号;这些方法不存在,也没有找到。引发了 abort signal,这在调试日志 (SIGABRT) 中表示并且进程正常崩溃。

I/DEBUG   (   89): signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
I/DEBUG   (   89): Abort message: 'couldn't find an OpenGL ES implementation'

然而,OS 没有 surfaceflinger 就无法启动,因此它一次又一次地尝试并陷入死循环。找出错误地址,并尝试使用 addr2line 找到导致错误的文件,并尝试修复它...

那个+我给你的评论是我能做的最好的,不幸的是。