Android系统移植技术详解
更新时间:2023-10-31 18:39:01 阅读量: 综合文库 文档下载
- Android系统移植推荐度:
- 相关推荐
Android系统开发编译环境配置
主机系统:Ubuntu9.04 (1)安装如下软件包
sudo apt-get install git-core sudo apt-get install gnupg
sudo apt-get install sun-java5-jdk sudo apt-get install flex sudo apt-get install bison sudo apt-get install gperf
sudo apt-get install libsdl-dev sudo apt-get install libesd0-dev sudo apt-get install build-essential sudo apt-get install zip sudo apt-get install curl
sudo apt-get install libncurses5-dev sudo apt-get install zlib1g-dev
android编译对java的需求只支持jdk5.0低版本,jdk5.0 update 12版本和java 6不支持。 (2)下载repo工具
curl http://android.git.kernel.org/repo >/bin/repo chmod a+x /bin/repo (3)创建源代码下载目录:
mkdir /work/android-froyo-r2
(4)用repo工具初始化一个版本(以android2.2r2为例)
cd /work/android-froyo-r2
repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo
初始化过程中会显示相关的版本的TAG信息,同时会提示你输入用户名和邮箱地址,以上面的方式初始化的是android2.2 froyo的最新版本,
android2.2本身也会有很多个版本,这可以从TAG信息中看出来,当前froyo的所有版本如下: * [new tag] android-2.2.1_r1 -> android-2.2.1_r1 * [new tag] android-2.2_r1 -> android-2.2_r1 * [new tag] android-2.2_r1.1 -> android-2.2_r1.1 * [new tag] android-2.2_r1.2 -> android-2.2_r1.2 * [new tag] android-2.2_r1.3 -> android-2.2_r1.3
* [new tag] android-cts-2.2_r1 -> android-cts-2.2_r1 * [new tag] android-cts-2.2_r2 -> android-cts-2.2_r2 * [new tag] android-cts-2.2_r3 -> android-cts-2.2_r3
这样每次下载的都是最新的版本,当然我们也可以根据TAG信息下载某一特定的版本如下: repo init -u git://android.git.kernel.org/platform/manifest.git -b android-cts-2.2_r3 (5)下载代码
repo sync
froyo版本的代码大小超过2G,漫长的下载过程。 (6)编译代码
cd /work/android-froyo-r2 make
Ubuntu下使用Simba服务实现局域网内文件共享
Ubuntu下安装Simba服务器将linux电脑上的内容共享,同一局域网内的另外一台Windows PC即可访问其共享内容,
从而实现Windows电脑向访问本地文件一样访问Linux文件系统的内容。
(1)安装Simaba服务器 sudo apt-get install samba
(2)安装samba图形化配置软件
sudo apt-get install system-config-samba
(3)创建一个Simba专用用户
从“系统”—“系统管理”—“用户和组”,来创建。如图,先点击“解锁”,然后“添加新用户”
然后输入新用户名字(如Simba)和密码(如111111),然后在“高级”里面,选择“主组”为sambashare后点击\确定\即可
一句话来概括,就是创建一个主组为sambashare的用户
(4)配置samba共享
从“系统”—“系统管理—”samba“,运行配置界面
然后”首选项“—”服务器设置“。点击:安全性,在最后的”来宾帐号“里面, 选择我们新建立的那个用户simba后点击确定
(5)修改samba配置文件
打开/etc/samba/smb.conf,修改valid users = XXXX为valid users = simba
(6)重启samba服务
sudo /etc/init.d/samba restart
(7)添加共享文件
从“系统”—“系统管理—”samba“,运行配置界面
点击\添加\来添加共享文件夹,点击\浏览\来选择需要共享的文件夹,选择\可擦写\和\显示\,点击\访问\可以设置访问权限,最好设置成\允许所有用户访问\
Ubuntu下tftp服务器的创建
实验平台:Ubuntu9.04
(1)安装tftp服务
sudo apt-get install tftp tftpd openbsd-inetd
(2)在根目录下创建文件夹 tftpboot文件夹并修改权限 cd /
sudo mkdir tftpboot sudo chmod 777 tftpboot
(3)修改/etc/inetd.conf文件如下:
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot
(4)开启tftp服务
sudo /etc/init.d/openbsd-inetd reload sudo in.tftpd -l /tftpboot
(5)重启电脑,然后将测试文件放入/tftpboot目录下即可开始测试,出现问题可能一般都是权限问题 /tftpboot目录下的文件访问权限改成0777
创建一个新的Android产品项目
从google网站上下载的android源代码编译时默认是编译google设定的产品,如果要开发自己的产品, 则需要重新定义一个产品项目,过程如下: 首先我们定义产品的规格,举例如下: 公司名称 ardent 产品名称 MTP 主板名称 merlin
然后安装下面的步骤新建产品项目: (1)在源代码目录下创建一个用户目录 mkdir vendor
(2)在用户目录下创建一个公司目录 mkdir vendor/merlin
(3)在公司目录下创建一个products目录 mkdir vendor/merlin/products
(4)在上面创建的products下创建一个产品makefile文件MTP.mk,内容如下: PRODUCT_PACKAGES := \\ AlarmClock \\ Email \\ Fallback \\ Launcher2 \\
Music \\ Camera \\ Settings \\ LatinIME \\ NotePad \\
SoundRecorder \\ Bluetooth \\ CertInstaller \\ DeskClock
$(call inherit-product, $(SRC_TARGET_DIR)/product/core.mk) #
# Overrides
PRODUCT_MANUFACTURER := ardent PRODUCT_BRAND := ardent PRODUCT_NAME := MTP
PRODUCT_MODEL := MultiMedia Touch Phone PRODUCT_DEVICE := merlin PRODUCT_LOCALES := zh_CN
产品makefile文件的编写有一套规则,详细情况见此文后面的补充内容。
(5)在vendor/merlin/products目录下创建一个AndroidProducts.mk文件,定义Android产品配置文件的路径,具体如下:
PRODUCT_MAKEFILES := \\ $(LOCAL_DIR)/MTP.mk
(6)在公司目录下创建一个主板目录 mkdir vendor/ardent/merlin
(7)在主板目录下新建一个主板配置文件BoardConfig.mk,内容如下: TARGET_NO_BOOTLOADER := true TARGET_NO_KERNEL := true TARGET_CPU_ABI := armeabi
BOARD_USES_GENERIC_AUDIO := true USE_CAMERA_STUB := true
(8)如果你希望修改系统属性,则可以在主板目录下新建一个system.prop文件,该文件中可以修改系统属性,举例如下: # system.prop for
# This overrides settings in the products/generic/system.prop file #
# rild.libpath=/system/lib/libreference-ril.so # rild.libargs=-d /dev/ttyS0
(9)在主板目录下建议一个Android的主板配置文件AndroidBoard.mk,此文件是编译系统接口文件,内容如下:
# make file for new hardware from #
LOCAL_PATH := $(call my-dir) #
# this is here to use the pre-built kernel ifeq ($(TARGET_PREBUILT_KERNEL),)
TARGET_PREBUILT_KERNEL := $(LOCAL_PATH)/kernel endif
file := $(INSTALLED_KERNEL_TARGET) ALL_PREBUILT += $(file)
$(file): $(TARGET_PREBUILT_KERNEL) | $(ACP) $(transform-prebuilt-to-target) #
# no boot loader, so we don't need any of that stuff.. #
LOCAL_PATH := vendor/ardent/merlin include $(CLEAR_VARS) #
# include more board specific stuff here? Such as Audio parameters. #
(10)编译新的项目 . build/envsetup.sh
make PRODUCT-MTP-user
补充内容:
(1)上面的新建的几个文件的编写可以参考build/target/board/generic目录下的AndroidBoard.mk,BoardConfig.mk和system.prop
(2)产品makefile的编写规则,变量定义解释如下:
PRODUCT_NAME 终端用户可见的产品名称,对应到“Settings“中的“About the phone”信息 PRODUCT_MODEL End-user-visible name for the end product
PRODUCT_LOCALES 1个以空格分隔开的两个字母的语言码加上2字节的国家码的列表,影响到\中的语言,时间,日期和货币格式设置,
举例:en_GB de_DE es_ES fr_CA PRODUCT_PACKAGES 需要安装的APK应用程序列表 PRODUCT_DEVICE 工作设计名称,即主板名称 PRODUCT_MANUFACTURER 生产厂家
PRODUCT_BRAND 软件设计针对的客户品牌
PRODUCT_PROPERTY_OVERRIDES 以\为格式的属性列表
PRODUCT_COPY_FILES 文件复制列表,格式为“原文件路径:目的文件路径”,编译过程中会按照此规则复制文件
PRODUCT_OTA_PUBLIC_KEYS 产品的OTA公共密匙列表
MODULE_DESCRIPTION(\MODULE_LICENSE(\
android系统开发(五)-tslib移植
(1)切换至tslib目录然后执行如下命令(以marvell平台为例)
./autogen.sh
echo \./configure --host=arm-marvell-linux-gnueabi --prefix=/work/svn/ts_build --cache-file=arm-marvell-linux.cache
上面三步仅仅是为了取得tslib目录下的config.h文件
(2)将tslib复制到android源代码vendor/
(3)修改vendor/
include $(LOCAL_PATH)/tslib/Mdroid.mk 一定要主义LOCAL_PATH这个宏的时效性
(4)在tslib目录下创建Mdroid.mk,内容如下: LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS)
TS_PATH := $(LOCAL_PATH)
include $(TS_PATH)/src/Mdroid.mk
include $(TS_PATH)/plugins/Mdroid.mk include $(TS_PATH)/tests/Mdroid.mk
include $(CLEAR_VARS)
file := $(TARGET_OUT_ETC)/ts.conf
$(file) : $(TS_PATH)/etc/ts.conf | $(ACP) $(transform-prebuilt-to-target) ALL_PREBUILT += $(file)
(5)在tslib/src目录下创建Mdroid.mk,内容如下:
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS)
LOCAL_SRC_FILES:= ts_attach.c ts_close.c ts_config.c \\
ts_error.c ts_fd.c ts_load_module.c ts_open.c ts_parse_vars.c \\ ts_read.c ts_read_raw.c ts_option.c
LOCAL_C_INCLUDES += \\
$(LOCAL_PATH)/../
LOCAL_SHARED_LIBRARIES += libutils libcutils
LOCAL_SHARED_LIBRARIES += libdl LOCAL_PRELINK_MODULE := false LOCAL_MODULE := libts
include $(BUILD_SHARED_LIBRARY)
(6)在tslib/plugins目录下创建Mdroid.mk,内容如下: LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS)
LOCAL_SRC_FILES:= input-raw.c
LOCAL_C_INCLUDES += \\ $(LOCAL_PATH)/../ \\ $(LOCAL_PATH)/../src
LOCAL_SHARED_LIBRARIES := libts LOCAL_MODULE := input
LOCAL_PRELINK_MODULE := false include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= pthres.c
LOCAL_C_INCLUDES += \\ $(LOCAL_PATH)/../ \\ $(LOCAL_PATH)/../src
LOCAL_SHARED_LIBRARIES := libts LOCAL_MODULE := pthres
LOCAL_PRELINK_MODULE := false include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= variance.c
LOCAL_C_INCLUDES += \\ $(LOCAL_PATH)/../ \\ $(LOCAL_PATH)/../src
LOCAL_SHARED_LIBRARIES := libts LOCAL_MODULE := variance
LOCAL_PRELINK_MODULE := false include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= dejitter.c
LOCAL_C_INCLUDES += \\ $(LOCAL_PATH)/../ \\ $(LOCAL_PATH)/../src
LOCAL_SHARED_LIBRARIES := libts LOCAL_MODULE := dejitter
LOCAL_PRELINK_MODULE := false include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= linear.c
LOCAL_C_INCLUDES += \\ $(LOCAL_PATH)/../ \\ $(LOCAL_PATH)/../src
LOCAL_SHARED_LIBRARIES := libts LOCAL_MODULE := linear
LOCAL_PRELINK_MODULE := false include $(BUILD_SHARED_LIBRARY)
(7)在tslib/tests目录下创建Mdroid.mk,内容如下:
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS)
LOCAL_SRC_FILES:= ts_calibrate.c fbutils.c testutils.c font_8x8.c font_8x16.c
LOCAL_C_INCLUDES += \\ $(LOCAL_PATH)/../ \\ $(LOCAL_PATH)/../src
LOCAL_SHARED_LIBRARIES := libts
LOCAL_SHARED_LIBRARIES += libutils libcutils
LOCAL_MODULE := tscalibrate
include $(BUILD_EXECUTABLE)
(8)在tslib/config.h文件中加入如下定义:
#define TS_CONF \#define PLUGIN_DIR \
#define TS_POINTERCAL \
(9)将下面路径文件 tslib/src/ts_open.c
tslib/tests/ts_calibrate.c tslib/tests/fbutils.c 中的
#include
#include
(10)将tslib/tests/ts_calibrate.c文件中 static int clearbuf(struct tsdev *ts) 修改为
static void clearbuf(struct tsdev *ts)
(11)修改tslib/etc/ts.conf内容如下:
module_raw input
module pthres pmin=1 module variance delta=30 module dejitter delta=100 module linear
(12)在android源代码init.rc中声明tslib相关的宏如下:
# touchscreen parameters
export TSLIB_FBDEVICE /dev/graphics/fb0 export TSLIB_CALIBFILE /data/etc/pointercal export TSLIB_CONFFILE /system/etc/ts.conf export TSLIB_TRIGGERDEV /dev/input/event0 export TSLIB_TSDEVICE /dev/input/event1
(13)重新编译后即可调用tscalibrate命令来校验触摸屏,校验后产生一个/data/etc/pointercal文件
Ubuntu下svn安装和使用
1 第一步:安装软件。 安装客户端
sudo apt-get install subversion 安装服务器端
sudo apt-get install libapache2-svn
2 svn的基本操作
(1)从服务器上下载代码:svn checkout 举例:
svn checkout svn://192.168.6.10/project/Source_code/trunk/src svn checkout可以所写成svn co
(2)添加新的文件或者文件夹到本地版本控制中 svn add 文件(夹)
如果指定的是一个文件夹,则会将文件夹的所有内容都添加进来,如果你只想要添加文件夹而不是文件夹里面的内容,则用如下参数
svn add --non-recursive 目录名
(3)提交本地更改到服务器
svn commit -m \说明信息\文件(夹)] 文件(夹)不填写则代码提交当前目录下(包含子目录)的所有更改 举例:
svn commit -m \
(4)显示本地修改状态
svn status [path]缩写成svn st [path]
path为空则代码显示当前目录下的所有修改文件(递归到子目录)的状态,状态显示如下: ? 不在svn控制中 M 内容被修改 C 发生冲突
A 预定加入到版本库中 K 被锁定 举例:svn st
(5)显示指定目录下所有文件(递归到子目录)的状态 svn status -v [path] 缩写成svn st -v [path]
(6)同步服务器代码到本地仓库 svn up
(7)显示指定目录下的文件和目录
svn list [path]缩写成svn ls [path]
正在阅读:
Android系统移植技术详解10-31
发票审批核准事前查验单12-19
2.生命体征的评估与护理试题及答案04-05
城郊型农家乐植物景观设计研究08-06
茅盾简介02-18
201X年9月入党积极分子思想汇报:实现中国梦-范文模板(3页)11-29
在大肠杆菌中高效表达外源蛋白的策略04-07
薛征宇2014数控作业304-23
11年7中初三一模语文试题及答案03-26
浅谈音乐教育中的德育渗透 -12-01
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 移植
- 详解
- Android
- 系统
- 技术
- 南大远程教育大学语文考试
- 板料成形有限元模拟系统前处理模块中关键技术的研究
- 小学四年级语文阅读训练题(附答案)
- 旅游线路设计作业
- 汽车租赁系统论文完整格式
- 2012春五年级(三)8k
- 2015南京四城区教师招聘考试面试备考指导:小学数学说课稿《圆柱的表面积》
- 数据结构,算法,软件工程一些知识点和习题(ByZL)
- 计量经济学(全)
- 从统战视角看不一样的长征
- 2019版高考语文一轮复习好题狂练:专题五 扩展语句、压缩语段 5
- 黑龙江省有机肥行业企业名录2018版329家
- 好媳妇好婆婆表彰主持词
- 6、高压气系统检修规程
- 前海股权交易中心首批1200家挂牌企业名单信息
- 《移动通信》西电第四版课后答案
- 安徽体育运动职业技术学院求职简历-古典版韵味 - 图文
- 新课改个人总结
- 许昌市软件开发公司名录2018版506家 - 图文
- 金属工艺学(焊接)