提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、安装虚拟机
  • 二、安装Ubuntu
  • 三、安装VMware tools
    • 1、通用安装
    • 2、Ubuntu22.04 中Drag and drop is not supported问题
  • 四、安装依赖环境
    • 1、安装git
    • 2、下载Python3
    • 3、解压Python3
    • 4、编译与安装Python3
    • 5、管理Python版本
  • 五、AOS源码下载
    • 1、在用户的根目录创建 bin
    • 2、bin配置环境变量
    • 3、下载repo
    • 4、创建仓库目录存放代码
    • 5、同步代码
    • 6、在Ubuntu22.04中下载源码
  • 六、代码编译
    • 1、配置编译环境:
    • 2、选择编写版本
    • 3、编译
      • 问题一、编译内存不足
        • (1)停用交换文件
        • (2)删除文件
        • (3)创建交换区文件
        • (4)挂载交换文件
        • (5)激活启用交换文件
        • (6)设置内存使用多少时使用交换区
      • 问题二、交换时宕机
      • 问题三、无法安装libesd0-dev
    • 4、启动模拟器
    • 5、车机模拟器
  • 七、Android Studio源码导入与调试
    • 1、生成iml与ipr
    • 2、配置android.iml
    • 3、Android Studio配置
      • 3.1配置资源文件和依赖文件
      • 3.2 AndroidStudio的最大使用内存
    • 4、调试
  • 八、VScode源码导入framework的C/C++代码

前言

最近要换工作,framework的开发环境不是很好搭建,为了进入新公司方便自己搭建环境,同时也想和大家分享一下,所以上传了这篇文档。有不足之处,希望大家指正。


一、安装虚拟机

下载地址:
https://download3.vmware.com/software/wkst/file/VMware-workstation-full-16.1.1-17801498.exe
注意如果上面的链接打开不开,看看是不是自己的浏览器的设置是不是有问题

去掉对钩

自定义一个路径,最好没有空格。

去掉这个两个对钩。

输入密钥

秘钥大家可以自己找一下。

双击桌面图标,打开虚拟机,查看帮助菜单下面的关于VMware Workstation 16 Pro

二、安装Ubuntu

镜像地址:
https://mirrors.aliyun.com/ubuntu-releases/16.04/ubuntu-16.04.7-desktop-amd64.iso
https://mirrors.aliyun.com/ubuntu-releases/20.04.5/ubuntu-20.04.5-desktop-amd64.iso
https://mirrors.aliyun.com/ubuntu-releases/22.04.2/ubuntu-22.04.2-desktop-amd64.iso
强烈建议安装ubuntu20.04.5这个版本,这个版本稳定,不需要安装Python,以及相关环境,而且安装VMware tools也比较方便。20.04xxx的版本会有变动,建议直接使用https://mirrors.aliyun.com/ubuntu-releases/来打开链接,选择自己需要的版本
在文件菜单中选择创建虚拟机

这个两个任意选择,如果不熟悉就选择典型

选择稍后安装操作系统

选择Linux

编译android的系统版本比较高的话,磁盘空间给大一些。选择将虚拟磁盘拆分成多个文件

选择自定义

根据自己的实际内存分配,一般是实际内存的二分之一,设置CPU的核心数,默认比较保守。


选择镜像文件,当然也可以不选。设置好后,点击开启此虚拟机。



选择English,当然你可以选择中文,这样安装中文输入法时,不需要自己再设置一下。

去掉勾选

去掉勾选


点击Continue

设置时区

设置账号和密码,这个密码也是你的root密码。


等十几分钟安装。

安装成功后,重启系统。

安装完成后,重启,就一直卡在这个地方,如果你的鼠标不可用,按Ctrl+Alt回到你原本计算机系统,这在vmware窗口底部会有提示的。

然后用鼠标在Ubuntu 窗口顶部栏目条依次选择:虚拟机-电源-关闭客户机。

关闭虚拟机后,然后在Ubuntu窗口找到设备栏,点击CD/DVD(SATA),在设备状态栏把“启动时连接”取消掉勾勾,点击确定。


重新启动客户机操作系统,在刚才黑屏页面等待,一会就可以启动操作系统了。

三、安装VMware tools

1、通用安装

击虚拟机菜单下的安装VMware tools

