全志A50/A100 Clone Project

MTK关于克隆工程有好几个FAQ:

[FAQ13465] L版本How to clone project

[FAQ17707] M版本如何clone project

刚开始接触全志觉得克隆工程好麻烦,没有文档支撑,不知道从何入手,后来才知道全志也做了类似的工作,并且直接写在了/device/softwinner/common/vendorsetup.sh里面:

function clone()
{
    if [ $# -ne 0 ]; then
        echo "don't enter any params"
        return
    fi
    local source_device=$(get_build_var TARGET_DEVICE)
    local source_product=$(get_build_var TARGET_PRODUCT)
    local source_path=$(gettop)/device/softwinner/$source_device
    # PRODUCT_DEVICE
    read_var PRODUCT_DEVICE "$source_device"
    if [ $source_device == $PRODUCT_DEVICE ]; then
        echo "don't have the same device name!"
        return
    fi
    TARGET_PATH=$(gettop)/device/softwinner/$PRODUCT_DEVICE
    if [ -e $TARGET_PATH ]; then
        read -p "$PRODUCT_DEVICE is already exists, delete it?(y/n)"
        case $REPLY in
            [Yy])
                echo "delete"
                rm -rf $TARGET_PATH
                ;;
            [Nn])
                echo "do nothing"
                return
                ;;
            *)
                echo "do nothing"
                return
                ;;
        esac
    fi
    # copy device
    cp -r $source_path $TARGET_PATH
    rm -rf $TARGET_PATH/.git*
    sed -i "s/$source_device/$PRODUCT_DEVICE/g" `grep -rl $source_device $TARGET_PATH`
    # PRODUCT_NAME
    read_var PRODUCT_NAME "$source_product"
    if [ $source_product == $PRODUCT_NAME ]; then
        echo "don't have the same product name!"
        return
    fi
    mv $TARGET_PATH/$source_product.mk $TARGET_PATH/$PRODUCT_NAME.mk
    sed -i "s/$source_product/$PRODUCT_NAME/g" `grep -rl $source_product $TARGET_PATH`
    # config
    read_var PRODUCT_BOARD "$(get_build_var PRODUCT_BOARD)"
    sed -i "s/\(PRODUCT_BOARD := \).*/\1$PRODUCT_BOARD/g" $TARGET_PATH/$PRODUCT_NAME.mk
    read_var PRODUCT_MODEL "$(get_build_var PRODUCT_MODEL)"
    sed -i "s/\(PRODUCT_MODEL := \).*/\1$PRODUCT_MODEL/g" $TARGET_PATH/$PRODUCT_NAME.mk
    density=`sed -n 's/.*ro\.sf\.lcd_density=\([0-9]\+\).*/\1/p' $TARGET_PATH/$PRODUCT_NAME.mk`
    read_var DENSITY "$density"
    sed -i "s/\(ro\.sf\.lcd_density=\).*/\1$DENSITY/g" $TARGET_PATH/$PRODUCT_NAME.mk
    # 160(mdpi) 213(tvdpi) 240(hdpi) 320(xhdpi) 400(400dpi) 480(xxhdpi) 560(560dpi) 640(xxxhdpi)
    if [ $DENSITY -lt 186 ]; then
        PRODUCT_AAPT_PREF_CONFIG=mdpi
    elif [ $DENSITY -lt 226 ]; then
        PRODUCT_AAPT_PREF_CONFIG=tvdpi
    elif [ $DENSITY -lt 280 ]; then
        PRODUCT_AAPT_PREF_CONFIG=hdpi
    elif [ $DENSITY -lt 360 ]; then
        PRODUCT_AAPT_PREF_CONFIG=xhdpi
    elif [ $DENSITY -lt 440 ]; then
        PRODUCT_AAPT_PREF_CONFIG=400dpi
    elif [ $DENSITY -lt 520 ]; then
        PRODUCT_AAPT_PREF_CONFIG=xxhdpi
    elif [ $DENSITY -lt 600 ]; then
        PRODUCT_AAPT_PREF_CONFIG=560dpi
    else
        PRODUCT_AAPT_PREF_CONFIG=xxxhdpi
    fi
    sed -i "s/\(PRODUCT_AAPT_PREF_CONFIG := \).*/\1$PRODUCT_AAPT_PREF_CONFIG/g" $TARGET_PATH/$PRODUCT_NAME.mk
}

