windows编译安卓源码记录

2023-05-16

环境

Windows10 + vmware17 + ubuntu22

ubuntu环境设置

装完ubuntu系统后拖拽复制文件进去验证vmtools功能情况,如果vmtools异常很麻烦,试了n多方法,最后还是重新安装系统+vmtools解决, 装系统注意个性化选择,防止后面再改
右键displagy设置分辨率,语言等
在这里插入图片描述
配置后,中文显示
在这里插入图片描述

开始编译

切换到root用户,方便不用每次sudo

sudo su

源切换

如果觉得卡的时候可以更新源,也可不切换
Ubuntu 22.04:jammy
Ubuntu 20.04:focal
apt-get源切换

依赖安装

sudo apt-get install -y libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install -y tofrodos libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install -y dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install -y gnupg flex bison gperf build-essential
sudo apt-get install -y zip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install -y libc6-dev-i386
sudo apt-get install -y lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install -y libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install -y lib32z-dev ccache
sudo apt-get install -y python2-minimal

7zip 根据需要选择

如果windows下解压下载的安卓系统文件符号链接会失效,导致编译命令失效,我不是通过repo下载的,所以。。。

sudo apt install -y p7zip-full

解压到ubuntu系统

7z x android-10.0.0_r41.7z.001 -o/home/ubuntu/Desktop/android -y -bsp2

repo 方式参考

编译

编译命令比较简单,主要是处理编译期间出现的异常

source build/envsetup.sh
//选择平台编译选项
lunch 
// 如遇到编译失败。下面命令可再次运行
make -j8

编译类型分为user、userdebug、eng
user:用来正式发布到市场的版本,权限受限,如没有root权限、不能dedug、adb默认处于停用状态。
userdebug:在user版本的基础上开放了root权限和debug权限,adb默认处于启用状态,一般用于调试真机。
eng:开发工程师的版本,拥有最大的权限(root等),具有额外调试工具的开发配置,一般用于模拟器。

lunch参考
注意 lunch 根据自己需要选择选项,后续要启动模拟器,电脑为x86架构,选择 aosp_x86-eng
在这里插入图片描述

n时间后,ok
在这里插入图片描述

验证

前后耗费一天多时间,终于搞定,再次make的话花的时间较少了
make 后才能能用,单独运行提示命令找不到滴

emulator 

在这里插入图片描述

问题记录

/mnt/hgfs权限问题/重启失效/找不到

参考

权限