点击文件菜单,找到VMware Tools,选择文件,复制安装文件到桌面。



解压安装文件


进入vmware-tools-distrib

打开终端,使用sudo ./vmware-install.pl命令安装

注意:这个时候一定要输入yes(后面可以一路回车),因为默认是no,如果回车,就是选择默认值,我这个版本是ubuntu16的,ubuntu 20是直接回车就可以安装成功的。不管什么版本都选择yes.

安装成功后,重启系统,设置窗口自适应。


这样窗口就可以自由缩放了
我们在看看拖文件复制到ubuntu行不行。

已经可以了。

2、Ubuntu22.04 中Drag and drop is not supported问题

解决方法
先在terminal中安装这两个程序

sudo apt install gnome-shell-extension-prefs
sudo apt install nemo

左下角的开始菜单中选择extension

将Desktop icons NG 选项关闭

左下角的开始菜单中选择startup application preference

添加一个选项


将utuntu重启后,即可在host和vm间进行拖动传输。

四、安装依赖环境

1、安装git

sudo apt install git

2、下载Python3

如果ubuntu的版本是ubuntu20.04或者ubuntu22.04,不需要安装Python3以及相关环境。

  1. cd Downloads
  2. wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz

3、解压Python3

tar xvf Python-3.7.1.tgz

4、编译与安装Python3

1.cd Python-3.7.1
2…/configure
检查系统的安装环境:

no表示没有安装,yes表示系统已经安装了。我们看到系统没有安装OpenSSL,没有安装这个的话,我下载代码需要https来下载的,OpenSSL是支持https的,所以我们手动安装。把所需要的环境安装一下:

sudo apt install git-core libssl-dev  libffi-dev gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev libz-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip


安装完成后,再执行./configure

OpenSSL已经安装成功。会看到一个makefile文件

3.sudo make install
这行代码的意思是编译python3.7.1并把它安装上去。

权限不够,加权限
sudo -H make install
从新安装一下

注意:这一步非常关键,不然后面安装repo和同步代表都会出问题,如下面的报错:

5、管理Python版本

使用update-alternatives来管理Python版本
输入:update-alternatives --config python提示:

说明需要配置python,网上的配置如下:
update-alternatives --install /usr/bin/python python /usr/bin/python2.7.12
但是报错:

缺少priority,我们加一下:

缺少priority,我们加一下:

如何找到对应版本真去的路径呢?
使用下面指令:

import sys
pythonpath = sys.executable
print(pythonpath)


红框里面就是正确的路径,再看看python3的

找到正确的路径后,继续配置


使用sudo update-alternatives --config python查看配置

切换成python3.7.1

五、AOS源码下载

镜像地址
AOSP官方地址:
https://source.android.google.cn/setup/build/downloading
中科大镜像:
https://mirrors.ustc.edu.cn/help/aosp.html
清华镜像:
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP
如果有条件可以使用官方地方下载,如果没有条件使用中科大的,我自己使用清华的下载过,老是断网超时,不建议大家使用,有可能是我使用的移动网的原因引起。

1、在用户的根目录创建 bin

mkdir ~/bin

2、bin配置环境变量

PATH=~/bin:$PATH

3、下载repo

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
如果上述 URL 不可访问,可以用下面的:
curl -sSL ‘https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT’ |base64 -d > ~/bin/repo

安装curl

执行curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

修改访问权限
chmod a+x ~/bin/repo

4、创建仓库目录存放代码

···
mkdir WORKING_DIRECTORY
···

5、同步代码

初始化仓库:
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest
使用这个命令初始化仓库,那么同步下来的是最新版本代码,如果想下载指定版本
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-12.0.0_r1
android-12.0.0_r0这个版本代号可以到官网去找:
代号、标记和 build 号  |  Android 开源项目  |  Android Open Source Project (google.cn)

repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-12.0.0_r1

碰到这个错误,需要改一下 ~/bin/repo中的REPO_URL ,把 REPO_URL 一行替换成下面的:
REPO_URL = ‘https://gerrit-googlesource.proxy.ustclug.org/git-repo’
执行gedit ~/bin/repo

修改好后,在执行

报无法进行SSL证书校验。关闭SSL证书校验

git config --global http.sslverify false
git config --global https.sslverify false


