一、前言:
本来打算用wsl来编译AOSP,但是折腾了好几天,以失败告终。后来使用vmware反而成功了。
本篇同样会把wsl遇到的问题与尝试记录下来。
环境:vmware ubuntu16.04。
为什么会使用ubuntu16.04呢,因为在公司有一个项目是android8.1的,推荐使用ubuntu14.04编译,ubuntu12与16也可以。如果能通过wsl完成编译,结合共用的文件系统,那就是王炸。由于现在的win10找不到ubuntu16以前的版本,而且ubuntu18不提供openjdk-8-jdk的apt安装,要到ubuntu20才有,考虑到版本相差太多,有很多配置需要改,为了减少折腾,使用ubuntu16。使用文件appx安装。
关键词:
jack-server,
===============================分割线=====================================
======================使用vmware ubuntu16编译成功===========================
===============================分割线=====================================
二、vmware ubuntu16方案
1、先安装依赖:
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip libssl-dev openjdk-8-jdk -y
2、repo同步仓库,python要用python3.6及以上,编译时再切换回到python2.7。
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz
tar -xvf Python-3.6.8.tar.xz
./configure --enable-optimizations --prefix=/usr/local/python3
sudo make
sudo make install
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/bin/python3 /usr/bin/python
3、jack-server启动失败
为什么jack-server启动失败,因为和jdk8版本有关:
https://segmentfault.com/a/1190000039970343
原因就是编译时用的是open-jdk 8u292,默认禁用了TLSv1, TLSv1.1,
从/etc/java-8-openjdk/security/java.security中取消TLSv1, TLSv1.1 禁用,
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1,RC4, DES, MD5withRSA, \ DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \ include jdk.disabled.namedCurves
(修改后,重启,编译通过,立杆见影)
如果出现subcommand未找到,就重新make编译,多来几次就能成功。
4、手动开启与关闭jack-server(一般不需要用,这里记录下)
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server
5、内存不足
由于最开始用8G内存,在最后编译1512个文件时总是说jvm虚拟机内存不足,最后改为10G,编译通过。
===============================分割线=====================================
=========================使用wsl ubuntu16编译失败============================
===============================分割线=====================================
三、wsl方案(不要用,目前没解决)
使用wsl种会遇到莫名奇妙的问题,wsl既要升级为wsl2,又要在win10上开始大小写敏感。
ubuntu16 appx安装包:
打开power shell,并输入:
Add-AppxPackage e://Ubuntu_1604.2019.523.0_x64.appx
安装包百度网盘链接:
Ubuntu_1604.2019.523.0_x64.appx
安装好后,从左下角win图标的最近安装中找到。
升级wsl2配置:
1、控制面板开启功能
2、将以下内容复制到.bat文件中,并以管理员权限执行:
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
3、安装缺少组件:
4、查看wsl版本并升级
wsl -l -v
wsl --set-version Ubuntu-16.04 2
开启win10下文件夹的大小写敏感
1、查看是否开启
fsutil.exe file queryCaseSensitiveInfo e:/Project/w377/code_w403_main
2、设置为开启
用管理员权限打开cmd,并运行:
fsutil file setCaseSensitiveInfo e:/Project/w377/code_w403_main enable
注意,如果文件夹内有内容,不对子文件夹产生影响。如果开启后,对该文件夹操作,如创建、复制新文件夹,则会继承大小写敏感。