Ubuntu虚拟机环境搭建Android系统源码编译环境及问题解决方法

2023-11-03

一、获取Android源码网络配置可以访问google(方法一)

二、获取Android源码网络配置可以访问google(方法二)

三、Ubuntu18.04下更改apt源为阿里云源

四、代理导致网络无法访问时,证书问题的解决方法

五、Ubuntu环境普通用户自动化下载LineageOS支持机型的各版本Android系统源码的操作方法

六、MoKee(魔趣)或LineageOS

七、MoKee魔趣

八、常用的Android系统源码编译基础

九、端口占用问题的解决方法

十、Ubuntu 16.04上增加Swap分区 

十一、磁盘空间不足可以采用如下方法扩展磁盘空间

十二、无法访问google的情况下魔趣Mokee镜像添加编译系统的设备选型号(lunch)

十三、无法访问google的情况下Lineage OS镜像添加编译系统的设备选型号(lunch)

 

一、获取Android源码网络配置可以访问google(方法一) 

图片

 

图片

 

设置http、https以及ftp代理其中IP为主机IP地址

export http_proxy=socks5://172.20.10.2:1080

export https_proxy=socks5://172.20.10.2:1080

export FTP_PROXY=socks5://172.20.10.2:1080

export ALL_PROXY=socks5://172.20.10.2:1080

 

设置http代理其中IP为主机IP地址

git config --global http.proxy http://172.20.10.2:1080

git config --global https.proxy https://172.20.10.2:1080

git config --global user.email "****@email.address"

git config --global user.name "****"

 

取消http代理

git config --system (或 --global 或 --local) --unset http.proxy

git config --system (或 --global 或 --local) --unset https.proxy

 

二、获取Android源码网络配置可以访问google方法二 

图片

 

图片

 

三、Ubuntu18.04下更改apt源为阿里云源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

sudo apt-get install vim

 

将原有的内容注释掉,添加以下内容

sudo vim /etc/apt/sources.list

sudo gedit /etc/apt/sources.list

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

 

更新软件列表

sudo apt-get update

 

更新软件包

sudo apt-get upgrade

 

四、代理导致网络无法访问时,证书问题的解决方法

取消代理

git config --global --unset http.proxy

git config --global --unset https.proxy

 

删除本地配置文件

apt-get purge openssl

rm -rf /etc/ssl

 

重新安装

sudo apt-get install libssl-dev openssl

apt-get install ca-certificates

 

五、Ubuntu环境普通用户自动化下载LineageOS支持机型的各版本Android系统源码操作方法

(1).获取root权限

sudo su

按https://wiki.lineageos.org/devices/的操作步骤获取Android系统源码(各机型获取源码的方法类似),如图所示:

https://wiki.lineageos.org/devices/hammerhead/build(其他机型类似)

图片

 

图片

 

图片

 

图片

 

图片

 

图片

 

图片

 

六、MoKee(魔趣)或LineageOS

(1).通过git下载各机型支持的device、kernel、vendor系统源码的方法(各机型类似),如下所示:

https://github.com/LineageOS/android_device_xiaomi_cancro

https://github.com/LineageOS/android_kernel_xiaomi_cancro

https://github.com/MoKee/android_vendor_xiaomi_cancro

https://github.com/MoKee/android_device_xiaomi_cancro

https://github.com/MoKee/android_kernel_xiaomi_cancro

 

https://github.com/LineageOS/android_device_lge_hammerhead

https://github.com/LineageOS/android_kernel_lge_hammerhead

https://github.com/MoKee/android_vendor_lge_hammerhead

https://github.com/MoKee/android_kernel_lge_hammerhead

 

https://github.com/LineageOS/android_device_huawei_angler

https://github.com/MoKee/android_vendor_huawei_angler

https://github.com/LineageOS/android_kernel_huawei_angler

 

(2).配置Android系统源码编译环境(普通用户)

vim ~/.bashrc

图片

 

source ~/.bashrc

 

./prebuilts/sdk/tools/jack-admin kill-server

./prebuilts/sdk/tools/jack-admin start-server

 

(3).配置Android系统源码编译环境(root用户)

