android设备的编译规则
2017-04-17 03:09
155 查看
1.编译设备的规则
android源码目录里有很多设备,这些设备编译的时候只能选择一个,设备的选择是有“SEC_PRODUCT”决定的。如果你的设备是smdk4x12,则需要设置SEC_PRODUCT=smdk4x12,最后执行编译命令:make -j4 PRODUCT-full_$SEC_PRODUCT-eng.
完整版的编译脚本如下所示:
#!/bin/bash CPU_JOB_NUM=$(grep processor /proc/cpuinfo | awk '{field=$NF};END{print field+1}') CLIENT=$(whoami) ROOT_DIR=$(pwd) KERNEL_DIR="$ROOT_DIR/../iTop4412_Kernel_3.0" export KERNEL_DIR #SEC_PRODUCT='generic' #Enable for generic build SEC_PRODUCT=smdk4x12 WIFI_CROSS_COMPILER=/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi- export WIFI_CROSS_COMPILER OUT_DIR="$ROOT_DIR/out/target/product/$SEC_PRODUCT" OUT_HOSTBIN_DIR="$ROOT_DIR/out/host/linux-x86/bin" option="recovery" function check_exit() { if [ $? != 0 ] then exit $? fi } # SEMCO wifi module build function build_wifi() { echo echo '[[[[[[[ Build wifi ]]]]]]]' echo cd $ROOT_DIR/compat-wireless make cd .. } function build_android() { echo echo '[[[[[[[ Build android platform ]]]]]]]' echo START_TIME=`date +%s` if [ $SEC_PRODUCT = "generic" ] then echo make -j$CPU_JOB_NUM echo make -j$CPU_JOB_NUM else echo make -j$CPU_JOB_NUM PRODUCT-full_$SEC_PRODUCT-eng echo make -j$CPU_JOB_NUM PRODUCT-full_$SEC_PRODUCT-eng fi check_exit END_TIME=`date +%s` let "ELAPSED_TIME=$END_TIME-$START_TIME" echo "Total compile time is $ELAPSED_TIME seconds" } function make_uboot_img() { cd $OUT_DIR echo echo '[[[[[[[ Make ramdisk image for u-boot ]]]]]]]' echo mkimage -A arm -O linux -T ramdisk -C none -a 0x40800000 -n "ramdisk" -d ramdisk.img ramdisk-uboot.img check_exit rm -f ramdisk.img echo cd ../../../.. } #----------NOTICE-------------------------------------------------------- #before compile the recovery image, please setting the option likes below # TARGET_NO_KERNEL := false #in file BoardConfig.mk #------------------------------------------------------------------------ function make_recovery_img() { echo "MAKE RECOVERY IMAGE----" chmod 777 build/tools/releasetools/ota_from_target_files #mkimage -A arm -O linux -T ramdisk -C none -a 0x40800000 -n "ramdisk" -d ramdisk-recovery.img ramdisk-recovery-uboot.img make otapackage TARGET_PRODUCT=full_smdk4x12 #mj } function make_fastboot_img() { echo echo '[[[[[[[ Make additional images for fastboot ]]]]]]]' echo if [ ! -f $KERNEL_DIR/arch/arm/boot/zImage ] then echo "No zImage is found at $KERNEL_DIR/arch/arm/boot" echo ' Please set KERNEL_DIR if you want to make additional images' echo " Ex.) export KERNEL_DIR=~ID/android_kernel_$SEC_PRODUCT" echo return fi echo 'boot.img ->' $OUT_DIR cp $KERNEL_DIR/arch/arm/boot/zImage $OUT_DIR/zImage $OUT_HOSTBIN_DIR/mkbootimg --kernel $OUT_DIR/zImage --ramdisk $OUT_DIR/ramdisk-uboot.img -o $OUT_DIR/boot.img check_exit echo 'update.zip ->' $OUT_DIR zip -j $OUT_DIR/update.zip $OUT_DIR/android-info.txt $OUT_DIR/boot.img $OUT_DIR/system.img check_exit echo } echo echo ' Build android for '$SEC_PRODUCT'' echo case "$SEC_PRODUCT" in smdkv310) build_android make_uboot_img make_fastboot_img ;; smdk4x12) #build_wifi build_android make_uboot_img make_fastboot_img if [[ $1 = $option ]] then make_recovery_img fi ;; smdk5250) build_android make_uboot_img make_fastboot_img ;; generic) build_android make_uboot_img ;; *) echo "Please, set SEC_PRODUCT" echo " export SEC_PRODUCT=smdkv310 or SEC_PRODUCT=smdk4x12 or SEC_PRODUCT=smdk5250" echo " or " echo " export SEC_PRODUCT=generic" exit 1 ;; esac echo ok success !!! exit 0
2.编译信息的显示由buildinfo.sh控制
build/tools/buildinfo.sh
相关文章推荐
- 面向设备的Android源码编译
- Android 设备编译方法
- Android的NKD编译规则问题
- Android源码编译得到的adb为什么不识别设备?
- android 单独编译某个模块发生错误:make: *** 没有规则可以创建“out/target/common/obj/APPS/Browser_intermediates/src/R.stamp
- android编译时没有规则可以创建“out/target/common/obj/APPS/CalculatorTests_intermediates/classes-full-debug.jar”问
- android ARM 汇编学习—— 在 android 设备上编译c/cpp代码并用objdump/readelf等工具分析
- Android5.1.1源码 - host编译和设备编译
- 编译android源码并且flash进设备
- 如何在Android设备中用NDK编译SQLite并且对SQLite进行操作(增删)-How to Compile SQLite for Android using NDK
- Delphi读取Android设备联系人.DelphiXE6中编译通过
- Make ADB To Support Android Devices(如何使ADB在Linux下支持Android设备的udev规则配置)
- (跨平台)cocos2d-x C++ or Object-C(前端)调用C# webservices(后台),实现交叉编译到Android/IOS/WinPhone等移动终端设备
- Linux上添加udev规则使adb可以操作Android设备的注意问题
- android输入设备配置文件命名规则
- Android源码编译---Nexus 设备出厂镜像
- Android源码编译(6)---选择设备
- 如何在android设备上insmod自己单独编译的.ko,解决签名问题
- VS2005智能设备CAB安装包编译错误的处理
- C++编译时函数名修饰约定规则