【问题标题】:Building from android source code从android源代码构建
【发布时间】:2013-01-16 11:36:59
【问题描述】:

我不太明白 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 切换回 master 分支;它又下载了 2GB 的源代码。第一次下载源代码我很困惑,第二次和第三次下载的3GB源代码是什么?

还有 2 个问题:

  1. 如何正确切换分支?
  2. lunch的工具是什么?官方网站一直提到它,但从未介绍它,也没有提到在哪里下载它以及如何设置它(你可以想象如果我在谷歌中搜索“午餐”会出现什么),只是将其声明为“构建工具”。

P.S:在这个问题的时候,谷歌 Android 项目的主分支在 4.2 Jelly Bean。万一以后有人发现这个问题

【问题讨论】:

  • 你有没有得到任何问题的答案,我也面临同样的问题。如果你能给出答案,我很高兴。
  • @AndroEmbedded 我现在只知道午餐是一种准备使用特定配置进行构建的工具。它是 build/envsetup.sh 脚本添加的一个 shell 函数。这是 CyanogenMod 团队对这些工具的描述,wiki.cyanogenmod.org/w/Envsetup_help。我仍然没有弄清楚 repo 是如何工作的。

标签: android build android-source repository


【解决方案1】:

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

回答问题 #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 中。然后,告诉它你想要构建什么。对于调试版本,告诉午餐你想要全英文。您可以启动不带参数的午餐以获得午餐菜单。

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,它大大提高了速度。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 2012-12-11
    相关资源
    最近更新 更多