需要配置一下自己的邮箱和用户名


初始化代码仓库成功。按Ctrl +H可以看到:

同步代码,执行:
repo sync -j4
注意-j4代表使用4个线程下载,目前官网已经说最多4个线程,不能多给。
后面就和Ubuntu22.04中一样了。

6、在Ubuntu22.04中下载源码


在~/bin/repo中配置:
REPO_URL = ‘https://gerrit-googlesource.proxy.ustclug.org/git-repo’

报无法进行SSL证书校验。关闭SSL证书校验

git config --global http.sslverify false
git config --global https.sslverify false



建议下载代码时,使用4个线程。

同步代码成功

六、代码编译

1、配置编译环境:

source build/envsetup.sh

2、选择编写版本

lunch
ss520k@ss520k-virtual-machine:~/WORKING_DIRECTORY$ lunchYou're building on LinuxLunch menu... pick a combo:1. aosp_arm-eng2. aosp_arm64-eng3. aosp_barbet-userdebug4. aosp_blueline-userdebug5. aosp_blueline_car-userdebug6. aosp_bonito-userdebug7. aosp_bonito_car-userdebug8. aosp_bramble-userdebug9. aosp_bramble_car-userdebug10. aosp_car_arm-userdebug11. aosp_car_arm64-userdebug12. aosp_car_x86-userdebug13. aosp_car_x86_64-userdebug14. aosp_cf_arm64_auto-userdebug15. aosp_cf_arm64_phone-userdebug16. aosp_cf_x86_64_foldable-userdebug17. aosp_cf_x86_64_pc-userdebug18. aosp_cf_x86_64_phone-userdebug19. aosp_cf_x86_64_tv-userdebug20. aosp_cf_x86_auto-userdebug21. aosp_cf_x86_phone-userdebug22. aosp_cf_x86_tv-userdebug23. aosp_coral-userdebug24. aosp_coral_car-userdebug25. aosp_crosshatch-userdebug26. aosp_crosshatch_car-userdebug27. aosp_crosshatch_vf-userdebug28. aosp_flame-userdebug29. aosp_flame_car-userdebug30. aosp_oriole-userdebug31. aosp_oriole_car-userdebug32. aosp_raven-userdebug33. aosp_raven_car-userdebug34. aosp_redfin-userdebug35. aosp_redfin_car-userdebug36. aosp_redfin_vf-userdebug37. aosp_sargo-userdebug38. aosp_sargo_car-userdebug39. aosp_slider-userdebug40. aosp_sunfish-userdebug41. aosp_sunfish_car-userdebug42. aosp_trout_arm64-userdebug43. aosp_trout_x86-userdebug44. aosp_whitefin-userdebug45. aosp_x86-eng46. aosp_x86_64-eng47. arm_krait-eng48. arm_v7_v8-eng49. armv8-eng50. armv8_cortex_a55-eng51. armv8_kryo385-eng52. beagle_x15-userdebug53. beagle_x15_auto-userdebug54. car_ui_portrait-userdebug55. car_x86_64-userdebug56. db845c-userdebug57. fuchsia_arm64-eng58. fuchsia_x86_64-eng59. gsi_car_arm64-userdebug60. gsi_car_x86_64-userdebug61. hikey-userdebug62. hikey64_only-userdebug63. hikey960-userdebug64. hikey960_tv-userdebug65. hikey_tv-userdebug66. pixel3_mainline-userdebug67. poplar-eng68. poplar-user69. poplar-userdebug70. qemu_trusty_arm64-userdebug71. sdk_car_arm-userdebug72. sdk_car_arm64-userdebug73. sdk_car_portrait_x86_64-userdebug74. sdk_car_x86-userdebug75. sdk_car_x86_64-userdebug76. silvermont-eng77. uml-userdebug78. yukawa-userdebug79. yukawa_sei510-userdebugWhich would you like? [aosp_arm-eng] 75      ============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=12
TARGET_PRODUCT=sdk_car_x86_64
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_ARCH=x86_64
TARGET_ARCH_VARIANT=x86_64
TARGET_2ND_ARCH=x86
TARGET_2ND_ARCH_VARIANT=x86_64
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-5.19.0-35-generic-x86_64-Ubuntu-22.04.2-LTS
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=SQ3A.220605.009.B1
OUT_DIR=out
PRODUCT_SOONG_NAMESPACES=device/generic/goldfish device/generic/goldfish-opengl hardware/google/camera hardware/google/camera/devices/EmulatedCamera device/generic/goldfish device/generic/goldfish-opengl
============================================