vim ~/.bashrc

 

export USE_CCACHE=1

export CCACHE_EXEC=/usr/bin/ccache

ccache -M 50G

export CCACHE_COMPRESS=1

export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096"

export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m"

export LC_ALL=C

 

图片

 

source ~/.bashrc

 

./prebuilts/sdk/tools/jack-admin kill-server

./prebuilts/sdk/tools/jack-admin start-server

 

图片

 

七、MoKee魔趣

安装Repo

在当前用户的根目录创建bin文件夹,并添加到系统环境变量中

mkdir ~/bin

PATH=~/bin:$PATH

 

下载Repo并给予执行权限

curl https://download.mokeedev.com/git-repo-downloads/repo > ~/bin/repo

curl https://raw.githubusercontent.com/MoKee/git-repo/stable/repo > ~/bin/repo

chmod a+x ~/bin/repo

 

图片

 

8.1的魔趣源码,分支修改成mko-mr1

repo init -u https://github.com/MoKee/android -b mko-mr1

repo sync

repo sync -f -j8

repo sync -c -f -j8 --force-sync --no-clone-bundle

 

编译Android8.1的命令

make bacon

make bacon -j4

make bacon -j8

make bacon -j16

 

9.0的魔趣源码,分支修改成mkp

git config --global http.proxy http://192.168.101.102:1080

git config --global https.proxy https://192.168.101.102:1080

 

git config --global user.email "gouyp@email.address"

git config --global user.name "gouyp"

repo init -u https://github.com/MoKee/android -b mkp

repo init -u https://github.com/MoKee/android -b mkp-dev

repo init -u https://github.com/MoKee/android.git -b mkp

repo sync

 

9.0的魔趣源码的编译

. build/envsetup.sh && lunch (enter device number) && mka bacon

 

repo init -u https://github.com/MoKee/android -b mkp --depth 1

repo sync

. build/envsetup.sh

lunch

 

编译选项:28(OnePlus 6机型)

mka bacon

mka bacon -j8

 

Android系统一键刷机的方法

图片

 

fastboot --disable-verity --disable-verification flash vbmeta stock_vbmeta.img

fastboot flash vbmeta vbmeta.img

fastboot flash boot boot.img

fastboot flash system system.img

fastboot flash userdata userdata.img

fastboot -w reboot

 

图片

 

图片

 

图片

 

图片

 

图片

 

八、常用的Android系统源码编译基础

删除所有配置所编译输出的结果文件

make clobber

 

添加系统API或者修改@hide的API后,需要执行如下命令,然后再make

make update-api

 

修改公共API后,需要执行如下命令,然后再make

make update-api

 

分模块编译

编译boot.img

make bootimage

 

编译userdata.img

make userdataimage

 

编译system.img

make systemimage

 

重新打包system.img

make snod

 

将App预装到系统中(需要预装的App是以源码形式提供,则需要先编译)

在源码根目录执行以下命令

source build/envsetup.sh

mmm packages/apps/TestApp

 

编译完成后,会在out/target/product/xxx/system/app/路径下生成对应的apk文件(xxx为设备代号),如果已经有apk文件则直接放在该路径下;如果是系统应用,则应放在out/target/product/xxx/system/priv-app/路径下,接下来需要重新打包成镜像文件,回到源码根目录,执行以下命令重新打包system.img

make snod

 

九、端口占用问题的解决方法

netstat -tln | grep jack-端口号,只查看端口jack-端口的使用情况

lsof -i:jack-端口号 查看端口属于哪个程序,端口被哪个进程占用

kill -9 jack-端口号进程pid

 

sudo vim ~/.jack-settings

图片

 

sudo vim ~/.jack-server/config.propertie 

图片

sudo chmod 600 ~/.jack-settings

sudo chmod 600 ~/.jack-server/config.properties

 

sudo vim ~/.bashrc

sudo source ~/.bashrc 

图片

 

图片

 

export USE_CCACHE=1

export CCACHE_EXEC=/usr/bin/ccache

ccache -M 50G

export CCACHE_COMPRESS=1

export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096"

export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m"

export LC_ALL=C

 

