Arch Linux 下Android 源代码的下载以及编译

之前把公司的开发环境由Ubuntu Kylin 换成了Arch Linux。而Arch 下由于种种问题公司的代码一直编只是去。搞定了之后也一直忘了写下来,希望能给相同在Arch 下做Android 开发的另类一点帮助吧。这里所编译的Android 版本号基于Google 的Android 5.1。

安装基本依赖

首先在文件/etc/pacman.conf中打开你的multilib repo

[multilib]
Include = /etc/pacman.d/mirrorlist

然后强制更新一下本地repo

sudo pacman -Syy

然后安装编译所须要的依赖

sudo pacman -S base-devel bc curl git gnupg gperf jdk7-openjdk lib32-expat lib32-gcc-libs lib32-glib2 lib32-glibc lib32-glibc lib32-libdbus lib32-libffi lib32-libpng lib32-ncurses lib32-pcre lib32-readline lib32-zlib libpng libxml2 libxslt ncurses perl-switch readline schedtool sdl squashfs-tools unzip wxgtk zip zlib

另外你还须要手动设置几个软连接

/usr/lib/libtinfo.so -> /usr/lib/libncursesw.so
/usr/lib/libtinfo.so.5 -> /usr/lib/libncursesw.so
/usr/lib/libtinfo.so.6 -> /usr/lib/libncursesw.so
/usr/lib/libncurses.so.5 -> /usr/lib/libncursesw.so
/usr/lib/libncurses.so.6 -> /usr/lib/libncursesw.so

Python2 虚拟环境

由于Google 的repo脚本须要Python2 环境。而Arch Linux 中默认使用Python3,所以须要能够非全局地切换到Python2 环境。这个能够通过包python-virtualenvwrapper搞定。

首先安装这个包

sudo pacman -S python-virtualenvwrapper

由于Google 的envsetup.sh脚本必须由bash 解释,所以须要事先切换到bash,当然假设你默认使用bash 就不须要切换。兴许会測试一下使用zsh 的效果

bash

然后创建一个python2 虚拟环境,前两行的设置环境变量最好写入你的shell 配置文件

export WORKON_HOME=~/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=$(which python3)
source /usr/bin/virtualenvwrapper.sh
mkvirtualenv -p $(which python2) python2

之后我们就进入了python2 虚拟环境。值得注意的是python-virtualenvwrapper能够创建python2 虚拟环境,可是必须依赖于python3 才干运行。假设你以后再想切换到python2 环境,仅仅须要在确保环境变量正确的情况下运行source内建指令和workon函数就能够了。

最后不要忘记清空LC_ALL环境变量以让LC*变量生效。否则repo会毫不留情的崩掉

export LC_ALL=‘‘

在创建的python2 虚拟环境中。如今Google 的repo脚本应该能够正确运行,能够同步代码到本地了。

假设你的repo仍然崩溃,多半是你在把开发环境迁移到Arch 之前是用过repo,假设是这样那么运行以下的语句然后再次開始你的sync 操作

rm ~/.repopickle_.gitconfig

一条错误规则

一个很坑人的地方就是,Google 很久之前就写错了一条Makefile 规则。

8 月下旬提前拿到了Android M 预览版的源代码,然而发现这条错误规则仍然存在。

在低版本号的GNU Make 上,这条规则被其它规则所覆盖,代码能够顺利编译,然而由于Arch Linux 的滚动升级特性,高版本号的GNU Make 已经能够正确使用这条错误的规则。导致编译中断。你须要改动chipram/Makefile,改动方法例如以下

diff --git a/Makefile b/Makefile
index 3017572..59a32df 100644
--- a/Makefile
+++ b/Makefile
@@ -230,7 +230,7 @@ $(SPLOBJDIR)%.o:    $(SRCTREE)/nand_spl/%.c
        $(CC) $(CFLAGS) -mlittle-endian -DCONFIG_NAND_SPL -c -o [email protected] $<

 $(SPLOBJDIR)%.o:       $(SRCTREE)/nand_spl/board/$(VENDOR)/$(SOC)/%.S
-       $(CC) $(CFLAGS) -mlittle-endian -DCONFIG_NAND_SPL -c -o [email protected] $<
+       $(CC) $(AFLAGS) -mlittle-endian -DCONFIG_NAND_SPL -c -o [email protected] $<

 $(SPLOBJDIR)%.o:       $(SRCTREE)/arch/$(ARCH)/lib/%.S
        $(CC) $(AFLAGS) -mlittle-endian -DCONFIG_NAND_SPL -c -o [email protected] $<

代码的编译

在运行编译之前,须要再次设置LC_ALL以覆盖LC*变量,否则编译開始不了多久你就会栽一个跟头

export LC_ALL=C

然后就是编译Android 代码的标准步骤了

source ./build/envsetup.sh
lunch
make update-api droid otapackage -j8

高速设置函数

最后提供一个高速切换到Android 编译环境的函数android_env,与之相配的另一个repo函数。将这个两个函数写入你的shell 配置文件(比如~/.zshrc) 中就可以,之后你能够使用指令

android_env

高速切换到编译环境。适合默认shell 为zsh 的用户。这两个函数能够在这里得到。

另外一些杂七杂八的问题是公司自研部分的问题,包含Makefile 写错FLAG(编译參数)等各种毛病,就不在这里写了。

