19. aosp_cf_x86_phone-userdebug
20. aosp_cf_x86_tablet-userdebug
21. aosp_cf_x86_tablet_3g-userdebug
22. aosp_cf_x86_tv-userdebug
23. aosp_cf_x86_wear-userdebug
24. aosp_cf_x86_64_auto-userdebug
25. aosp_cf_x86_64_phone-userdebug
26. aosp_cf_x86_64_tablet-userdebug
27. aosp_cf_x86_64_tablet_3g-userdebug
28. aosp_cf_x86_64_tv-userdebug
29. aosp_cf_x86_64_wear-userdebug
30. cf_x86_auto-userdebug
31. cf_x86_phone-userdebug
32. cf_x86_tablet-userdebug
33. cf_x86_tablet_3g-userdebug
34. cf_x86_tv-userdebug
35. cf_x86_wear-userdebug
36. cf_x86_64_auto-userdebug
37. cf_x86_64_phone-userdebug
38. cf_x86_64_tablet-userdebug
39. cf_x86_64_tablet_3g-userdebug
40. cf_x86_64_tv-userdebug
41. cf_x86_64_wear-userdebug
42. aosp_marlin-userdebug
43. aosp_marlin_svelte-userdebug
44. aosp_sailfish-userdebug
45. aosp_walleye-userdebug
46. aosp_walleye_test-userdebug
47. aosp_taimen-userdebug
48. hikey-userdebug
49. hikey64_only-userdebug
50. hikey960-userdebug
Which would you like? [aosp_arm-eng]
意思就是要你选择编译目标的格式,编译目标的格式组成为BUILD-BUILDTYPE,比如aosp_arm-eng
的BUILD为aosp_arm,BUILDTYPE为eng。
其中BUILD表示编译出的镜像可以运行在什么环境,aosp代表Android开源项目,arm表示系统是运行在arm架构的处理器上。
更多参考官方文档。
BUILDTYPE 指的是编译类型,有以下三种:
-
**user:**用来正式发布到市场的版本,权限受限,如没有 root 权限,不能 dedug,adb默认处于停用状态。
-
**userdebug:**在user版本的基础上开放了 root 权限和 debug 权限,adb默认处于启用状态。一般用于调试真机。
-
**eng:**开发工程师的版本,拥有最大的权限(root等),具有额外调试工具的开发配置。一般用于模拟器。
如果你没有Nexus设备,只想编译完后运行在模拟器查看,那么BUILD可以选择aosp_x86
,BUILDTYPE选择eng,Which would you like? [aosp_arm-eng]
后面直接输入对应序号5就可以。
也可以直接指定编译的目标:
lunch aosp_x86-eng
或者(不同的系统版本,序号的对应会有差别,建议不要直接用序号)
lunch 5
3. 开始编译
通过-jN参数来设置编译的并行任务数,以提高编译速度,在此前我的CPU核心数为6,这里N值最好选在6到12之间,这里我们设置6个并行任务进行编译:
make -j6
整编成功后会打印类似如下内容:
由于采用的是虚拟机整编,编译速度会慢一些,这里花费了2小时46分钟.
最终会在 out/target/product/generic_x86/目录生成了三个重要的镜像文件: system.img、userdata.img、ramdisk.img。大概介绍着三个镜像文件:
**system.img:**系统镜像,里面包含了Android系统主要的目录和文件,通过init.c进行解析并mount挂载到/system目录下。
**userdata.img:**用户镜像,是Android系统中存放用户数据的,通过init.c进行解析并mount挂载到/data目录下。
**ramdisk.img:**根文件系统镜像,包含一些启动Android系统的重要文件,比如init.rc。
运行模拟器
在编译完成之后,就可以通过以下命令运行Android虚拟机了,命令如下:
source build/envsetup.sh
lunch 5emulator
如果是在编译完后运行虚拟机,由于之前已经执行过source和lunch命令了,可以直接运行:
emulator
如果不出意外就会启动模拟器,如果出现报错,网上也有很多的解决方案。
5.源码单编
比如我们要编译系统的Settings应用模块,
在AOSP根目录执行:
source build/envsetup.shlunch 5
进入Settings的目录:
cd packages/apps/Settings
mm编译当前目录下的模块,不编译依赖模块。
mm
编译成功后会有提示生成文件的存放路径。
除了Settings.odex文件,还会在out/target/product/generic_x86/system/priv-app/Settings目录下生成Settings.apk。
如果你修改了源码,想查看生成的APK文件,有两种方式:
- 通过adb push或者adb install 来安装APK。
- 使用make snod命令,重新生成 system.img,运行模拟器查看。
针对Android程序员,我这边给大家整理了一些资料,包括不限于高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!
资料领取:点赞+加群免费获取 Android IOC架构设计
加群 Android IOC架构设计领取获取往期Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、混合式开发(ReactNative+Weex)全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
最后
代码真的是重质不重量,质量高的代码,是当前代码界提倡的,当然写出高质量的代码肯定需要一个相当高的专业素养,这需要在日常的代码书写中逐渐去吸收掌握,谁不是每天都在学习呀,目的还不是为了一个,为实现某个功能写出高质量的代码。
所以,长征路还长,大家还是好好地做个务实的程序员吧。
最后,小编这里有一系列Android提升学习资料,有兴趣的小伙伴们可以来看下哦~
出高质量的代码。**
所以,长征路还长,大家还是好好地做个务实的程序员吧。
最后,小编这里有一系列Android提升学习资料,有兴趣的小伙伴们可以来看下哦~