编译准备:
ndk:android-ndk-r8e,需要打google的patch,很简单,只需改一行即可
sdk:adt-bundle-linux-x86-20131030.zip,并下载android-16_r03.zip,将其解压到adt-bundle-linux-x86-20131030/sdk/platforms目录
交叉编译工具链:gcc-linaro-arm-linux-gnueabihf-4.8-2013.04-20130417_linux.tar.bz2
下载完后解压,建议把这三个包都解压到/opt目录,目前在191、192、194服务器上编译工具都安装好了,不用重复下载。
代码下载:
我搭建了一个repo,下载方式:
repo init -u git://10.0.12.140/vcam/manifest.git
repo sync
v-repo bl master
v-repo addremote
repo forall -c "sed -i s#android#vcam#g .git/config"
注意:如果用git log在命令行中看到的提交记录有乱码,需要把终端的显示文字改为UTF8编码,在SecureCRT中是点【选项】 【会话选项】【外观】【字符编码】,选【UTF-8】,提交时也尽量用中文写详细,这样大家扫一眼就能看懂。
编译:
export PATH=/opt/android-ndk-r8e/:/opt/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin:/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.04-20130417_linux/bin/:$PATH
export ANDROID_HOME=/opt/adt-bundle-linux-x86-20131030/sdk
. build/envsetup.sh
lunch 3
make
添加一个新的产品:
请仿照products/wificar目录
注意事项:
1 如果一个库代码量庞大并且不需要修改,只需要放一个编译好的.a或.so文件以及头文件,相同的头文件和库文件不要保留多个拷贝。
arm端的.a库可以放在libs/server/prebuilts/static_lib/目录,so库放在libs/server/prebuilts/prepared_rootfs_system/lib/目录,头文件放在libs/server/prebuilts/include/目录。
android端的.a库放在libs/client/prebuilts/static_lib/,so库放在libs/client/prebuilts/lib/。
如果有头文件同时被arm端和android端调用,放在libs/both/include/。
2 客户端和设备端QT代码可能会有很多重复,为了便于维护,防止发生不一致的问题,要避免把相同的代码拷贝到多处,建议把相同的代码放到一个代码目录中,并编译为ARM端和ANDROID端的两个库,可以参考v882commandclient。
3 如果添加特殊编译,避免修改build目录以免影响其他产品的编译,我添加了一些特殊脚本的处理,比如默认初始化会调用products/<产品>/configs/prepare_rootfs.sh,创建img文件时调用products/<产品>/configs/make_rootfs.sh