【Android源码 栏目提醒】:网学会员在Android源码 频道为大家收集整理了“[精]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 gt/bin/repo chmod ax /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 -gt
android-2.2.1_r1 new tag
android-2.2_r1 -gt
android-2.2_r1 new tag
android-2.2_r1.1 -gt
android-2.2_r1.1 new tag
android-2.2_r1.2 -gt
android-2.2_r1.2 new tag
android-2.2_r1.3 -gt
android-2.2_r1.3 new tag
android-cts-2.2_r1 -gt
android-cts-2.2_r1 new tag
android-cts-2.2_r2 -gt
android-cts-2.2_r2 new tag
android-cts-2.2_r3 -gt
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后点击quot确定quot即可 一句话来概括就是创建一个主组为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“运行配置界面 点击quot添加quot来添加共享文件夹点击quot浏览quot来选择需要共享的文件夹选择quot可擦写quot和quot显示quot点击quot访问quot可以设置访问权限最好设置成quot允许所有用户访问quot 本文来自CSDN博客转载请标明出处http://blog.csdn.net/jiajie961/archive/2010/11/04/5987821.aspx 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 本文来自CSDN博客转载请标明出处http://blog.csdn.net/jiajie961/archive/2010/11/05/5989328.aspx 创建一个新的
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 dont 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.mkBoardConfig.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字节的国家码的列表影响到quotSettingsquot中的语言时间日期和货币格式设置 举例en_GB de_DE es_ES fr_CA PRODUCT_PACKAGES 需要安装的APK应用程序列表 PRODUCT_DEVICE 工作设计名称即主板名称 PRODUCT_MANUFACTURER 生产厂家 PRODUCT_BRAND 软件设计针对的客户品牌 PRODUCT_PROPERTY_OVERRIDES 以quotkeyvaluequot为格式的属性列表 PRODUCT_COPY_FILES 文件复制列表格式为“原文件路径目的文件路径”编译过程中会按照此规则复制文件 PRODUCT_OTA_PUBLIC_KEYS 产品的OTA公共密匙列表 PRODUCT_POLICY 声明此产品使用的政策 PRODUCT_PACKAGE_OVERLAYS 指示是否使用默认资源或添加任何产品特定的资源例如vendor/acme/overlay PRODUCT_CONTRIBUTORS_FILE HTML文件中包含项目的贡献者 PRODUCT_TAGS 以空格分隔开的指定产品关键词列表 本文来自CSDN博客转载请标明出处ttp://blog.csdn.net/jiajie961/archive/2010/11/07/5993126.aspx 制作ubifs文件系统 1安装相关的软件包 apt-get install liblzo2-dev 2获取相关的工具mkfs.ubifs和ubinize 这两个工具是制作ubifs文件系统的时候用到它们是mtd-utils工具包中的内容mtd-utils工具包你可以从下面的网站下载和编译出来 官方网站http://www.linux-mtd.infradead.org/index.html 资源下载网站http://git.infradead.org/ 3创建一个create-ubifs.sh脚本主要是调用mkfs.ubifs和ubinize工具和相关参数来制作ubifs文件系统内容如下 /bin/bash Script to generate ubifs filesystem image. ubinize configuration file config_filerootfs_ubinize.cfg Function to check result of the command check_result if -ne 0 then echo quotFAILEDquot else echo quotSUCCESSFULquot fi Function to check whether an application exists check_program for cmd in quotquot do which cmd gt /dev/null 2gtamp1 if -ne 0 then echo echo quotCannot find command quotcmdquotquot echo exit 1 fi done if -ne 5 then echo echo Usage: create-ubifs.sh page_size_in_bytes pages_per_block partition_size_in_bytes blocks_per_device path_to_rootfs echo exit fi page_size_in_bytes1 echo quotPage size page_size_in_bytesbytes.quot pages_per_block2 echo quotPages per block pages_per_blockquot partition_size_in_bytes3 echo quotFile-system partition size partition_size_in_bytesbytes.quot blocks_per_device4 echo quotBlocks per device blocks_per_devicequot path_to_rootfs5 wear_level_reserved_blocks is 1 of total blcoks per device wear_level_reserved_blocksexpr blocks_per_device / 100 echo quotReserved blocks for wear level wear_level_reserved_blocksquot logical_erase_block_size is physical erase block size minus 2 pages for UBI logical_pages_per_blockexpr pages_per_block - 2 logical_erase_block_sizeexpr page_size_in_bytes logical_pages_per_block echo quotLogical erase block size logical_erase_block_sizebytes.quot Block size page_size pages_per_block block_sizeexpr page_size_in_bytes pages_per_block echo quotBlock size block_sizebytes.quot physical blocks on a partition partition size / block size partition_physical_blocksexpr partition_size_in_bytes / block_size echo quotPhysical blocks in a partition partition_physical_blocksquot Logical blocks on a partition physical blocks on a partitiion - reserved for wear level patition_logical_blocksexpr partition_physical_blocks - wear_level_reserved_blocks echo quotLogical blocks in a partition patition_logical_blocksquot File-system volume Logical blocks in a partition Logical erase block size fs_vol_sizeexpr patition_logical_blocks logical_erase_block_size echo quotFile-system volume fs_vol_sizebytes.quot echo echo quotGenerating configuration file...quot echo quotrootfs-volumequot gt config_file echo quotmodeubiquot gtgt config_file echo quotimagerootfs_ubifs.imgquot gtgt config_file echo quotvol_id0quot gtgt config_file echo quotvol_sizefs_vol_sizequot gtgt config_file echo quotvol_typedynamicquot gtgt config_file echo quotvol_namesystemquot gtgt config_file echo Note: Check necessary program for installation echo -n quotChecking necessary program for installation......quot check_program mkfs.ubifs ubinize echo quotDonequot Generate ubifs image echo -n quotGenerating ubifs...quot ./mkfs.ubifs -x lzo -m page_size_in_bytes -e logical_erase_block_size -c patition_logical_blocks -o rootfs_ubifs.img -d path_to_rootfs check_result echo -n quotGenerating ubi image out of the ubifs...quot ./ubinize -o ubi.img -m page_size_in_bytes -p block_size -s page_size_in_bytes config_file -v check_result rm -f rootfs_ubifs.img rm -f config_file 4将mkfs.ubifs和ubinize以及create-ubifs.sh放置在同一目录下然后调用create-ubifs.sh即可创建ubifs文件系统create-ubifs.sh用法如下 create-ubifs.sh page_size_in_bytes页大小 pages_per_block每个扇区的页数量 partition_size_in_bytes分区大小 blocks_per_device扇区数量 path_to_rootfs文件系统路径 举例如下 ./create-ubifs.sh 2048 64 83886080 4096 ./rootfs 上面命令的意思是调用create-ubifs.sh将当前目录下的rootfs文件夹的内容制作成ubifs文件系统nand flash的页大小为2k每个扇区有64页 总共有4096个扇区要制作的文件系统的大小为83886080字节。
本文来自CSDN博客转载请标明出处http://blog.csdn.net/jiajie961/archive/2010/11/08/5994713.aspx
android编译系统makefileAndroid.mk写法
android编译系统的makefile文件
Android.mk写法如下 1
Android.mk文件首先需要指定LOCAL_PATH变量用于查找源文件。
由于一般情况下
Android.mk和需要编译的源文件在同一目录下所以定义成如下形式 LOCAL_PATH:call my-dir 上面的语句的意思是将LOCAL_PATH变量定义成本文件所在目录路径。
2
Android.mk中可以定义多个编译模块每个编译模块都是以include CLEAR_VARS开始 以include BUILD_XXX结束。
include CLEAR_VARS CLEAR_VARS由编译系统提供指定让GNU MAKEFILE为你清除除LOCAL_PATH以外的所有LOCAL_XXX变量 如LOCAL_MODULELOCAL_SRC_FILESLOCAL_SHARED_LIBRARIESLOCAL_STATIC_LIBRARIES等。
include BUILD_STATIC_LIBRARY表示编译成静态库 include BUILD_SHARED_LIBRARY表示编译成动态库。
include BUILD_EXECUTABLE表示编译成可执行程序 3举例如下frameworks/base/libs/audioflinger/
Android.mk LOCAL_PATH: call my-dir include CLEAR_VARS 模块一 ifeq AUDIO_POLICY_TESTtrue ENABLE_AUDIO_DUMP : true endif LOCAL_SRC_FILES: AudioHardwareGeneric.cpp AudioHardwareStub.cpp AudioHardwareInterface.cpp ifeq ENABLE_AUDIO_DUMPtrue LOCAL_SRC_FILES AudioDumpInterface.cpp LOCAL_CFLAGS -DENABLE_AUDIO_DUMP endif LOCAL_SHARED_LIBRARIES : libcutils libutils libbinder libmedia libhardware_legacy ifeq strip BOARD_USES_GENERIC_AUDIOtrue LOCAL_CFLAGS -DGENERIC_AUDIO endif LOCAL_MODULE: libaudiointerface ifeq BOARD_HAVE_BLUETOOTHtrue LOCAL_SRC_FILES A2dpAudioInterface.cpp LOCAL_SHARED_LIBRARIES liba2dp LOCAL_CFLAGS -DWITH_BLUETOOTH -DWITH_A2DP LOCAL_C_INCLUDES call include-path-for bluez endif include BUILD_STATIC_LIBRARY 模块一编译成静态库 include CLEAR_VARS 模块二 LOCAL_SRC_FILES: AudioPolicyManagerBase.cpp LOCAL_SHARED_LIBRARIES : libcutils libutils libmedia ifeq TARGET_SIMULATORtrue LOCAL_LDLIBS -ldl else LOCAL_SHARED_LIBRARIES libdl endif LOCAL_MODULE: libaudiopolicybase ifeq BOARD_HAVE_BLUETOOTHtrue LOCAL_CFLAGS -DWITH_A2DP endif ifeq AUDIO_POLICY_TESTtrue LOCAL_CFLAGS -DAUDIO_POLICY_TEST endif include BUILD_STATIC_LIBRARY 模块二编译成静态库 include CLEAR_VARS 模块三 LOCAL_SRC_FILES: AudioFlinger.cpp AudioMixer.cpp.arm AudioResampler.cpp.arm AudioResamplerSinc.cpp.arm AudioResamplerCubic.cpp.arm AudioPolicyService.cpp LOCAL_SHARED_LIBRARIES : libcutils libutils libbinder libmedia libhardware_legacy ifeq strip BOARD_USES_GENERIC_AUDIOtrue LOCAL_STATIC_LIBRARIES libaudiointerface libaudiopolicybase LOCAL_CFLAGS -DGENERIC_AUDIO else LOCAL_SHARED_LIBRARIES libaudio libaudiopolicy endif ifeq TARGET_SIMULATORtrue LOCAL_LDLIBS -ldl else LOCAL_SHARED_LIBRARIES libdl endif LOCAL_MODULE: libaudioflinger ifeq BOARD_HAVE_BLUETOOTHtrue LOCAL_CFLAGS -DWITH_BLUETOOTH -DWITH_A2DP LOCAL_SHARED_LIBRARIES liba2dp endif ifeq AUDIO_POLICY_TESTtrue LOCAL_CFLAGS -DAUDIO_POLICY_TEST endif ifeq TARGET_SIMULATORtrue ifeq HOST_OSlinux LOCAL_LDLIBS -lrt -lpthread endif endif ifeq BOARD_USE_LVMXtrue LOCAL_CFLAGS -DLVMX LOCAL_C_INCLUDES vendor/nxp LOCAL_STATIC_LIBRARIES liblifevibes LOCAL_SHARED_LIBRARIES liblvmxservice LOCAL_SHARED_LIBRARIES liblvmxipc endif include BUILD_SHARED_LIBRARY 模块三编译成动态库 4编译一个应用程序APK LOCAL_PATH : call my-dir include CLEAR_VARS Build all java files in the java subdirectory LOCAL_SRC_FILES : call all-subdir-java-files Name of the APK to build LOCAL_PACKAGE_NAME : LocalPackage Tell it to build an APK include BUILD_PACKAGE 5编译一个依赖于静态Java库static.jar的应用程序 LOCAL_PATH : call my-dir include CLEAR_VARS List of static libraries to include in the package LOCAL_STATIC_JAVA_LIBRARIES : static-library Build all java files in the java subdirectory LOCAL_SRC_FILES : call all-subdir-java-files Name of the APK to build LOCAL_PACKAGE_NAME : LocalPackage Tell it to build an APK include BUILD_PACKAGE 6编译一个需要用平台的key签名的应用程序 .