2024年安卓最全下载android4,安卓开发面经

最后

那我们该怎么做才能做到年薪60万+呢,对于程序员来说,只有不断学习,不断提升自己的实力。我之前有篇文章提到过,感兴趣的可以看看,到底要学习哪些知识才能达到年薪60万+。

通过职友集数据可以查看,以北京 Android 相关岗位为例,其中 【20k-30k】 薪酬的 Android 工程师,占到了整体从业者的 30.8%!

北京 Android 工程师「工资收入水平 」

今天重点内容是怎么去学,怎么提高自己的技术。

1.合理安排时间

2.找对好的系统的学习资料

3.有老师带,可以随时解决问题

4.有明确的学习路线

当然图中有什么需要补充的或者是需要改善的,可以在评论区写下来,一起交流学习。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

function m()

function findmakefile()

function mm()

function mmm()

function croot()

function pid()

function gdbclient()

function jgrep()

function cgrep()

function resgrep()

function getprebuilt

function tracedmdump()

function runhat()

function getbugreports()

function startviewserver()

function stopviewserver()

function isviewserverstarted()

function smoketest()

function runtest()

function runtest_py()

function godir ()


2:选择一个target


$ lunch full-eng


外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


我们编译后在模拟器中运行,所以选择full


外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


我们选择最大的权限,也就是root后的版本,所以选择eng


3:编译源码


$ make -j4


过程大概3小时


编译完后在源码目录下会生成out文件夹如图


外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


好了,可以检验以下我们编译的源码是否正常运行了


$ emulator


如果提示找不到命令,请初始化环境


$ source build/envsetup.sh

$ lunch full-eng


外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传




下载的过程中可能遇到的问题:

报错:

[]( )
  1. Exception in thread Thread-3:

  2. Traceback (most recent call last):

  3. File “/usr/lib/python2.6/threading.py”, line 532, in __bootstrap_inner

  4. self.run()

  5. File “/usr/lib/python2.6/threading.py”, line 484, in run

  6. self.__target(*self.__args, **self.__kwargs)

  7. File “/home/haili/android-4.0.4_r1.2/.repo/repo/subcmds/sync.py”, line 200, in _FetchHelper

  8. clone_bundle=not opt.no_clone_bundle)

  9. File “/home/haili/android-4.0.4_r1.2/.repo/repo/project.py”, line 978, in Sync_NetworkHalf

  10. and self._ApplyCloneBundle(initial=is_new, quiet=quiet):

  11. File “/home/haili/android-4.0.4_r1.2/.repo/repo/project.py”, line 1519, in _ApplyCloneBundle

  12. exist_dst = self._FetchBundle(bundle_url, bundle_tmp, bundle_dst, quiet)

  13. File “/home/haili/android-4.0.4_r1.2/.repo/repo/project.py”, line 1583, in _FetchBundle

  14. raise DownloadError('%s: %s ’ % (req.get_host(), str(e)))

  15. DownloadError: android.googlesource.com: <urlopen error [Errno 110] Connection timed out>

Exception in thread

Thread-3:

Traceback (most recent call last):

File “/usr/lib/python2.6/threading.py”, line 532, in __bootstrap_inner

self.run()

File “/usr/lib/python2.6/threading.py”, line 484, in run

self.__target(*self.__args, **self.__kwargs)

File “/home/haili/android-4.0.4_r1.2/.repo/repo/subcmds/sync.py”, line

200, in _FetchHelper

clone_bundle=not opt.no_clone_bundle)

File “/home/haili/android-4.0.4_r1.2/.repo/repo/project.py”, line 978,

in Sync_NetworkHalf

and self._ApplyCloneBundle(initial=is_new, quiet=quiet):

File “/home/haili/android-4.0.4_r1.2/.repo/repo/project.py”, line

1519, in _ApplyCloneBundle

exist_dst = self._FetchBundle(bundle_url, bundle_tmp, bundle_dst,

quiet)