那么就是说只需要cp一下longan/device/config/chips/a50/configs/xxx项目为新的项目,然后在Android下面执行clone就可以完整的克隆出新的项目了,以下是全志回复。

目前是支持克隆方案,仅限于同一芯片的多个方案克隆,不同系列芯片不支持克隆替换。
具体步骤如下:
1、在android目录下,正常编译固件那样lunch一个基准方案(以A100 b3 Android 10标案参考):
android$ source build/envsetup.sh
android$ lunch ceres_b3-userdebug
2、进入板卡配置目录复制方案(如果同一个硬件可以不修改):
android$ cbd
longan/device/config/chips/a100/configs/b3$
$ cd ..
longan/device/config/chips/a100/configs$
$ cp -rf b3 myboard
3、然后回到android目录下克隆android方案:
android$ ca
android$ clone
please enter PRODUCT_DEVICE(ceres-b3): mydevice
please enter PRODUCT_NAME(ceres_b3): myproduct
please enter PRODUCT_BOARD(b3): myboard
please enter PRODUCT_MODEL(QUAD-CORE A100 b3): "QUAD-CORE MYMODEL"
please enter DENSITY:

其中,
a. mydevice为设备名称,myproduct为产品名称,具体会生成方案配置如下:device/softwinner/mydevice/myproduct.mk。
b. 克隆的方案仍会引用对应common的内容,如device/softwinner/ceres-common/ceres-common.mk。
c. longan与android方案中的myboard名字需要保持一致。
d. PRODUCT_MODEL如果包含空格需要使用引号引起来。
e. 如果不填值则使用括号中原来的值,如上例中density=160。

 

PS:System AService 写到:

克隆的Android,编译的时候会报如下错误,请问怎么解决
FAILED: ninja: 'hardware/xradio/bt/libbt-vendor/include/vnd_generic.txt', needed by 'out/target/product/MID_1089IPS/gen/SHARED_LIBRARIES/libbt-vendor_intermediates/vnd_buildcfg.h', missing and no known rule to make it
14:25:17 ninja failed with: exit status 1

你好,克隆的方案目录下device/softwinner/mydevice/configs/bluetooth/vnd_ceres-b3.txt这个文件改成vnd_mydevice.txt。这个之前处理的时候漏掉了。

1、安装PC上的升级工具Livesuite.exe。      2、打开Livesuit      找到升级工具文件双击打开,如下图所示:      3、选择固件      点击上图的“否”关闭用户向导升级,并点击“选择固件”按钮选择后缀名为.img文件,如下图:      4、关闭电源      确保将I130关机(开机状态下,长按电源键8秒钟以上可强制断电关机)      5、按下组合键开始升级      按住I130平板的任意键(除了电源键,推荐音量+)不放开,再通过USB数据线连上电脑,然后快速连续点击电源键5-6次,记住此时千万不能松开开始按住的按键,直到电脑上出现下图界面时,松开所有键开始升级。      (注:如果此时弹出安装驱动程序的对话框,请把路径指向Livesuit安装目录下的UsbDriver文件夹,并按下一步提示完成驱动程序的安装)。      6、选择强制格式化升级      Livesuit提示“是否强制格式化”,点击“是”,则原先安装的APK全部被删除,点击否则原装APK不会删除。      推荐强制格式化,进行彻底更新升级!否则可能更新不彻底而变砖!      7、升级开始      弹出“确定要强制格式化”对话框,选择“是”,升级开始,如下图:      8、升级完成      固件更新过程大约持续3分半钟左右,请耐心等待,直到提示“升级成功”。   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值