3、编译

指令make也可简写:
m 编译全仓
mm 编译当前模块
mmm 编译指定模块
相关问题

问题一、编译内存不足


编译android12,对内存的要求最少是16个G,我这个给的是10G明显不够。
查看swap详情:
swapon -s

编译android12,对内存的要求最少是16个G,我这个给的是10G明显不够。ubuntu中有一个类似windows虚拟内存的东西,这个就是交换区swap。查看swap详情:

swapon -s


查看交换区大小

只有两个G的大小明显不够。下面,我们把缓存区的大小调整一下,计划调成25G.

(1)停用交换文件

根据swapon -s命令查看交换区

从上面的看/swapfile就是交换文件。停用命令:

sudo swapoff /swapfile

(2)删除文件

sudo rm /swapfile

(3)创建交换区文件

sudo fallocate -l 25G /swapfile
注意:这个swapfile这名字可以随意取的,不会有任何影响。

fallocate: no filename specified,什么原因,/swapfile前面没有加空格。

修改一下权限:
sudo chmod 600 /swapfile

(4)挂载交换文件

  sudo mkswap /swapfile

(5)激活启用交换文件

  sudo swapon /swapfile


接着把交换信息写入系统配置,不然Ubuntu重启后以上配置swap空间工作得重新做。使用vim编辑器打开配置文件:

sudo vim /etc/fstab


安装一下vim
sudo apt-get install vim

安装的时候碰到
Err:1 http://security.ubuntu.com/ubuntu jammy-updates/main amd64 vim-runtime all 2:8.2.3995-1ubuntu2.3
Temporary failure resolving ‘cn.archive.ubuntu.com’
是网络出了问题
使用下面命令开启网络服务:
sudo service network-manager stop
sudo service network-manager start
如果还是不能上网,ping一下网络是否可以ping通,如果可以,说明防火墙出问题了

查看防火墙状态:
sudo ufw status verbose
关闭防火墙:
sudo ufw disable
开启防火墙:
sudo ufw enable
继续安装vim

在最后一行插入(vim打开后按i进入编辑模式,移动光标到最后回车换行):
/swapfile swap swap defaults 00

(6)设置内存使用多少时使用交换区

系统只有当虚拟内存不足才会启动Swap,比如系统默认内存只有6000KB时才会启用交换空间,但是此时系统可能已经卡死,无法启动swap,所以需要更改设置。修改/etc/sysctl.conf
系统配置文件
sudo vim /etc/sysctl.conf
在最后面添加如下语句(按i进入编辑模式,光标移到最后,插入语句)
vm.min_free_kbytes=1500000 #大致1.5G

问题二、交换时宕机

交换时宕机:虽然交互空间被创建了,交互空间也被启用了,等等,都做得很好,但是AOSP12 并没有把交换空间给兼容进来,这个就是第二个问题
解决方案:
找到 aosp/build/soong/java/droidstubs.go 文件,双击打开,搜索“cmd.BuiltTool(“metalava”)”定位到代码处,然后新加语句:
Flag(“-J-Xmx6114m”).
上面是8G内存的配置

因为是给虚拟机分配的是10G内存,所以我在这里给的是8G.

问题三、无法安装libesd0-dev

sudo vim /etc/apt/sources.list //在行尾添加如下两行的内容

deb http://us.archive.ubuntu.com/ubuntu/ xenial main universe
deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main universe
更新软件源并重新安装:
sudo apt-get update && sudo apt-get install libesd0-dev
第三问题在ubuntu20和ubuntu22中并不存在。

但是内存小,的确编译慢。

所以建议使用32G内存的机子。

4、启动模拟器

启动指令,在编译的主目录输入启动命令:
emulator
需要注意的是,前面输入了source build/envsetup.sh和lunch这两个命令后,才可以输入emulator,不然会报emulator找不到。

这个是12.0.0.r1有的,12.1.0.r8直接启动,没有这个问题。
一直停留在Phone is starting这个地方,可以关闭模拟器显示器的加速3D图形。

