



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
问题描述:对于有过开发高通android系统的人来说,获取代码构建开发环境并不是难事,但对于刚刚接触这一块内容的人,如果没有详细的说明很容易走弯路,本文档就是根据本人的实践总结的一些经验教训。1. 代码获取高通的android代码分为两部分,一部分是开源的,可以从网站/xwiki/bin/QAEP/下载,需要知道要下载的代码的分支及build id。另一部分是非开源的,需要从高通的另一个网站/login/上下载,这个下载是有权限限制的,晓光的帐号可以下载代码。后面这部分代码需要放到第一部分代码的vendor指定目录下,可能是vendor/qcom-proprietary或vendor/qcom/proprietary,根据版本的不同有所区别。高通平台相关的东西基本都在vendor/qcom/proprietary下或device/qcom下2. 编译环境构建(ubuntu 10.04 64位)Android2.3.x后的版本需要在64位下进行编译更新ubuntu源,要加上deb / lucid partner 这个源用来安装java。apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev x11proto-core-dev libx11-dev libxml-simple-perl sun-java6-jdk gcc-multilib g+-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs lib32z-dev lib32readline5-dev研发主机不能更新java,需要让IT安装sun-java6-jdk。在命令行执行sudo dpkg-reconfigure dash 选择no,否则编译时会报一下脚本语法错误编译的过程中/xwiki/bin/QAEP/和版本的release notes中都有介绍,首先source build/envsetup.sh,然后choosecombo选择需要的选项,最后make或make j4。-j4用来指定参与编译的cpu个数,指定了编译会快些。编译单个模块的时候只需要在make后面跟上模块的名字为了简化可以使用以下脚本export TARGET_SIMULATOR=fasleexport TARGET_BUILD_TYPE=releaseexport TARGET_PRODUCT=msm7627aexport TARGET_BUILD_VARIANT=engset_stuff_for_environmentmake $1编译的中间结果在out/target/product/平台/obj目录下,有时候为了完全重新编译需要把这里对于的目录删掉。编译的结果在out/target/product/平台/下.Appsboot.mbn是bootloaderBoot.img是内核+ramdisk,ramdisk根据当前目录的root目录生成System.img是板子上/system目录下的初始内容,根据当前目录的system目录生成Userdata.img是/data目录下的内容,根据当前目录的data目录生成3. 烧录环境构建需要让pc识别插上的android设备,需要安装驱动,我的驱动是从BSP获得的,目前也不知道具体从哪里下载。驱动下有几个目录,弹出安装驱动的提示时挨个试就行了。还需要android的adb和fastboot等工具,这些也是bsp提供的。使用google的驱动应该也是可以的,在7225a上我试了是可以的,但在7625上却不行。使用google的驱动的下载需要参考/sdk/index.html编辑google-usb_driver/ android_winusb.inf,按照已有的条目添加vid pid。4. Flash分区烧录Android提供了烧录flash的fastboot模式,bsp会提供进入fastboot模式的方法。进入fastboot模式后,在pc的命令行执行fastboot devices可以查看设备,执行fastboot flash boot boot.img烧录boot分区,执行fastboot flash system system.img烧录system分区,执行fastboot flash userdata userdata.img烧录data分区。有些人执行这些命令失败都是因为一些低级的错误,比如打开命令行就直接输命令,估计你自己都不知道fastboot在哪呢让命令行到哪里去找啊,或者到fastboot的目录下后执行命令,又悲剧了谁知道你把那些img文件放哪了,总不能让人家遍历整个硬盘去给你找吧。这样的问题对于开发人员来说实在不应该啊。5. 开发调试用前面提到的方法可以烧录各个分区,但编译烧录分区还是比较麻烦的。使用adb可以对单个文件进行操作Adb push file /system/bin/将file上传到板子的/system/bin/目录下Adb pull /system/bin/file file 将板子上的文件/system/bin/file下载到PC当前目录下Adb shell进入板子的命令行板子上根目录是只读的,如果需要写权限,需要运行mount o remount rw /Adb logcat可以查看日志6. 增加软件模块这里写的主要是如何写android.mk(1) 增加动态库LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES := a.c b.cLOCAL_MODULE := libtestLOCAL_C_INCLUDES := dir/includeLOCAL_CFLAGS := -gLOCAL_LDLAGS := -lpthreadLOCAL_LDLIBS := -lpthreadLOCAL_SYSTEM_SHARED_LIBRARIES := libc libcutilsLOCAL_PRELINK_MODULE := falseinclude $(BUILD_SHARED_LIBRARY)LOCAL_SRC_FILES指定源文件LOCAL_MODULE指定模块的名字,整个andorid系统中必须唯一LOCAL_C_INCLUDES指定需要包括的头文件路径LOCAL_CFLAGS指定编译选项LOCAL_LDLAGS指定链接选项LOCAL_LDLIBS指定链接选项,和LOCAL_LDLAGS类似LOCAL_SYSTEM_SHARED_LIBRARIES指定依赖的库,这个和LOCAL_LDLAGS不同,首先是名字是以模块名的方式指定的,其次是这里面包含的依赖关系,会导致被依赖的模块也会被编译LOCAL_PRELINK_MODULE这个为我们编译库很重要,不加这行一般会编译失败。最后一行开始进行编译(2) 增加静态库与动态库类似,把最后一句改为Include $(BUILD_STATIC_LIBRARY)(3) 增加应用与动态库类似,把最后一句改为Include $(BUILD_EXECUTABLE)去掉LOCAL_PRELINK_MODULE(4) 增加资源即只需要拷贝到某个目录LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)file := $(TARGET_OUT)/etc/lctpri$(file) : $(LOCAL_PATH)/lctpri | $(ACP)$(transform-prebuilt-to-target)ALL_PREBUILT += $(file)上面这个andoird.mk的意思是将本目录下的lctpri拷贝到system/etc下, $(TARGET_OUT)是编译环境中的一个定义(5) 特殊的例子编译Iptables的时候需要根据模块生成一个初始化文件,android中是这样实现的GEN_INITEXT:= $(intermediates)/extensions/gen_initext.c$( GEN_INITEXT): PRIVATE_PATH := $(LOCAL_PATH)$( GEN_INITEXT): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PATH)/extensions/create_initext “$(EXT_FUNC)”$( GEN_INITEXT): PRIVATE_MODULE := $(LOCAL_MODULE)$( GEN_INITEXT):$(transform-generated-source)$(intermediates)/extensions/initext.o : $( GEN_INITEXT)LOCAL_GENERATED_SOURCES := $( GEN_INITEXT)create_initext是一个脚本文件,从svn下载下来的时候会失去可执行属性,需要改变属性。这个方式生成的gen_initext.c似乎并不会跟着选择的模块的变化而重新生成,所以需要手动将它删掉。Android自带的代码中基本没有一个目录下既有代码又有目录的情况,而我们的代码中这种情况很常见,出现这中情况的时候需要在饱含子目录的android.mk的后面加入include $(call all-makefiles-under,$(LOCAL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课件时间利用的好处
- 高压水射流清洗工协同作业考核试卷及答案
- 有色金属熔池熔炼炉工岗位操作技能考核试卷及答案
- 近代科技考试题及答案
- 金属学考试题及答案
- 蒸发浓缩结晶工适应性考核试卷及答案
- 三聚氰胺装置操作工基础知识考核试卷及答案
- 交通安全设施工测试考核试卷及答案
- 水产捕捞工工艺考核试卷及答案
- 合成洗涤剂制造工三级安全教育(公司级)考核试卷及答案
- 图解2025年9月10日第41个教师节全文
- 2025至2030年中国晶质石墨深加工行业市场调查研究及投资战略咨询报告
- 船舶电气小知识培训课件
- 普及鸽子的课件
- 2025版外墙保温涂料分包工程合同范例
- (2025秋新版)人教版八年级地理上册全册教案
- 2025版酒店租赁经营合作协议模板:2025年度版
- 湘少版(三起)(2024)三年级上册英语全册教案
- 小屁孩日记阅读课件
- 2025年新生儿误吸(呛奶)应急预案演练脚本
- 《构成设计基础》全套教学课件
评论
0/150
提交评论