从android源代码构建

时间:2013-01-16 11:36:59

标签: android build android-source repository

我不太明白Android版控制工具“repo”的工作原理。

我第一次运行它repo init -u https://android.googlesource.com/platform/manifest ; repo sync,下载了9GB的代码。

然后我想切换到一个分支,我可以为我的Nexus 7构建4.1.1。

我在网上进行了研究,发现再次使用repo init -b BRANCH_NAMErepo sync就可以了。但是当我这样做时,它开始下载一些新代码(超过1GB),然后我停止了它并使用repo init切换回主分支;它下载了另外2GB的源代码。自从我第一次下载源代码后,我感到非常困惑,第二次和第三次下载的3GB源代码是什么?

另外2个问题:

  1. 如何正确切换分支?
  2. 这个名为lunch的工具是什么?官方网站一直在提及它,但从未介绍它,也没有提到下载它的位置以及如何设置它(你可以想象如果我在google搜索'午餐'会发生什么),只是说它是''构建工具'。
  3. P.S:在提出这个问题时,Google Android项目的主分支是4.2 Jelly Bean。如果有人在将来发现这个问题

1 个答案:

答案 0 :(得分:2)

我知道这是一个古老的问题,但我最近经历了同样的经历,并认为我会分享我学到的东西。

回答问题#1:

我没有切换分支。您可以为所需的任何分支同步所有代码,并构建该分支。例如,我有两个:master和4.3_r1,在一个文件夹中。为此,我创建了两个文件夹:

mkdir /Volumes/android_source/master mkdir /Volumes/android_source/4.3_r1

要初始化和同步master,我输入:

cd /Volumes/android_source/master
repo init -u https://android.googlesource.com/platform/manifest
repo sync

然后,为了初始化和同步4.3_r1构建,我输入:

cd /Volumes/android_source/4.3_r1
repo init -u https://android.googlesource.com/platform/manifest -b android-4.3_r1
repo sync

在构建之前,请切换到基目录并获取envsetup.sh文件:

# cd /Volumes/android_source/master
# source build/envsetup.sh
including device/asus/deb/vendorsetup.sh
including device/asus/flo/vendorsetup.sh
including device/asus/grouper/vendorsetup.sh
including device/asus/tilapia/vendorsetup.sh
including device/generic/armv7-a-neon/vendorsetup.sh
including device/generic/mips/vendorsetup.sh
including device/generic/x86/vendorsetup.sh
including device/lge/mako/vendorsetup.sh
including device/samsung/maguro/vendorsetup.sh
including device/samsung/manta/vendorsetup.sh
including device/samsung/toro/vendorsetup.sh
including device/samsung/toroplus/vendorsetup.sh
including device/samsung_slsi/arndale/vendorsetup.sh
including device/ti/panda/vendorsetup.sh
including sdk/bash_completion/adb.bash

要回答问题#2,一旦你运行envsetup.sh,午餐将在你的PATH中。然后,告诉它你想要构建什么。对于调试版本,告诉午餐你想要全英。你可以推出没有args的午餐来获得午餐菜单。

mbpr15:Android awt$ lunch full-eng

============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.3.2.1.000.000
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
TARGET_CPU_VARIANT=generic
HOST_ARCH=x86
HOST_OS=darwin
HOST_OS_EXTRA=Darwin-13.0.0-x86_64-i386-64bit
HOST_BUILD_TYPE=release
BUILD_ID=OPENMASTER
OUT_DIR=out
============================================

现在你已经准备好了:

# make -j16

我有一个8核处理器,所以当我运行构建时我使用-j16,它大大提高了速度。

希望有所帮助。

相关问题