旨在帮助解决不小心升级Ubuntu 16.04的同学所遇到的源码编译和repo upload问题,亲身踩坑,辛酸泪
欢迎补充...
问题一: android 6.0.1无法编译通过
1. 安装openjdk 7 (Ubuntu 16.04已经默认去掉openjdk 7的源了)
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk
sudo update-alternatives --config java
sudo update-alternatives --config javac
2. 安装依赖包
sudo apt-get install bison
sudo apt-get install g++-multilib gcc-multilib lib32ncurses5-dev lib32z1-dev
sudo apt-get install clang
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev libsdl1.2-dev libesd0-dev git-core gnupg flex bison gperf build-essential zip curl gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4
3. 解决libart.so无法编译问题
in file /art/build/Android.common_build.mk, find out:
<span style="color:#333333"><span style="color:#858c93"><code># Host.</code></span>
<span style="color:#303336"><code>ART_HOST_CLANG := </code></span><span style="color:#101094"><code>false</code></span>
<span style="color:#303336"><code>ifneq ($(WITHOUT_HOST_CLANG),</code></span><span style="color:#101094"><code>true</code></span><span style="color:#303336"><code>)</code></span>
<span style="color:#858c93"><code># By default, host builds use clang for better warnings.</code></span>
<span style="color:#303336"><code>ART_HOST_CLANG := </code></span><span style="color:#101094"><code>true</code></span>
<span style="color:#303336"><code>endif</code></span></span>
change to :
<span style="color:#333333"><span style="color:#858c93"><code># Host.</code></span>
<span style="color:#303336"><code>ART_HOST_CLANG := </code></span><span style="color:#101094"><code>false</code></span>
<span style="color:#303336"><code>ifeq ($(WITHOUT_HOST_CLANG),</code></span><span style="color:#101094"><code>false</code></span><span style="color:#303336"><code>)</code></span>
<span style="color:#858c93"><code># By default, host builds use clang for better warnings.</code></span>
<span style="color:#303336"><code>ART_HOST_CLANG := </code></span><span style="color:#101094"><code>true</code></span>
<span style="color:#303336"><code>endif</code></span>
</span>
If it still not works,try this in your android root path: cp /usr/bin/ld.gold prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/x86_64-linux/bin/ld
问题二: repo upload
失败提示CERTIFICATE_VERIFY_FAILED
Python 2.7.9
开始包含了
ssl
证书认证补丁(ubuntu 16.04默认python版本为2.7.12),导致无法通过认证。因此目前建议
Python
降级到2.7.8版本处理
安装依赖包:
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libssl-dev
从镜像源下载
Python 2.7.8
:
http://mirrors.sohu.com/python/2.7.8/Python-2.7.8.tar.xz
解压
tar
包并进入
Python
源码目录
执行
./configure
执行
make
执行
sudo make install
查看
python
版本
是否为
2.7.8
再次执行
repo upload
, 如果提示
diffie-hellman-group1-sha1
添加
vim ~/.ssh/config
, 添加如下代码
Host 192.168.120.246
KexAlgorithms +diffie-hellman-group1-sha1
同踩坑的做两个补充
1. If it still not works,try this in your android root path: cp /usr/bin/ld.gold prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/x86_64-linux/bin/ld
需要确定使用
prebuilts/gcc/linux-x86/host/下的具体哪个glibc做替换,不一定是
x86_64-linux-glibc2.11-4.6
,可以替换
prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.*/
x86_64-linux/bin/ld
2. repo upload 最终发现一个简便的方法
在执行repo upload前修改env PYTHONHTTPSVERIFY为0就可以略过cacert verify
即export PYTHONHTTPSVERIFY=0
可以将这句话加到/etc/profile或~/.bashrc中,避免每次都要手动执行