./out/host/linux-x86/bin/jack-admin stop-server

./out/host/linux-x86/bin/jack-admin start-server

 

./prebuilts/sdk/tools/jack-admin kill-server

./prebuilts/sdk/tools/jack-admin start-server

 

十、Ubuntu 16.04上增加Swap分区 

图片

 

查看磁盘空间大小

df -h

 

查看磁盘中的文件大小

du -sh

 

查看内存使用情况

free -m

 

gnome-system-monitor

 

十一、磁盘空间不足可以采用如下方法扩展磁盘空间

图片

 

安装gparted分区管理软件

sudo apt-get install gparted

图片

 

图片

 

https://blog.csdn.net/u011345885/article/details/73060897

 

十二、无法访问google的情况魔趣Mokee镜像添加编译系统的设备选型号(lunch) 

图片

 

十三、无法访问google的情况下Lineage OS镜像添加编译系统的设备选型号(lunch)

图片

 

vendor和device相应子目录下的vendorsetup.sh文件的实现,它们主要就是添加相应的设备型号及其编译类型支持到Lunch菜单中去

 

把device/huawei/angler/vendorsetup.sh中的add_lunch_combo aosp_angler-userdebug添加到vendor/cm/vendorsetup.sh的最后,编译源码时就可以输入lunch命令获取到设备选型号

图片

 

关注微信公众号,获取更多最新文章信息,感谢您的支持

图片

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

Ubuntu虚拟机环境搭建Android系统源码编译环境及问题解决方法 的相关文章

  • Twitter 登录说明

    我想在 Android 中创建一个 Twitter 应用程序 为此 我想创建一个登录页面并登录到 Twitter 为此 我们需要消费者密钥和消费者密钥 这是什么意思 要创建此登录页面 除了 Twitter 帐户之外 我们还需要其他任何东西吗
  • Android:使用 OAuth 访问 google 任务时出现问题

    由于 google 任务没有公共 api 我想编写解决方法并像浏览器一样请求数据 然后解析结果以进一步显示 为了访问数据 我使用 google 实现了 OAuth 身份验证来访问此 url https mail google com htt
  • Manifest Merger工具:替换失败

    我正在使用一个使用自己的 android theme 的库 因此在构建时收到以下错误 错误 55 9 任务 contacit processDebugManifest 执行失败 清单合并失败 AndroidManifest xml 中的属性
  • 通过 WhatsApp 发送消息

    由于我发现了一些较旧的帖子 表明 Whatsapp 不支持此功能 我想知道是否发生了变化 以及是否有办法打开与我通过意图发送的号码进行 Whatsapp 聊天 UPDATE请参阅https faq whatsapp com en andro
  • 带有一、二和三个按钮的 Android 警报对话框

    我不经常发出警报 但每次发出警报时 我都会花一些时间来阅读文档 https developer android com guide topics ui dialogs html并弄清楚如何去做 由于我现在不得不这样做几次 所以我将在下面写一
  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • 调试:在 Android 1.0 中找不到文件

    今天我更新到 Android Studio v 1 0 在尝试编译任何项目时出现以下错误 app build intermediates classes debug 找不到文件 问题是在更新之前我没有任何问题 这是我实际尝试编译的代码 构建
  • 如何解决 Firebase AuthUi 中无法找到显式活动?

    使用 firebase UI 时 我无法找到显式活动类 com firebase ui auth KickoffActivity protected void onCreate Bundle savedInstanceState super
  • 如何在android线性布局上获得阴影? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在android中为View设置阴影 https stackoverflow com questions 4406524 how to set shadow to a view in androi
  • 调整浮动操作按钮的图标大小(fab)

    The new floating action button should be 56dp x 56dp and the icon inside it should be 24dp x 24dp So the space between i
  • 使用 Retrofit2 和 Mockito 或 Robolectric 进行 Android 单元测试

    我可以测试 Retrofit2beta4 的真实响应吗 我需要 Mockito 或 Robolectic 吗 我的项目中没有活动 它将是一个库 我需要测试服务器是否正确响应 现在我有这样的代码并卡住了 Mock ApiManager api
  • Android onChange 事件未在 android 5 (Lollipop) 上的 chrome 历史记录的 contentObserver 中触发

    我注意到我的 chrome 历史记录和书签的 contentObservers 在 android lolipop 上不再触发 该代码在旧版本的 android 上完美运行 无论 chrome 版本如何 但在 Lollipop 上它不再运行
  • Java 文件上传速度非常慢

    我构建了一个小型服务 它从 Android 设备接收图像并将其保存到 Amazon S3 存储桶中 代码非常简单 但是速度非常慢 事情是这样的 public synchronized static Response postCommentP
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • 在旋转时从错误的资源文件夹中提取可绘制对象

    在这里拉我的头发 因此 我正在使用一个具有多种类型的可绘制对象的应用程序 并且它们的结构如下 res Portrait resources drawable mdpi drawable hdpi drawable xhdpi Landsca
  • Android 后台服务示例,具有交互式调用方法

    我不是 Android 方面的专家 我正在寻找一个 Android 应用程序的示例 该应用程序使用一个服务 其中有真正的功能方法 或者换句话说 一个服务可以用来做什么 我们什么时候需要它 超越简单的东西服务举例 我确信您渴望获得一些工作代码
  • 按钮 - 单击时更改背景颜色

    我的活动中有 8 个按钮 我正在寻找的是 按钮具有默认背景 单击按钮时 背景颜色应更改为其他颜色 这部分非常简单 但是 当我单击任何其他按钮时 第一个按钮的背景颜色应该变回默认颜色 我知道这将使用 选择器状态 来完成 但我不太确定如何实现它
  • Android studio - 如何查找哪个库正在使用危险权限?

    我正在尝试将 apk 上传到 google play 商店 但令我惊讶的是 我正在使用以下权限 Your APK is using permissions that require a privacy policy android perm
  • 获取其他指针的MotionEvent.getRawX/getRawY

    我可以获取其他指针的MotionEvent getRawX getRawY 值吗 MotionEvent getRawX API 参考 http developer android com reference android view Mo
  • 尝试将 SQLite DB 从数据复制到 SD 卡

    我正在使用以下代码 该代码发布在 Stack Overflow 上的某个位置 并根据我的目的进行了修改 try File sd Environment getExternalStorageDirectory File data Enviro