去掉加速3D图形的对钩。正常情况是这样的:

弹出下面对话不用担心,模拟器中运行模拟器,性能是足够的,万一不选,把电脑配置提升一下。

5、车机模拟器

Google为车机单独开发模拟器(Generic AOSP Image)。

在android 9.0的版本中是有的,但是不知道什么原因下架了。好在 Volvo 及旗下的 Polestar 作为最早开发 Android Automotive 车机的车企,对外公开了 Image。虽不支持 ARM 架构,可以在 PC 上安装体验。我们可以下载下来体验一下:

下载Volvo XC40

在Automotive中选择对应的镜像。实际运行起来的效果如下:

七、Android Studio源码导入与调试

1、生成iml与ipr

在Android Studio中导入AOSP源码,需要利用以下配置文件:
android.iml AS工程配置文件,记录项目所包含的module、依赖关系、SDK版本等。
android.ipr AS导入配置文件,记录工程的具体配置,代码以及依赖的lib等信息。
在完成了AOSP的编译后,接下来可以在AOSP源码中生成上述配置文件,依次执行:
#配置环境
sourcebuild/envsetup.sh
#选择好target
lunch


#编译idegen
mmm development/tools/idegen/

#生成ipr与iml文件
development/tools/idegen/idegen.sh

权限够不够,需要加sudo。注意下面生成的文件:

注意这两个文件是属于root的,这样我们在下面修改的时候需要加权限,不如现在就报权限改了:
sudo chmod 777 android.iml
sudo chmod 777 android.ipr
可以直接利用Android Studio打开
android.ipr文件就可以直接完成导入。

2、配置android.iml

第一次导入需要的时间会非常长,如果电脑配置不是很好,不建议全部导入,可以选择性导入需要的模块。此时可以修改android.iml文件,可以自定义只加载哪些模块。在android.iml中搜索excludeFolder,根据需要去除掉不需要导入的模块,如只需要导入framework模块,则配置iml如下:

   <excludeFolder url="file://$MODULE_DIR$/./external/emma"/> <excludeFolder url="file://$MODULE_DIR$/./external/jdiff"/> <excludeFolder url="file://$MODULE_DIR$/out/eclipse"/> <excludeFolder url="file://$MODULE_DIR$/.repo"/> <excludeFolder url="file://$MODULE_DIR$/external/bluetooth"/> <excludeFolder url="file://$MODULE_DIR$/external/chromium"/> <excludeFolder url="file://$MODULE_DIR$/external/icu4c"/> <excludeFolder url="file://$MODULE_DIR$/external/webkit"/> <excludeFolder url="file://$MODULE_DIR$/frameworks/base/docs"/> <excludeFolder url="file://$MODULE_DIR$/out/host"/> <excludeFolder url="file://$MODULE_DIR$/out/target/common/docs"/> <excludeFolder url="file://$MODULE_DIR$/out/target/product"/> <excludeFolder url="file://$MODULE_DIR$/prebuilt"/> <excludeFolder url="file://$MODULE_DIR$/art"/><excludeFolder url="file://$MODULE_DIR$/bionic"/> <excludeFolder url="file://$MODULE_DIR$/bootable"/> <excludeFolder url="file://$MODULE_DIR$/build"/> <excludeFolder url="file://$MODULE_DIR$/compatibility"/><excludeFolder url="file://$MODULE_DIR$/dalvik"/><excludeFolder url="file://$MODULE_DIR$/packages"/> <excludeFolder url="file://$MODULE_DIR$/cts"/> <excludeFolder url="file://$MODULE_DIR$/developers"/> <excludeFolder url="file://$MODULE_DIR$/development"/> <excludeFolder url="file://$MODULE_DIR$/device"/> <excludeFolder url="file://$MODULE_DIR$/external"/> <excludeFolder url="file://$MODULE_DIR$/hardware"/> <excludeFolder url="file://$MODULE_DIR$/kernel"/> <excludeFolder url="file://$MODULE_DIR$/libcore"/> <excludeFolder url="file://$MODULE_DIR$/libnativehelper"/> <excludeFolder url="file://$MODULE_DIR$/out"/> <excludeFolder url="file://$MODULE_DIR$/out"/> <excludeFolder url="file://$MODULE_DIR$/pdk"/> <excludeFolder url="file://$MODULE_DIR$/platform_testing"/><excludeFolder url="file://$MODULE_DIR$/prebuilts"/> <excludeFolder url="file://$MODULE_DIR$/sdk"/> <excludeFolder url="file://$MODULE_DIR$/system"/> <excludeFolder url="file://$MODULE_DIR$/test"/> <excludeFolder url="file://$MODULE_DIR$/toolchain"/> <excludeFolder url="file://$MODULE_DIR$/tools"/> <excludeFolder url="file://$MODULE_DIR$/vendor"/>

