Fedora27 平台上编译Android 6.0

虽然Google一直提倡用Ubuntu和Mac系列来研发Android系统,但上周末我无聊安装了一个Fedora27,于是想这个系统是不是也能进行Android 6.0的编译工作呢?找了网上所有的资料,只有Fedora 1X系列有人试过,Android 5.0以下的编译试验,当然现在已经不适用了,所以只能参考centos7的,虽然后面会有问题,当然有。。。但至少知道平台版本上相近,安装哪些库,Fedora 1X系列的和27距离太远,已经无参考价值了。

整个编译过程基本上和Ubuntu上差不多,但过程有点奇怪,还是按下面步骤来讲
1 下载源代码,2 编译环境准备,3 高版本Linux问题处理 4 编译

一 下载源代码
不浪费时间在用repo上面(有可能光下载源码会超过24小时,我就试过。。),直接下载百度云上去掉git文件的小型文件压缩包。

pan.baidu.com/s/1dE5Q8hF


二 编译环境的准备  
1) JDK的安装
说实话,找了一下午的资料才找到相关的方法,安装Fedora低版本OpenJdk1.7这方面没任何资料,自已琢磨出来的,别人一般写的博客都是把OpenJDK换成OracleJDK,低向高安装,所以没有我想找的东西,ubuntu下面安装资料大把,操作也极方便,Fedora这方面完全没有。Feodra27 默认带openJDK1.8,软件库里自带1.8和1.9,然后1.7在这个高版本的Fedora的软件库上是没有的。没有就到各大学的镜像库去找,一样没有,Fedora低版本库早就被清掉了,只保存Fedora 26,27的版本,而26和27一样,最低只安装1.8,没有1.7。然后又跑到Centos哪边库找,好在在6.9版本的Centos哪里,找到了1.7。安装也是一个坑,开始一个劲地说当前版本不适合这个版本的Fedora.最后又找了一个多小时的资料,才发现是这么安装的,要加一个强制安装的参数!!!!好啰嗦完了,下面是方法


到这个大学的镜像网站下载jdk7的两个文件,一个运行,一个开发。
http://mirrors.ustc.edu.cn/centos/6.9/os/x86_64/Packages/

然后安装,一定要加--force --nodeps,无语的Fedora!!

#rpm -ivh java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64.rpm java-1.7.0-openjdk-devel-1.7.0.131-2.6.9.0.el6_8.x86_64.rpm  --force --nodeps
切换版本,从jdk8切回jdk7
#update-alternatives --config java
#update-alternatives --config javac
 
2) 设置环境变量
在.bashrc中加上下面语句
#build openjdk option  
export SKIP_DEBUG_BUILD=false      
export SKIP_FASTDEBUG_BUILD=true      
export DEBUG_NAME=debug       
export LANG=C       
export ALLOW_DOWNLOADS=true   
export USE_PRECOMPILED_HEADER=true     
  
export BUILD_LANGTOOLS=true    
export BUILD_JAXP=true    
export BUILD_JAXWS=true    
export BUILD_CORBA=true    
export BUILD_HOSTPOT=true    
export BUILD_JDK=true    
BUILD_DEPLOY=false    
  
unset CLASSPATH      
unset JAVA_HOME

3)配置编译环境
$sudo yum install -y gcc make libstdc++.i686 libstdc++-devel.i686
$sudo yum install -y zlib-devel openssl-devel perl cpio expat-devel gettext-devel  
$sudo yum install -y autoconf glibc.i686 glibc-devel.i686 zlib-devel.i686 libstdc++.i686
$sudo yum install -y libX11-devel.i686 ncurses-devel.i686 ncurses-libs.i686 gperf flex gcc-c++ bison patch

三高版本Linux问题处理
代码编译前要进行的设置,不然编译到2个半小时,再重来,是件很“爽”的事。
1) 转移库
$sudo cp /usr/bin/ld.gold {andoroid6.0根目录}/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8/x86_64-linux/bin/ld