顺便用Arch 作为开发环境事实上并没有什么不方便,滚动升级意味着工具链能够保持最新,高度可制定性也决定了系统做成一个轻量级的开发环境,同一时候优秀的包管理机制也很省心,和Ubuntu 相比也算是一个优势吧。

时间: 2024-08-24 09:42:19

Arch Linux 下Android 源代码的下载以及编译的相关文章

完整版linux下android源码下载、编译、模拟器启动运行

一.环境说明: 1.VMware版本:8.0.3 build-703057 2.liunx系统:Ubuntu10.10 3.jdk:sun-java6-jdk 二.Ubuntu 10.10更新源列表 由于??Ubuntu 10.10版本的源已经过期了,所以,需要对其进行更新,Ubuntu 10.10 已经发布了,下面提供更新源方法与更新源列表地址: 1.sudo gedit /etc/apt/sources.list     编辑你的源列表,将原来的内容全部删除,添加下面的源,复制到你的列表中,

Android源代码的下载和编译

Android源码包括应用程序源码.SDK工具集以及NDK工具集等等,如何下载?请看: 配置Android源代码下载环境: 创建一个用于存放下载脚本文件(repo)的目录 # mkdir ~/bin # PATH=~/bin:$PATH 下载rope脚本文件 # curl https://dl-ssl.google.com/dl/googlesource/git-repo > ~/bin/repo # chmod a+x ~/bin/repo 创建用于存放Android源代码的目录 # mkdi

第四章 源代码的下载和编译

Android移植主要就是Linux内核的移植,而Linux内核的移植主要是Linux驱动的移植.为了开发和测试Linux驱动,需在Ubuntu Linux下搭建两套开发环境:Android应用程序开发环境和Linux内核开发环境.需要对源代码进行下载和编译,由于Android源代码包含了很多东西,如内嵌在Android系统中的应用程序的源代码,Android SDK带的各种工具的源代码,Android NDK的源代码,以及HAL源代码,所以对Android源代码的下载.编译和测试过程比较复杂.

Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记

Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记     本章学习了使用git下载两套源代码并搭建两个开发环境.分别为Android源代码和Linux内核源代码.Android源代码中包含了HAL(即硬件抽象层) 的代码,并学习了如何搭建这两种开发环境. Android 的移植的本质就是Linux内核的移植,Linux内核的移植主要是Linux驱动的移植.而开发和测试Linux驱动就需要安装以上两个开发环境. 搭建两套环境的具体步骤如下: 一.下载编译和测试A

[转]Linux下阅读源代码:(g)vim+Taglist+ctags

Linux下阅读源代码的方法很多,聪明人从标题应该就可以知道,需要(g)vim+Taglist+ctags.3者配合,真是珠联璧合,功力无限啊! vim/gvim什么是vim/gvim,如果看官连vi都不知道,那就别往下看了.一些对Linux一知半解的人说,vi不就是一个和Win下的note pad一样的工具吗?其实大错特错了,如果仅仅是和note pad一样的功能,那它早就不叫vi了. TaglistTaglist是一个vim的源代码浏览插件,具体功能介绍还烦请各位看官自己google一下.很

Android源代码和内核源代码的下载,编译和运行

笔者根据罗升阳老师的<Android 系统源代码情景分析>一书,尝试下载,编译和运行Android源代码和内核源代码.但可能是软件源"被墙"或版本更新的原因,期间遇到诸多问题.笔者求助于强大的度娘和谷歌,终于编译成功,现将修改的步骤记录如下: 一.下载相关的工具包和依赖包 1.git工具的下载,不多说 2.Java SDK的下载(参考网址:http://blog.csdn.net/zjclugger/article/details/11762085) 此处建议下载jdk1.

arch linux下nvidia 驱动死机问题

好长一段时间了,自从某次arch滚动升级nvidia驱动后,就频繁的Xorg死掉.一直没能解决,只好换用nouveau.nouveau一般使用问题到不大,但是前几天nouveau升级后,也开始抽筋. 于是又尝试换回nvidia的专有驱动,死机情况依然未解.偶然在死机后,用ssh连接上后用dmesg抓到一个错误: NVRM: GPU at 0000:01:00.0 Has Fallen Off The Bus 一番搜索,找到这篇文章: http://www.cyberciti.biz/faq/de

【转】Linux下Android ADB驱动安装详解

原文网址:http://blog.csdn.net/zhenwenxian/article/details/5901350 Linux下Android ADB驱动安装详解 概述 最近由于内置的合作商比较多,本人使用的Ubuntu系统好多厂商的Android手机都无法正确的识别,经过一番折腾,和查阅SDK,现把Linux下ADB驱动配置的方法和当中会遇到的相关问题的解决方法整理出来贡献给大家. Linux下使用手机USB调试模式连接ADB进行Android程序的调试,配置驱动没有Windows来的

源代码的下载和编译读书心得

源代码的下载和编译主要包括下载.编译和测试Android源代码以及下载编译Linux内核源代码. 配置Android源代码下载环境有五个步骤:第一步:创建一个用于存放下载脚本文件的目录:第二步:下载repo脚本文件:第三步:创建用于存放Android源代码的目录:第四步:初始化:第五步:开始下载Android源代码. 下载Android源代码中的某个子项目有两种方法:使用repo sync命令和使用git clone 命令. 编译Android源代码包括以下几个步骤:第一步:初始化编译环境:第二