3、Android Studio配置

由于AOSP的源码过于庞大,为了流畅查看代码,需要减少加载的文件和足够大的内存。

3.1配置资源文件和依赖文件

完成修改后,再使用Android Studio打开ipr文件即可。后续如果需要增加或者排除其他模块,可以通过Android Studio进行配置。

在这个页面排除和导入相关代码都可以。
完成导入后,当我们点击某个类如Activity,此时可能跳转至Android Studio中的SDK对应的class或者source。此时我们希望跳转到我们自己下载的AOSP源码中,还需要进行如下配置:

删除这个依赖的jar包,只保留:

如果发现通过界面移动依赖顺序无效,此时可以打开android.iml文件,找到orderEntry配置,最终修改的配置结果为:

<orderEntry type="sourceFolder" forTests="false"/>
<orderEntry type="jdk" jdkName="Android API 32 Platform" jdkType="Android SDK" />

3.2 AndroidStudio的最大使用内存

在打开前需要最AndroidStudio的最大使用内存配置一下,不然导入的时候可以能会死机。在AndroidStudio目录下找到:studio64.vmoptions文件


修改后保存。

看9G的内存被用完,程序卡主了,那么为什么刚才的配置没有生效呢?
应该是配置文件错了,正确的文件是在/home/ss520k/.AndroidStudio3.2/config/studio64.vmoptions,其中ss520k是用户。修改后,再看看效果:

过一会儿,使用内存变小

点击Continue继续。

4、调试

要调试代码,首先要打开模拟器,注意不是Android Studio自带的模拟器,而是通过编译后的代码启动的模拟器,否则可能出现代码不对应的问题。
#设置环境
sourcebuild/envsteup.sh
#x代表编译时对应版本
lunch x
#启动模拟器
emulator

成功启动模拟器,选择断点菜单,在弹出的Choose Process中看看有没有进程列表,如果没有勾选Show all processes菜单,找到自己要调试的进程。
注意:有可以能链接不上模拟器,这个时候要看看adb有没有链接好,adb安装好后,重启AndroidStudio,再重启模拟器。

八、VScode源码导入framework的C/C++代码

使用AndroidStudio查看android源码中的c和c++代码不方便,不能跳转,就是算全仓编译过的,也不行,只有java代码可以跳转,为了方便可以使用VScode来查看c和c++代码。
1.去官网下载VSCode,https://code.visualstudio.com/
2、安装下载deb文件,命令如下:
sudo dpkg -i xxx.deb

3、安装成功后在桌面启动VSCode

4、输入c/c++安装排名靠前的三个插件既可以

5、效果


