本来说好昨天发布的,辞职要办的事情比较多,就给耽误了,在这里说声抱歉了。
废话不多说了,开始进入正题。
1.Ubuntu系统最好是16.04,其他版本多多少少都有bug存在,同事之间Ubuntu系统最好保持一致。以我的经验来看,版本不同,编译的代码烧录手机,可能会产生意想不到的bug。
2.配置openjdk ps:我下载的deb包,当然你也完全可以直接通过Linux命令安装。
命令如下:
a. sudo dpkg -i *.deb
b. sudo apt-get install -f
c. sudo dpkg -i *.deb
3.要下载源码首先就要配置 git ,查看代码我用的AS,这个就是因人而异了。
配置git 简单的一个命令: sudo apt-get install git
我所在的公司代码是在gitlab上,所以要想拉取要做一下配置
- 输入一下命令git config --global user.name "姓名" git config --global user.email "邮箱"
git config –list
2.生成密匙命令:ssh-keygen -t rsa -C "你的邮箱"
3.生成的密匙添加到gitlab上
4.把源码拉取到本地 git clone -b(分支的意思,拉取主干,这个可以不要) xxx(ssh值)
如果不是很懂,可以百度/google 都可以
如果你用的其他工具这我就爱莫能助了。
4.源码下载完成后,就可以正式编译源码了。这里以Nexus x5 源码为例:
操作如下:
a.编译源码前,进入源码目录/art/build/Android.common_build.mk 找到Android.common_build.mk 文件,定位到75行,将下面的代码:ifneq ($(WITHOUT_HOST_CLANG),true) 改为ifeq ($(WITHOUT_HOST_CLANG),false) ps:因为代码编译的过程中可能会报一个clang相关的错误,改这里就可以啦,当然代码不同,改的方式也不同。
b.安装一些依赖(具体情况而定)直接执行以下命令: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 m4
ps:这个我也不是很懂,当时报错,百度找到一篇文章是这样解决的。
c.在源码目录下执行 prebuilts/misc/linux-x86/ccache/ccache -M 50G
加快源码编译速度的,当然电脑配置牛掰,可以忽略。
d.开始编译(以下命令要到源码目录)
source build/envsetup.sh
lunch 这里选多少,这要看你们代码结构了 Nexus x5 源码选择的18
make -j4 开始编译 (本来是j8,感觉不好听,改为了j4~~)
其他:
1.Ubuntu中安装完AS,可能无法进行usb 调试,执行以下命令去解决:
a.一下命令打开 sudo vim /etc/udev/rules.d/51-android.rules viw文件,如果提示vim不存在,sudo apt-get install vim
b.在文件内输入以下内容:
SUBSYSTEM=="usb", ATTR{idVendor}=="2717", MODE="0666", GROUP="plugdev"
c.修改文件权限,输入以下命令即可
chmod a+r /etc/udev/rules.d/51-android.rules
d.插入手机的usb线后,设置好开发者选项,usb调试后,在终端切入Android的SDK的platform-tools/文件夹路径,终端输入adb devices,如果连接了的话,就能找到设备名 。
如果不能,要记得重启adb
sudo service udev restart
sudo adb kill-server
sudo adb start-server
完成重启adb后,再输入adb devices
这样就可以真机调试了。
2.新手改源码用的最多AS快捷键:Ctrl+Shirf+F(根据字段全局搜,那里引用了) Ubuntu下的快捷键
命令查找的话:find . | xargs grep "xxx" (xxx你要搜索的字段)
声明:以上来源于网上以及和同事的交流中获得。如有雷同,可能我就是参考过你的解决方式。在这里说声抱歉了。
能帮到你,我很开心,帮不到你,说明我还要多多学习。
建议:最好的编译源码教程,肯定是Google官方给出的,最好去参考一下。