从零开始学习Android Framework

从零开始学习Android Framework

打工是不可能打工的,这辈子不可能打工的,写代码又不会写,只能去B站找找视频学学,才能够维持的了生活这样子。
参考视频教程:链接: 千里马学框架.

1. 环境配置

Android8.1源码:在视频里有百度网盘,自行下载,10G花了我五块加速结果半个多小时就下完了
我是用的虚拟机+Ubuntu 18.04.

步骤

  1. 安装openjdk8:
    $ sudo apt-get install openjdk-8-jdk
    # 检查是否安装成功,显示的是openjdk
    $ java -version
    
  2. 安装软件包:
    Ubuntu16:
    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
    
    Ubuntu18:参考链接:Ubantu18.04环境下编译android源码.
  3. 解压源码:
    $ 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……”,要怎么解决?.

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值