从零开始学习Android Framework
打工是不可能打工的,这辈子不可能打工的,写代码又不会写,只能去B站找找视频学学,才能够维持的了生活这样子。
参考视频教程:链接: 千里马学框架.
1. 环境配置
Android8.1源码:在视频里有百度网盘,自行下载,10G花了我五块加速结果半个多小时就下完了
我是用的虚拟机+Ubuntu 18.04.
步骤
- 安装openjdk8:
$ sudo apt-get install openjdk-8-jdk # 检查是否安装成功,显示的是openjdk $ java -version
- 安装软件包:
Ubuntu16:
Ubuntu18:参考链接:Ubantu18.04环境下编译android源码.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 libgl1-mesa-dev libxml2-utils xsltproc unzip
- 解压源码:
$ sudo apt-get install p7zip $ 7zr x android-8.1.0_r1.7z
2. 编译运行
编译的命令很简单:
# 初始化编译环境( .可以用source代替,如 source build/envsetup.sh )
$ . build/envsetup.sh
# 执行
$ lunch
# 我这里使用模拟器所以选择 6 (即aosp_x86_64-eng)
Which would you like? [aosp_arm-eng] 6
# 开始编译
$ make
可以选择编译的版本:
Lunch menu... pick a combo:
1. aosp_arm-eng
2. aosp_arm64-eng
3. aosp_mips-eng
4. aosp_mips64-eng
5. aosp_x86-eng
6. aosp_x86_64-eng
7. full_fugu-userdebug
8. aosp_fugu-userdebug
9. aosp_car_emu_arm-userdebug
10. aosp_car_emu_arm64-userdebug
11. aosp_car_emu_x86-userdebug
12. aosp_car_emu_x86_64-userdebug
13. mini_emulator_arm64-userdebug
14. m_e_arm-userdebug
15. m_e_mips-userdebug
16. m_e_mips64-eng
17. mini_emulator_x86-userdebug
18. mini_emulator_x86_64-userdebug
19. uml-userdebug
20. aosp_dragon-userdebug
21. aosp_dragon-eng
22. aosp_marlin-userdebug
23. aosp_marlin_svelte-userdebug
24. aosp_sailfish-userdebug
25. aosp_walleye-userdebug
26. aosp_walleye_test-userdebug
27. aosp_taimen-userdebug
28. aosp_angler-userdebug
29. aosp_bullhead-userdebug
30. aosp_bullhead_svelte-userdebug
31. hikey-userdebug
32. hikey960-userdebug
所遇到的问题:
问题一:
问题原因:不清楚,在一个帖子上看到说是时区的问题
解决方法:在build/envsetup.sh文件最后添加export LC_ALL=C
如下图所示:
------------------
问题二:
问题原因:内存不够
解决方法:执行下面三条命令
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server
如下图所示:
问题三:
问题原因:
解决方法:修改prebuilts/sdk/tools/jack-admin 文件,变量JACK_SERVER_VM_ARGUMENTS,添加参数 -Xmx4096M
JACK_SERVER_VM_ARGUMENTS=”${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8 -XX:+TieredCompilation -mx4096M}”
如图所示:
编译成功:
使用模拟器
$ emulator
出现问题:
解决方法:
我是使用虚拟机里的Ubuntu,先要打开虚拟化Intel VT-x/EPT或AMD-V/RVI(V)。如图所示
打开后要重启Ubuntu,emulator还是不行,如下图
然后输入以下命令
$ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
$ sudo adduser `id -un` libvirtd
$ sudo adduser `id -un` kvm
#查看安装成功没有
$ sudo kvm-ok
#显示下面信息就表示好了
INFO: /dev/kvm exists
KVM acceleration can be used
参考链接:
VM中,无法使用X86_64模拟器.
KVM安装社区帮助.
试了一下还是不行,同上图一样,
解决:解决办法也很简单,就是把之前的编译执行的命令再执行一遍:
# 执行以下命令
$ source build/envsetup.sh
$ lunch
$ emulator
参考链接:ubuntu 打开Android模拟器(Android源码编译)提示:emulator:未找到命令.
模拟器启动
不过我这里启动时弹出了找不到adb工具的警示框,使用sudo apt-get install adb 安装adb之后设置adb位置就行了。
参考链接:链接: 启动模拟器的,报“Could not automatically detect an ADB binary……”,要怎么解决?.