原创作品,转载请注明原作者及地址!
by 飞鸿惊雪
http://blog.csdn.net/niyufeng
总之,在openwrt下的qpe已经完成的情况下,我想把android拉到openwrt下。
ok 0 安装beyond compare,或使用diff脚本,测试、对比,得到files-patches; ok 1 编译tiny210自带的android-2.3.1源代码; ok 2 编译原始android-2.3.1的goldfish; ok 3 编译原始android-2.3.1 + tiny210的files-patches补丁; 4 精简2.3.1补丁,去除不需要的补丁,再往2.3.7上移植; 5 分析android和nbd的源代码,把2.3.7移植到openwrt框架上;
|-------------------------------------------------------- | (低原始) --\ | =>得到 (低差异) --\ | (低已好) --/ =>结合 得到 (高版本) | (高原始) --/ |-------------------------------------------------------- 原则只添不减(除非不可共存,相冲突)!
1 android linux内核的普通驱动移植,让内核可以在目标平台上运行起来。
2 正确挂载文件系统:确保内核启动参数,和android源代码system/core/rootdir目录下的init.rc中的文件系统挂载正确。
3 调试控制台,让内核启动参数中的console参数,和android源代码system/core/init/init.c中的console_name设置和硬件保持一致。
4 打开android相关的驱动(logger,binder等),串口输入logcat看logger驱动起来,没有的话调试logger驱动。
---------------- ├── Makefile 全局的Makefile ├── build 系统编译规则和配置所需要的脚本和工具 ---------------- ├── prebuilt 各种平台编译工具链 ├── bionic 基础C库源代码 ---------------- ├── frameworks * Android应用程序的核心框架层(java及C++语言) ├── system * 底层文件系统/库/应用及组件(C语言) ├── dalvik JAVA虚拟机 ├── external android使用的一些额外开源库 ├── libcore 与媒体播放框架代码相关 ---------------- ├── packages 各种应用程序实例 ├── development 程序开发所需要的实例/模板/工具 ---------------- ├── ndk ├── sdk ├── cts Android CTS兼容性规范测试用例 ---------------- ├── vendor * 厂商定制代码 ├── device * 厂商定制代码 ├── hardware * 一些与硬件相关的库,部分厂家开源的硬解适配层HAL代码 ├── kernel * Linux源代码 ├── bootable 引导加载器 ├── recovery 与目标的恢复功能相关 ----------------
---------------- ├── kernel * (自带,完成) Linux源代码 ---------------- ├── build (1稍变化)(针对64 JDK) (变化要改) 系统编译规则和配置所需要的脚本和工具 ---------------- ├── vendor * (2最主要)(完成,相同) (变化要改) 厂商定制代码 ├── device * (2最主要)(完成,相同) (变化要改) 厂商定制代码 ├──+frameworks *x (2最主要)(完成,不同,未改动docs,core/tests) (变化要改) 和硬件有关的核心框架中C/C++语言要根据情况修改 ---------------- ├── system * (3主要)(完成,相同) (变化要改) 底层文件系统/库/应用及组件(C语言) ├── hardware * (3主要)(完成,相同) (变化要改) 一些与硬件相关的库,部分厂家开源的硬解适配层HAL代码 ├── external x (3主要)(完成,只添加libusb未删除tcpdump) (变化要改) 依赖的额外开源库 ├── libcore x (3次要)(变化,但未改,不同) (变化可不改) 与媒体播放框架代码相关 ---------------- ├── packages (4次要)(完成,相同) (变化要改) 各种应用程序实例 ├──+frameworks x (4次要)和图像界面有关的java程序根据需要修改 ---------------- ├── development (4次要,变化)(完成,相同) (变化可不改) 程序开发所需要的实例/模板/工具 ├── cts (0变化,不改) Android CTS兼容性规范测试用例 ├── ndk (0变化,不改) ├── prebuilt (0变化,不改) 各种平台编译工具链 ├── bionic (0无变化) 基础C库源代码 ├── dalvik (0无变化) JAVA虚拟机(dalvik是依赖于bionic编译的) ├── bootable (0无变化) 引导加载器 ├── Makefile (0无变化) 全局的Makefile ├── sdk (0无变化) ----------------
build/core/base_rules.mk:158: *** device/samsung/crespo/sec_mm/sec_omx/sec_osal: MODULE.TARGET.STATIC_LIBRARIES.libsecosal already defined by device/samsung/sec_mm/sec_omx/sec_osal
[ 4.646506] IP-Config: Complete: [ 4.646537] device=eth0, addr=192.168.0.101, mask=255.255.255.0, gw=192.168.0.1, [ 4.646617] host=www, domain=, nis-domain=richardnee.com, [ 4.646668] bootserver=192.168.0.100, rootserver=192.168.0.100, rootpath= [ 4.648401] DBUG_PORT must not use AFC! [ 4.652312] Freeing init memory: 1436K 1Wire touchscreen OK TouchDevice: /dev/touchscreen-1wire xres = 800, yres = 480 [ 3.149864] mmc0: new high speed MMC card at address 0001 [ 3.150163] mmcblk0: mmc0:0001 000000 122 MiB [ 3.150478] mmcblk0: p1 [ 3.642449] eth0: link up, 100Mbps, full-duplex, lpa 0x45E1 [ 4.646498] IP-Config: Complete: [ 4.646529] device=eth0, addr=192.168.0.101, mask=255.255.255.0, gw=192.168.0.1, [ 4.646609] host=www, domain=, nis-domain=richardnee.com, [ 4.646659] bootserver=192.168.0.100, rootserver=192.168.0.100, rootpath= [ 4.648398] DBUG_PORT must not use AFC! [ 4.652309] Freeing init memory: 1436K [ 4.926688] init: cannot open '/initlogo.rle' [ 4.943464] Kernel panic - not syncing: Attempted to kill init! [ 4.943526] Backtrace: [ 4.943577] [<c0173efc>] (dump_backtrace+0x0/0x110) from [<c05c2be0>] (dump_stack+0x18/0x1c) [ 4.943653] r6:dfc34000 r5:c07dc2a0 r4:c07daafc r3:00000000 [ 4.943720] [<c05c2bc8>] (dump_stack+0x0/0x1c) from [<c05c2c58>] (panic+0x74/0xf0) [ 4.951291] [<c05c2be4>] (panic+0x0/0xf0) from [<c0196a00>] (do_exit+0x74/0x5f4) [ 4.958492] r3:c07dc2a0 r2:00000000 r1:00000025 r0:c0734e90 [ 4.964118] [<c019698c>] (do_exit+0x0/0x5f4) from [<c0197264>] (do_group_exit+0x98/0xc8) [ 4.972189] r7:dfc02200 [ 4.974690] [<c01971cc>] (do_group_exit+0x0/0xc8) from [<c01a1d64>] (get_signal_to_deliver+0x358/0x394) [ 4.984120] r7:dfc02200 r6:dfc37ec8 r5:00106001 r4:dfc36000 [ 4.989682] [<c01a1a0c>] (get_signal_to_deliver+0x0/0x394) from [<c0172cd8>] (do_signal+0x70/0x688) [ 4.998709] [<c0172c68>] (do_signal+0x0/0x688) from [<c01738e4>] (do_notify_resume+0x20/0x50) [ 5.007203] [<c01738c4>] (do_notify_resume+0x0/0x50) from [<c0170010>] (work_pending+0x1c/0x20) [ 5.015857] r4:ffffffff r3:00000000 [ 5.019401] Rebooting in 5 seconds.. [ 5.884652] eth0: no IPv6 routers present [ 5.264526] [ 5.264545] Restart
Install: out/target/product/smdkv210/system/app/QuickSearchBox.apk target Java: Settings (out/target/common/obj/APPS/Settings_intermediates/classes) packages/apps/Settings/src/com/android/settings/DisplaySettings.java:40: 软件包 com.slsi.sec.android 不存在 import com.slsi.sec.android.HdmiService; ^ packages/apps/Settings/src/com/android/settings/DisplaySettings.java:64: 找不到符号 符号: 类 HdmiService 位置: 类 com.android.settings.DisplaySettings private HdmiService mHdmiService; ^ packages/apps/Settings/src/com/android/settings/DisplaySettings.java:110: 找不到符号 符号: 类 HdmiService 位置: 类 com.android.settings.DisplaySettings mHdmiService = new HdmiService(); ^ 358 Copying: out/target/common/obj/JAVA_LIBRARIES/android.policy_intermediates/emma_out/lib/classes-jarjar.jar 359 target Java: services (out/target/common/obj/JAVA_LIBRARIES/services_intermediates/classes) 360 frameworks/base/services/java/com/android/server/MountService.java:1105: 找不到符号 361 符号: 变量 usbdisk 362 位置: 类 com.android.internal.R.drawable 363 myNoti.icon = com.android.internal.R.drawable.usbdisk; 364 ^ target Java: SystemUI (out/target/common/obj/APPS/SystemUI_intermediates/classes) frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarService.java:348: 找不到符号 符号: 变量 net3g 位置: 类 com.android.internal.R.drawable setStatusIcon(com.android.internal.R.drawable.net3g, "Connected. (FriendlyARM-3G)"); ^ 注意:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/Ticker.java 使用了未经检查或不安全的操作。 注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
com.slsi.sec.android.HdmiService com.android.internal.R.drawable.usbdisk com.android.internal.R.drawable.net3g
原创作品,转载请注明原作者及地址!
by 飞鸿惊雪
http://blog.csdn.net/niyufeng