Android系统移植技术详解

更新时间:2023-10-31 18:39:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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//目录下的AndroidBoard.mk文件,加入如下内容

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]

本文来源:https://www.bwwdw.com/article/4gd2.html

Top