1.怎么学习android系统(特别是关于智能电视机方面)
2.在android4.0.几的版本上会出现这个问题,在线求解答
怎么学习android系统(特别是关于智能电视机方面)
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,Android是my batis源码解析基于Linux内核的操作系统,所以Linux有基础android系统就得心应手了
Android模拟器通过运行一个Goldfish的虚拟CPU.Goldfish来运行armt指令集(armt属于armv5构架),并且仿真了输入/输出,比如键盘输入和LCD 输出。这个模拟器其实是在qemu之上开发的,输入/输出是基于libSDL的。既然Goldfish是被模拟器运行的虚拟CPU,那么当Android在真实的游戏官网页+模板+源码硬件设备上运行时,我们就需要去掉它,因此,只有知道Google对Goldfish做了哪些具体改动之后才能正确地去掉。据统计,Android 内核对Goldfish的web进销存源码’改动主要涉及个文件,具体汇总如下。
说明 本书中在被改动的文件前面加了Chg标记,在新增的文件前面加了New标记。
1Chgarch/arm/Makefile添加CONFIG_ARCH_GOLDFISH
2Newarch/arm/configs/goldfish_defconfig默认配置文件
3Newarch/arm/mach-goldfish/Kconfig为Goldfish CPU添加Kernel配置文件
4Newarch/arm/mach-goldfish/Makefile添加board-goldfish.o
5Newarch/arm/mach-goldfish/Makefile.boot为Goldfish CPU进行启动配置
6Newarch/arm/mach-goldfish/audio.c Audio的输入/输出
7Newarch/arm/mach-goldfish/board-goldfish.c中断请求、输入/输出等
8Newarch/arm/mach-goldfish/pdev_bus.c设备总线
9Newarch/arm/mach-goldfish/pm.c电源管理
Newarch/arm/mach-goldfish/switch.cSwitch控制
Newarch/arm/mach-goldfish/timer.c获取和设置时间
Chgarch/arm/mm/Kconfig添加ARCH_GOLDFISH到支持列表
Chgdrivers/char/Makefile添加goldfish_tty
Newdrivers/char/goldfish_tty.cTTY驱动
Chgdrivers/input/keyboard/Kconfig为Goldfish的国际原油交易源码键盘事件添加配置文件
Chgdrivers/input/keyboard/Makefile添加goldfish_events事件
Newdrivers/input/keyboard/goldfish_events.cGoldfish键盘驱动
Chgdrivers/mmc/host/Kconfig添加Kernel配置选项Goldfish MMC卡
Chgdrivers/mmc/host/Makefile添加Goldfish MMC卡驱动
Newdrivers/mmc/host/goldfish.c多媒体驱动
Chgdrivers/mtd/devices/Kconfig为Goldfish的NAND flash device添加Kernel配置选项
Chgdrivers/mtd/devices/Makefile添加goldfish_nand
Newdrivers/mtd/devices/goldfish_nand.cNAND flash驱动
Newdrivers/mtd/devices/goldfish_nand_reg.hNAND flash驱动
Chgdrivers/power/Kconfig为Goldfish的battery(电池)驱动添加kernel配置选项
Chgdrivers/power/Makefile添加Goldfish电池
Newdrivers/power/goldfish_battery.c能源和电池状态驱动
Chgdrivers/rtc/Kconfig为Goldfish的rtc(时钟)驱动添加Kernel配置选项
Chgdrivers/rtc/Makefile添加rtc-goldfish
Newdrivers/rtc/rtc-goldfish.c实时时钟驱动
Chgdrivers/video/Kconfig添加Goldfish的framebuffer
Chgdrivers/video/Makefile添加Goldfish的framebuffer
Newdrivers/video/goldfishfb.cframebuffer驱动
Newinclude/asm-arm/arch-goldfish/dma.h
Newinclude/asm-arm/arch-goldfish/entry-macro.S
Newinclude/asm-arm/arch-goldfish/hardware.h
Newinclude/asm-arm/arch-goldfish/io.h
Newinclude/asm-arm/arch-goldfish/irqs.h
Newinclude/asm-arm/arch-goldfish/memory.h
Newinclude/asm-arm/arch-goldfish/system.h
Newinclude/asm-arm/arch-goldfish/timer.h
Newinclude/asm-arm/arch-goldfish/timex.h
Newinclude/asm-arm/arch-goldfish/uncompress.h
Newinclude/asm-arm/arch-goldfish/vmalloc.h
这些资料说明了Linux和android系统的息息相关,android系统实际上和Linux大同小异,搭建环境建议在Linux系统上学习书籍推荐有如下几本
基础:《Learning Android》 O‘Reilly的
中级:《Beginning Android 2》 (不太好,读起来太烦但知识量大)
有java基础可选读:《Learn Java for Android Development》(深入了解下如何在Android平台下使用Java)
强烈要求一定最好有java基础,负责你学了等于白学,知识是无缝滚动轮播源码相互联系,相辅相成的
(特别是关于智能电视机方面)java基础书籍《Learn Java for Android Development》如上
付:视频推荐
基础
Android开发从零开始视频教程
Android深入浅出
中级:
IOS UI界面开发教程
在android4.0.几的版本上会出现这个问题,在线求解答
在尝试编译Android 4.0.x版本的源码时,遇到的问题多种多样。以下是将这些问题及其解决方案列举出来的内容,条目之间换行,以清晰的条目编号呈现。
1. 错误:/usr/include/gnu/stubs.h:7:: error: gnu/stubs-.h: No such file or directory
解决:sudo apt-get install libc6-dev-i
2. 错误:make: *** [out/host/linux-x/obj/EXECUTABLES/acp_intermediates/acp] error 1
解决:sudo apt-get install g++-4.4-multilib
3. 错误:external/clearsilver/cgi/cgi.c:: fatal error: zlib.h: No such file or directory
解决:sudo apt-get install zlib1g-dev
4. 错误:/usr/bin/ld: cannot find -lz
解决:sudo apt-get install libz1-dev
5. 错误:bison -d -o out/host/linux-x/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp frameworks/base/tools/aidl/aidl_language_y.y
解决:sudo apt-get install bison
6. 错误:Lex: aidl <= frameworks/base/tools/aidl/aidl_language_l.l
解决:sudo apt-get install flex
7. 错误:/usr/bin/ld: cannot find -lncurses
解决:sudo apt-get install libncurses5-dev
8. 错误:prebuilt/linux-x/sdl/include/SDL/SDL_syswm.h:: fatal error: X/Xlib.h: No such file or directory
解决:sudo apt-get install libx-dev
9. 错误:sh: gperf: not found
解决:sudo apt-get install gperf
. 错误:build/core/java.mk:9: *** bin: Target java module does not define any source or resource files. Stop.
解决:删除源码根目录下的bin文件夹,这个文件夹是导入eclipse时创建的。
. 错误:/usr/bin/ld: cannot find -lX
解决:sudo ln -s /usr/lib/i-linux-gnu/libX.so.6 /usr/lib/i-linux-gnu/libX.so
. 错误:development/tools/emulator/opengl/host/libs/Translator/GLDispatch.cpp:: fatal error: GL/glx.h: No such file or directory
解决:sudo apt-get install libgl1-mesa-dev
. 错误:host SharedLib: libEGL_translator (out/host/linux-x/obj/lib/libEGL_translator.so)
解决:sudo apt-get install libglu1-mesa-dev
. 错误:host StaticLib: libGLcommon (out/host/linux-x/obj/STATIC_LIBRARIES/libGLcommon_intermediates/libGLcommon.a)
解决:sudo ln -s /usr/lib/i-linux-gnu/mesa/libGL.so.1 /usr/lib/i-linux-gnu/libGL.so
. 错误:make: *** [out/host/linux-x/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1
后来发现了,原来是Ubuntu .里的gcc和g++版本太高了,于是执行下面的操作:
sudo apt-get install gcc-4.4
sudo apt-get install g++-4.4
sudo rm -rf /usr/bin/gcc /usr/bin/g++
sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++
把默认的4.6版本换为了4.4,继续编译源码,又出现了另一个错误,大致提示为:
g++ selected multilib '' not installed
继续奋战吧,安装相应的工具吧:sudo apt-get install g++-4.4-multilib,现在正在make -j8(开启多线程编译(不推荐),可能有时候会出现问题,最好是直接make)
2. 解决各种依赖问题
首先安装一些库
?View Code BASH
1 sudo apt-get install gnupg flex bison gperf libsdl1.2-dev libesd0-dev
2 sudo apt-get install libwxgtk2.6-dev squashfs-tools build-essential
3 sudo apt-get install zlib1g-dev pngcrush schedtool ia-libs libncurses5-dev
这些库可能不全,如果出现问题,再google一下吧
3. error: “_FORTIFY_SOURCE” redefined [-Werror]
这个问题,据说与gcc版本有关,4.4版不会出现。
后来在google code上找到了使用gcc 4.6编译的方法
修改build/core/combo/HOST_linux-x.mk文件line
?View Code BASH
1 -HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
2 +HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
这是CyanogenMod打上的补丁
4. No rule to make target ‘out/target/product/generic/obj/lib/libcamera.so’
修改 /home/Android-2.3.4/frameworks/base/services/camera/libcameraservice/Android.mk,USE_CAMERA_STUB:=false -> true
?View Code BASH
1 LOCAL_PATH:= $(call my-dir)
2
3 # Set USE_CAMERA_STUB if you don't want to use the hardware camera.
4
5 # force these builds to use camera stub only
6 ifneq ($(filter sooner generic sim,$(TARGET_DEVICE)),)
7 USE_CAMERA_STUB:=true
8 endif
9
#########CHANGE THIS LINE############
USE_CAMERA_STUB:=true
ifeq ($(USE_CAMERA_STUB),)
USE_CAMERA_STUB:=false
endif