没有任何报错,比较干净。
关于使用VS Code调试代码可以参考官方文档:[https://source.android.google.cn/docs/core/tests/debug/gdb?hl=zh-cn]

AOSP开发环境搭建相关推荐

  1. 教程:BootToGecko系统虚机与实机开发环境搭建及FirefoxOS设备使用和开发网站推荐;

    ..前段日子有阵一直在折腾FirefoxOS(B2G)移动操作系统.它是以Mozilla修改过的Linux(AOSP)也就是Gonk为基础.Gecko渲染为Web层.Gaia为用户层基于Web的开源操 ...

  2. Android开发 环境搭建(ubuntu)

    通过本节实现Android开发的环境搭建,主要内容包括: (1)Linux系统安装. (2)开发工具安装. (3)刷机. 2003年10月,Andy Rubin等人创建Android公司,并组建And ...

  3. Android环境搭建和Android HelloWorld—Android开发环境搭建

    Android_Android开发环境搭建-搭建Android的开发环境 1.我考虑先下载JDK7.0,在JDK的安装中,考虑一般SDK都是向上兼容的,于是选择了最高的版本7.0 这里是我总结的详细的 ...

  4. qt工程在linux系统里颜色显示错误_【飞凌嵌入式RK3399开发板试用体验】+QT开发环境搭建测试(二)...

    作者:飞扬的青春 在拿到开发板之后,已经体验了Android操作系统,接下来就是体验Linux下的开发,本次以QT的一个小案例来测试下. 首先是自己先搭建了一个Ubuntu18.04的虚拟机,使用真机 ...

  5. Go:分布式学习利器(1) -- 开发环境搭建 + 运行第一个go程序

    文章目录 为什么要学习 go 开发环境搭建 -- MAC 运行第一个go程序 go 函数的返回值设置 go 函数的命令行参数 为什么要学习 go 在如下几个应用场景的需求下产生了go: 超大规模分布式 ...

  6. 智能合约开发环境搭建及Hello World合约

    如果你对于以太坊智能合约开发还没有概念(本文会假设你已经知道这些概念),建议先阅读入门篇. 就先学习任何编程语言一样,入门的第一个程序都是Hello World.今天我们来一步一步从搭建以太坊智能合约 ...

  7. iPhone开发环境搭建全过程 iPhone手机开发内容,中文手册

    http://3g.edu.csdn.net/kecheng/iphone.html  iPhone手机开发内容 http://www.docin.com/p-34874880.html# iPhon ...

  8. python搭建numpy_python开发环境搭建及numpy基本属性-【老鱼学numpy】

    目的 本节我们将介绍如何搭建python的开发环境以及numpy的基本属性,这样可以检验我们的numpy是否安装正确了. python开发环境的搭建 工欲善其事必先利其器,我用得比较顺手的是Intel ...

  9. windows下pomelo开发环境搭建及JS乱码问题

    from: http://blog.csdn.net/wangqiuyun/article/details/9243263 最近一直在研究node.js这一块,为的就是使用网易的pomelo框架,学习 ...

最新文章

  1. Skype for business混合部署系列之二自定义拓扑信息
  2. OpenCV使用CNN进行目标检测
  3. python3.6.3安装过程_python3.6.3安装图文教程 TensorFlow安装配置方法
  4. python udp通信_Python实现UDP程序通信过程图解
  5. 雕虫晓技(十) Android超简单气泡效果
  6. 理工大学统考计算机在线作业,北京理工在线作业-现代远程学习技术-20210417121542.pdf-原创力文档...
  7. c语言学生成绩管理系统课设作业,C语言课程设计——学生成绩管理系统
  8. 游戏思考04补充:网络游戏同步算法的理解(参考网易雷火jerish的文章,未完待续7/23,参考文献附尾,物理同步已更新完)
  9. js调用数科阅读器_pdf.js实现在HTML下直接浏览pdf文档,无需插件即可实现
  10. 金蝶盘点机PDA仓库条码管理:仓库如何盘点
  11. 最短路算法模板(Dijkstra、Bellman_ford、spfa、Floyd)
  12. iOS检测当前设备是否越狱系统
  13. python列表元素提取_python提取list中的元素
  14. 论文caj转换为word
  15. 【RT-Thread Master】at24cxx软件包使用笔记
  16. 重力加速度传感器角度输出
  17. np.percentile用法
  18. Ubuntu20.04安装nvidia显卡驱动并解决重启后黑屏问题
  19. 大数据面试题--最真实面试总结!!BAT等一线大厂,学长们实测!!
  20. c语言中girth的作用,C++初级问题,急救中!!!

热门文章

  1. ue5,ue4(虚幻5)安卓触摸
  2. 互联网+智慧医疗:基于Python打造公益智慧医院项目之智能问答系统
  3. PowerPoint to JPEG convertor
  4. 高并发访问服务器时前端优化
  5. 【codevs2343】简单题【位运算】【卡常大法好】
  6. 鸿蒙系统发布声明华为,华为王成录表示鸿蒙即将开源系统 华为发声明重申不造车...
  7. Lighthousenbsp;Partners赞助的区…
  8. C语言字符串数组遍历处理
  9. oracle如何高效分页,oracle学习之高效分页存储过程实例
  10. 在CentOS 7.6上安装MySQL 5.7.29+Navicat Premium 12 安装教程 + 注册机