File “/home/haili/android-4.0.4_r1.2/.repo/repo/project.py”, line

1583, in _FetchBundle

raise DownloadError('%s: %s ’ % (req.get_host(), str(e)))

DownloadError: android.googlesource.com: <urlopen error [Errno 110]

Connection timed out>

看这出错很莫名,Python是正确安装了的,版本也是要求的。其实官网(http://source.android.com/source/downloading.html)有段说明,如果认真执行就可解决。

1. 浏览器登录https://android.googlesource.com/new-password,并用gmail帐号登录;

2. 点击网页上的“允许访问”,得到类似:

[]( )
  1. machine android.googlesource.com login git-.gmail.com password 

  2. machine android-review.googlesource.com login git-.gmail.com password 

machine

android.googlesource.com login git-.gmail.com password

machine android-review.googlesource.com login

git-.gmail.com password

的信息。

3. 把上面那段信息(和用自己得到的真实信息)追加到~/.netrc文件结尾;

4. 下载地址的URI更改为https://android.googlesource.com**/a**/platform/manifest(中间加上了“/a”)。

然后按照官网描述的正常步骤操作,即可拉下Android源码。官方的说法是:因为访问基本是匿名的,为了防止连接过多,对同一IP地址的连接数做了一定的限制。看来是用gmail帐号进行认证。

这样的话,在公司网络内或者用虚拟机下载的话,会经常遇到这问题。




编译遇到的问题:



问题如下:  

Install: out/host/linux-x86/framework/droiddoc.jar

target Generated: libclearsilver-jni <= out/host/common/obj/JAVA_LIBRARIES/clearsilver_intermediates/javalib.jar

host C: libclearsilver-jni <= external/clearsilver/java-jni/j_neo_util.c

In file included from /usr/include/features.h:378,

             from /usr/include/string.h:26,

             from external/clearsilver/java-jni/j_neo_util.c:1:

/usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: 没有那个文件或目录

make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libclearsilver-jni_intermediates/j_neo_util.o] 错误 1


  

  

解决办法:  

sudo apt-get install lib64z1-dev libc6-dev-amd64 g+±multilib lib64stdc++6




  



  



  



**下载android kernel及编译:**  



  



第一步:下载goldfish源码



在Android源码根目录下新建kernel文件夹



[]( )



1.  $mkdir kernel  

2.  $cd kernel  



$mkdir kernel $cd kernel下载源码:  



[]( )



1.  $git clone http://android.googlesource.com/kernel/goldfish.git   



$git clone http://android.googlesource.com/kernel/goldfish.git ![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Fhi.csdn.net%2Fattachment%2F201112%2F14%2F0_1323845106Z19M.gif&pos_id=img-96wnWRhE-1715753100160)  

下载完毕如下图:



![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Fhi.csdn.net%2Fattachment%2F201112%2F14%2F0_1323845296R9Eo.gif&pos_id=img-NbucOFi9-1715753100161)



此时在kernel目录下会生成一个goldfish文件夹。进入此目录:  



[]( )



1.  $cd goldfish  



$cd goldfish  

此目录下有一个隐藏的目录.git,通过



[]( )



1.  $ls -al  



$ls -al  

可看到此目录:



![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Fhi.csdn.net%2Fattachment%2F201112%2F14%2F0_1323845573upel.gif&pos_id=img-7Y86gukt-1715753100161)  



查看所有分支:



[]( )



1.  git  branch -a  



git branch -a如下图:



![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Fhi.csdn.net%2Fattachment%2F201112%2F14%2F0_1323845730NX0v.gif&pos_id=img-QsbMAolP-1715753100161)  



check out:



[]( )



1.  $git checkout remotes/origin/android-goldfish-2.6.29  



$git checkout remotes/origin/android-goldfish-2.6.29  

  

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Fhi.csdn.net%2Fattachment%2F201112%2F14%2F0_1323845943FAXM.gif&pos_id=img-eFgyJ1V4-1715753100162)