随机推荐

  • Java 解压压缩文件,springMVC 接收压缩文件

    解压 zip rar 类型的压缩文件 1 首先需要 jar 包 ant 1 6 5 jar 解压zip格式的压缩文件 junrar 0 7 jar 解压rar 格式 如果是 maven
  • Spring Beans 详解

    目录 1 如何命名 Beans 2 如何实例化 Beans 3 确定 Bean 的运行时类型 Spring IoC 容器用来管理一个或多个 bean 这些 bean 通过用户提供的配置文件创建 例如 xml 格式的
  • 论文写作课程收获总结

    1 学术论文的作用 达到毕业条件 评职称 知识的传承和学术的宣传 2 小白写论文的初期步骤 读文献 总结模板 最后在自己的模板上写 当然也可以用别人的模板写 3 写论文得趁早 因为论文发表周期真的很长 ps 徐媛媛老师有一篇论文好像就经历了
  • Maven如何导入jar包

    一 通过修改pom xml文件添加依赖关系 1 到http maven aliyun com nexus welcome上搜索相应的包 复制文本内容 2 打开项目中的pom xml文件 图中2处需先添加
  • ElasticSearch第十五讲 ES数据写入过程和写入原理以及数据如何保证一致性

    Es的数据并发冲突 ES 数据并发冲突控制是基于的乐观锁和版本号的机制 一个document第一次创建的时候 它的 version内部版本号就是1 以后 每次对这个document执行修改或者删除操作 都会对这个 version版本号自动加
  • deepin 远程linux,在Deepin系统下快速安装和配置XRDP远程连接的关键点

    在Deepin系统下安装XRDP非常的简单 只需要在终端中执行sudo apt install xrdp命令即可 配置实现XRDP远程连接也非常的简单 通过以下方法使你快速完成安装和配置XRDP的操作 前言 在系统中安装XRDP后 Deep
  • APK安装后在桌面的图标列表里不显示/显示的方法

    当我们的程序在被安装后再次重启系统时系统会自动创建我们的APK程序 在所有的APK程序都安装完后系统会最后安装Luncher2 apk 应用程序 Luncher2 apk就是我们的系统界面应用程序 它会检测系统已经安装的应用软件的包名 然后
  • HDU-2061 汉诺塔III (简单DP)

    约19世纪末 在欧州的商店中出售一种智力玩具 在一块铜板上有三根杆 最左边的杆上自上而下 由小到大顺序串着由64个圆盘构成的塔 目的是将最左边杆上的盘全部移到右边的杆上 条件是一次只能移动一个盘 且不允许大盘放在小盘的上面 现在我们改变游戏
  • latex 1图加标题_LaTeX 公式篇

    LaTeX 始于公式 忠于优雅 很长一段时间 数学公式的编辑都是采用MathType解决的 但是直到我遇到了LaTeX的公式便一见倾心 久久不能释怀 简介 相信很多做学术的科研狗应该都是听过LaTeX排版写出来的Paper是多么的好看 颜值
  • 2013年8月20日星期二(DEMO7-19DX与GDI混合使用)

    只需要在ddraw中找到一个兼容DC 就可以使用 使用完之后再释放 函数实现为 int Draw Text GDI char text int x int y COLORREF color LPDIRECTDRAWSURFACE7 lpdd
  • 修改网站图标以apache tomcat为例

    路径在 opt apache tomcat 9 0 6 webapps ROOT 把该路径下的favicon ico文件换成自己的 名字必须也是要favicon ico
  • [技术讨论]遇到电路反馈怎么办,看这里

    在做电路反馈分析的时候 经常会看到术语电压串联负反馈 电流串联负反馈之类的定义 那么这些定义对电路分析的作用在哪里呢 各种教科书都讲到 反馈的性质和反馈类型的确定是讨论反馈放大器性能的前提 在大部分实际电路中 放大器和反馈网络总是联系到一起
  • 在终端上查询git的工具

    tig
  • [YOLO专题-22]:YOLO V5 - ultralytics代码解析-超参数详解

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122372614 目录 前言 第1章
  • 微信小程序嵌套h5页面怎么实现小程序支付

    微信小程序嵌套h5页面怎么实现小程序支付 小程序嵌套h5页面怎么实现小程序支付小程序中嵌套h5页面 但是不能再h5页面拉起小程序支付 这时是需要小程序方拉起支付 目前的流程 外链发送订单请求拿到预支付的prepay id和其他参数 小程序这
  • 爬虫超时报错socket.timeout: timed out/NameError: name ‘socket‘ is not defined

    问题一 socket timeout timed out 源代码 import urllib request 获取一个get请求 import urllib parse 获取一个pos请求 import urllib error heade
  • 实现子域的委派

    准备 两台主机 一台父域 一台子域 1 在父域服务器 vim etc named conf dnssec enable no dnssec validation no vim var named magedu com zone zhengz
  • python编程考试题目大全

    1 题目名称 批阅奏章 某朝皇帝有大臣n名 1 lt n lt 1000 分别编号大臣1 n 某日皇帝身体抱恙 奏章堆积如山无法及时一一批阅 便命身旁內侍帮他把奏章按指定顺序排序后再阅 于是皇帝亲自挑选了几个值得信赖的重臣并排好序 要求把他
  • GitHub开源项目及代码分享:GitHub图像识别开源项目

    北京大学研究者开发了一款图像识别程序 基于深度卷积和递归神经网络的新型深度网络体系结构 用于单图像去除 结合递归神经网络以保留先前阶段中的有用信息 团队对合成数据集和现实数据集进行了大量实验 提出的方法在所有评估指标下都优于目前最先进的方法
  • Ubuntu虚拟机环境搭建Android系统源码编译环境及问题解决方法

    一 获取Android源码网络配置可以访问google 方法一 二 获取Android源码网络配置可以访问google 方法二 三 Ubuntu18 04下更改apt源为阿里云源 四 代理导致网络无法访问时 证书问题的解决方法 五 Ubun