2)修改 build/core/clang/HOST_x86_common.mk
加上 -B$($(clang_2nd_arch_prefix)HOST_TOOLCHAIN_FOR_CLANG)/x86_64-linux/bin \
diff --git a/core/clang/HOST_x86_common.mk b/core/clang/HOST_x86_common.mk
index 0241cb6..77547b7 100644
--- a/core/clang/HOST_x86_common.mk
+++ b/core/clang/HOST_x86_common.mk
@@ -8,6 +8,7 @@ ifeq ($(HOST_OS),linux)
CLANG_CONFIG_x86_LINUX_HOST_EXTRA_ASFLAGS := \
   --gcc-toolchain=$($(clang_2nd_arch_prefix)HOST_TOOLCHAIN_FOR_CLANG) \
   --sysroot=$($(clang_2nd_arch_prefix)HOST_TOOLCHAIN_FOR_CLANG)/sysroot \
+  -B$($(clang_2nd_arch_prefix)HOST_TOOLCHAIN_FOR_CLANG)/x86_64-linux/bin \  
   -no-integrated-as  //这句,如果编译报错的话--就去掉,ubuntu16上可能要去掉也可以不用我没试过,deepin15是不要去掉的,
  //但Fedora27上面一定要去掉,因为编译到半夜出错了,最后只在一个老外的个人网站上才找到这个原因,而这个老外用的是ubuntu16。      
                                              
CLANG_CONFIG_x86_LINUX_HOST_EXTRA_CFLAGS := \

3)修改 art/build/Android.common_build.mk
#关闭高版本的clang编译器,会把项目编译错误,高版本会走clang编译。
  # Host.
  ART_HOST_CLANG := false
  ifneq ($(WITHOUT_HOST_CLANG),true)
    # By default, host builds use clang for better warnings.
     ART_HOST_CLANG := true
endif

  改为
  # Host.
  ART_HOST_CLANG := false
  ifeq ($(WITHOUT_HOST_CLANG),false)
    # By default, host builds use clang for better warnings.
    ART_HOST_CLANG := true
  endif
 
四 编译
$cd {andoroid6.0根目录}
$prebuilts/misc/linux-x86/ccache/ccache -M 50G
$source build/envsetup.sh
$lunch aosp_arm-eng 或者aosp_x86-eng
  (这两个产品的区别,
  aosp_arm-eng 优点:编译的时间比aosp_x86-eng短一个小时,占硬盘比aosp_x86-eng少1G,可以加载模拟器arm架构的内核源码编译出来的镜像,研究编译内核这方面网上公布出来的资料很丰富,适合framework和研究linux内核栈的网友使用
  aosp_x86-eng 优点:就是一个字快,启动和运行快如闪电,缺点上面都说,编译时间长点,硬盘占得多点,关于x86架构内核源码编译的方法,网上公布少得可怜,适合不做内核的网友使用)
$make -j8  //核数×2,快cpu的2小时,慢cpu的arm版本3.5小时,x86版本4.5小时
$emulator -GPU on   //-GPU on是提供webview网页刷新之用,不调试浏览器的话不打开也可以,否则浏览器点击后会强关。

总结:在Fedora27上面编译其实和ubuntu16一样方便,除了安装旧版本opendjdk有点另类外,这主要是没人这么写过博客,资料和文件不好找。


好了,Enjoy~




上图时间不对,中间中断过两次,全程时间是4个半小时



凌晨两点半终于编译成功了。。。。


ps:
事后我还是删除了这个Fedora27系统,因为太卡了,鼠标移动经常不同步,体验非常差,就这也号称是驱动最兼容的Linux发行版本?上面实用软件什么都没有,mp3库和flash得自已安装,桌面要放文件还要安装tweak tool,而且右键不能建立新文件,从ubuntu和deepin系列过来,各种不适应,开机内存还占到1.6G,和我的win7主系统都一样了。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值