//先取消挂载,再设置权限
sudo umount /mnt/hgfs
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other`

共享文件重启失效

方式1 虚拟机设置中共享文件夹设置中禁用,再启用。
方式2 启动终端执行vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other
方式3 开机启动

sudo gedit /etc/rc.local

复制以下内容到rc.local

#!/bin/sh
vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other
exit

添加权限,开启rc服务

rc.local 服务启动

快捷方式创建

给共享文件创建桌面快捷方式

ln -s  /mnt/hgfs ~/Desktop/hgfs

xdg-user-dirs-gtk-update无效/桌面中文路径改英文

这个主要是更改中文系统后,终端路径也改为中文了,不太方便,终端路径还是英文好

echo en_US > ~/.config/user-dirs.locale
echo en_US > ~/.config/user-dirs.locale

显执行上述命令之一,然后再执行 xdg-user-dirs-gtk-update
查看:gedit ~/.config/user-dirs.dirs

打开文件左上角

sudo apt install -y compizconfig-settings-manager
ccsm

7zip中软链接文件 在windows下会解压失效

在windows下解压软链接文件失效,而ubuntu下正常
下载下来的安卓源码压缩包不要在windows下解压,编译不正常,就有部分软链接文件的原因

常用加解压命令

7z a out.7z  test
7z x out.7z -ooutput_folder -y

编译错误

go配置问题

FAILED: ninja: 'build/blueprint/pathtools/glob_test.go', needed by 'out/soong/.bootstrap/blueprint-pathtools/test/test.go', missing and no known rule to make it
grep -rn glob_test.go

"pathtools/fs_test.go " ,“glob_test.go”,“pathtools/glob_test.go”,
build/blueprint/Blueprints注释掉上面三个go文件配置

so未找到

apt-get install -y libncurses5

// 或者试试这个
# 安装 lib32ncurses5-dev
apt-get -y install aptitude
aptitude install lib32ncurses5-dev 

prebuilts/clang/host/linux-x86/clang-3289846/bin/clang.real: error
while loading shared libraries: libncurses.so.5: cannot open shared
object file: No such file or directory

api 文档更新

make api-stubs-docs-update-current-api

you have tried to change the API from what has been previously approved.

To make these errors go away, you have two choices:
   1. You can add '@hide' javadoc comments to the methods, etc. listed in the
      errors above.

   2. You can update current.txt by executing the following command:
         make api-stubs-docs-update-current-api

      To submit the revised current.txt to the main Android repository,
      you will need approval.
******************************

python版本管理

AOSP 12以上,python3,软链接即可

sudo ln -s /usr/bin/python3 /usr/bin/python

AOSP 12以下python2

 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2

update-alternatives后面按顺序共5个参数,其中:
第一个参数–install表示向update-alternatives注册服务名。
第二个参数/usr/bin/python是注册的最终地址,以后管理就是管理这个软链
第三个参数python为服务名
第四个参数为被管理命令的绝对路径
第五个参数为优先级,数字越大优先级越高

配置完毕后,可以使用python --version查看当前python版本

切换版本

update-alternatives --config python

参考

手把手一步步实现 Ubuntu20.04编译Android10系统源码
下载AOSP源码编译、调试、刷机

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

windows编译安卓源码记录 的相关文章

随机推荐

  • powershell中压缩与解压缩zip文件的问题

    powershell压缩与解压缩zip文件 powershell一些小使用技巧能在开发过程中带来便捷 powerShell v5 以前 这里先介绍powershell v5之前的做法 xff1a 1 解压缩zip function Unzi
  • Kotlin 在Android使用问题

    1 kotlin与Databinding的使用出现 Unresolved reference ActivityMainBinding 的错误 解决方案 xff1a app build kapt generateStubs 61 span c
  • spring框架

    关于spring的说法错误的是 xff08 D xff09 A spring是一个轻量级Java EE的框架集合 B spring的 依赖注入 模式的实现 C 使用spring可以实现声明事务 D spring提供了AOP方式的日志系统 解
  • NSAttributedString用法简介,控制文字颜色,背景色等属性

    NSAttributedString用来管理字符串以及和字符串相关的属性 下面的代码是根据字符范围设置label的text的颜色 UIFont font 61 UIFont systemFontOfSize 14 0 行间距和字体 NSDi
  • AVStream AVCodecContext AVCodec

    AVStream 表示成一个流媒体 xff0c 每个AVStream对应一个AVCodecContext xff0c 存储该音视频流使用解码器的相关数据 xff0c 每个AVCodecContext中对应一个AVCodec 包含该音视频的解
  • 2022 年 GIS 就业状况

    2022 年 GIS 就业状况 我们生活在数字时代 xff0c 通过进行在线研究选择我们的道路 xff0c 比如选择假期 选择大学或追求职业 如果您正在考虑进入 GIS 领域或在 GIS 领域进一步发展 xff0c 那么这份报告一定会有所帮
  • 在Keyguard锁屏上面可弹出Toast消息的方法

    通过调用toast的getWindowParams方法获取toast的WindowParams xff0c 再设置允许在锁屏之上显示的window flag FLAG SHOW WHEN LOCKED 参考代码如下 Toast mToast
  • vsftpd的参数说明和虚拟用户配置

    vsftpd配置文件详解 1 默认配置 xff1a 1 gt 允许匿名用户和本地用户登陆 anonymous enable 61 YES local enable 61 YES 2 gt 匿名用户使用的登陆名为ftp或anonymous x
  • gradle 插件版本、gradle版本 和buildToolsVersion之间的对应关系

    一 主要概念 1 Gradle是什么 xff1f Gradle其实就是一个构建项目的工具 xff0c 即把一堆堆的目录 文件按照一定的规则关联起来 xff0c 形成一个项目的自动化构建工具 Gradle版本 如 xff1a gradle 5
  • 学神的“诞生”-2014清华大学本科生特等奖学金答辩观后感

    清华的特奖与交大的竢实扬华 偶然间在学堂在线上留意到有这样的一场现场答辩 xff0c 很想知道最高学府的最高荣誉花落谁家 xff0c 得此殊荣的又是些怎样的 学神 xff0c 几点感受记录之 1 经历 gt gt 证书 清华的学生更注重大学
  • nexus3.14.0版本linux环境安装、启动、搭建私库

    本文介绍的是nexus3 14 0版本在linux环境下安装 启动 搭建私库 nexus3以上的版本太新了 xff0c 网上很少介绍安装细节的 据了解和2 X版本有所不同了 1 前提 linux机器上需先安装好jdk xff0c 并且配置好
  • CentOS7安装MariaDB以及编码注意事项

    1 安装并启动MariaDB span class hljs preprocessor 先更新一下 span yum upgrade span class hljs preprocessor 安装 span yum y install ma
  • c++多线程 (生产者消费者问题)

    针对多线程中常见的生产者消费者问题 xff0c 封装了一个类 xff0c 和测试代码 xff0c 方便日后直接套用 具体来说就是多线程使用时候经常遇到的 一个线程取数据 xff0c 一个处理数据 xff0c 一个保存或传递数据 的情况 简单
  • 看技术书籍坚持不下来的,看这里,记录增量学习法

    今天 xff0c 在阅读 软技能 代码之外的生存指南 这本书的过程中 xff0c 学习到了番茄工作法 定额工作法 xff0c 受此启发 xff0c 突然脑海里冒出了一个方法论 xff0c 这是我独创的一个学习方法论 xff0c 我把它称作
  • Android native内存泄露排查总结

    Android开发通常涉及java层 native xff08 c c 43 43 xff09 下的开发 xff1b 内存的泄露也可以分为dalvik和native两种 xff1b java层的通常叫好分析 xff0c 可以借助heapdu
  • 分享一个手游脚本源码

    目的 给大家接触手游模拟脚本的一个样板 xff0c 支持多分辨率适配 脚本功能为批量送体力给好友 xff0c 功能简单 源码 lua span class token comment 版本 span span class token com
  • crackme例子2

    样本 jadx clacSnFuntion jni函数 xff0c ida分析 关键位置函数一片红色 xff0c 可能有动态加解密 如果不分析具体解密算法 xff0c 可内存dump解密后整个so frida如下 xff1a span cl
  • 8本游戏开发书籍推荐

    很多刚刚接触游戏开发的朋友经常问我 xff1a 如何开始学习游戏开发 xff1f 我从事游戏开发行业很多年了 xff0c 坦率地讲 xff0c 开发游戏充满挑战性 xff0c 需要开发人员具备大量的技能与积极的创新精神 希望这篇小文能帮助朋
  • win10编译scrcpy详解

    环境配置 安装MSYS2 安装后打开msys终端 xff0c 运行如下命令 span class token comment runtime dependencies span pacman S mingw w64 x86 64 SDL2
  • windows编译安卓源码记录

    环境 Windows10 43 vmware17 43 ubuntu22 ubuntu环境设置 装完ubuntu系统后拖拽复制文件进去验证vmtools功能情况 xff0c 如果vmtools异常很麻烦 xff0c 试了n多方法 xff0c