此时你会看到goldfish目录下会出现很多文件



[]( )



1.  $ls  



$ls  

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Fhi.csdn.net%2Fattachment%2F201112%2F14%2F0_1323846010Z3Jd.gif&pos_id=img-ivfG1NBD-1715753100162)



 这个时候goldfish源码就已经下下来了,接下来的事情就是编译了.



  



第二步:编译goldfish



导出交叉编译工具目录到$PATH环境变量中去.



1.  export PATH\=$PATH:~/WORKING\_DIRECTORY/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin  



export PATH=$PATH:~/WORKING\_DIRECTORY/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin  

我们将使用上述这个目录下的交叉编译器 **arm-eabi-**gcc



然后在glodfish目录下用gedit打开Makefile文件,找到这两行文字:



 **\# ARCH**  

**?= (SUBARCH)**



 **# CROSS\_COMPILE** **?=  

修改为:  

**ARCH ?= arm  

****



**CROSS\_COMPILE     ?= arm-eabi-**



1.  $gedit Makefile  



$gedit Makefile ![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=http%3A%2F%2Fhi.csdn.net%2Fattachment%2F201112%2F15%2F0_132391563915xa.gif&pos_id=img-pHb2Q8O7-1715753100162)  

注意:ARTH ?=arm,的arm后边不要有空格,不然就会出现如下类似错误:  

Make:...../kernel/goldfish/arch/arm: Is a directory.  Stop.  

害我白白浪费了几个小时.  

  

上述操作的目的是为了指定目标设备的体系架构和交叉编译器,其实也可以通过以下指令来完成:  



1.  $ export ARCH=arm  

2.  $ export SUBARCH=arm  

3.  $ export CROSS\_COMPILE=arm-eabi-  



$ export ARCH=arm $ export SUBARCH=arm $ export CROSS\_COMPILE=arm-eabi-  

  

为了确保环境参数正确,接下来执行下面两条指令,否则有可能不能正常启动模拟器.(注:以下两条指令是在Android源码根目录下执行)  



1.  $ source build/envsetup.sh  //缺少这条指令,可能会导致无法编译通过  

2.  $ lunch full-eng            //缺少这条指令,可能会导致无法启动模块器,系统报无法找到AVD,并要求你创建AVD。  



$ source build/envsetup.sh //缺少这条指令,可能会导致无法编译通过 $ lunch full-eng //缺少这条指令,可能会导致无法启动模块器,系统报无法找到AVD,并要求你创建AVD。  

关闭gedit,接下来就开始make了,执行如下指令:  



[]( )



1.  $ make goldfish\_armv7\_defconfig  

2.  $ make  


### 总结

最后对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,**从来都是我们去适应环境,而不是环境来适应我们!**

这里附上上述的技术体系图相关的几十套**腾讯、头条、阿里、美团等公司2021年的面试题**,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含**知识脉络 + 诸多细节**,由于篇幅有限,这里以图片的形式给大家展示一部分。

**相信它会给大家带来很多收获:**

![](https://img-blog.csdnimg.cn/img_convert/9b78c86b3518c1fabdce3643b1ae8102.webp?x-oss-process=image/format,png)

![](https://img-blog.csdnimg.cn/img_convert/7a6f2614bf8ecc14b9f463917ad6836b.webp?x-oss-process=image/format,png)

> 当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。



**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618156601)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

7\_defconfig  

2.  $ make  


### 总结

最后对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,**从来都是我们去适应环境,而不是环境来适应我们!**

这里附上上述的技术体系图相关的几十套**腾讯、头条、阿里、美团等公司2021年的面试题**,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含**知识脉络 + 诸多细节**,由于篇幅有限,这里以图片的形式给大家展示一部分。

**相信它会给大家带来很多收获:**

[外链图片转存中...(img-3F7jyyio-1715753100163)]

[外链图片转存中...(img-pGy9Xyne-1715753100163)]

> 当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。



**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618156601)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 23
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值