Android envsetup与Python venv使用指南

Android envsetup 和 Python venv 是两种完全不同的环境配置工具,分别服务于不同的开发场景。以下是对它们的详细解释及使用方法:


1. Android envsetup

用途
Android envsetup 是 Android 源码开发中的环境配置脚本(envsetup.sh),用于初始化 Android 源码编译所需的工具链、环境变量和快捷命令。它专为编译 AOSP(Android Open Source Project)或定制 Android 系统而设计。

核心功能

  • 设置编译环境变量(如 ANDROID_BUILD_TOP 指向源码根目录)。
  • 提供快捷命令(如 croot 快速跳转源码根目录、mm 编译当前模块)。
  • 通过 lunch 选择目标设备(如 aosp_x86_64-eng)。

使用场景

  • 编译 Android 系统源码(如 AOSP)。
  • 开发或调试系统级组件(如 Framework、Hal 层)。
  • 定制 ROM 或刷机包。

使用方法

  1. 进入 Android 源码目录:
    cd /path/to/android/source
    
  2. 初始化环境:
    source build/envsetup.sh
    
  3. 选择编译目标:
    lunch
    # 输入数字选择设备(如 `aosp_x86_64-eng`)
    
  4. 编译代码:
    • 编译整个系统:make -j$(nproc)
    • 编译单个模块:mm(需在模块目录下)
    • 编译指定模块:mmm path/to/module

关键命令

  • lunch: 选择目标设备(如手机型号或模拟器)。
  • croot: 快速返回源码根目录。
  • mm/mmm: 编译当前目录或指定目录的模块。
  • make snod: 快速重新生成系统镜像(跳过部分编译步骤)。

2. Python venv

用途
Python venv 是 Python 自带的虚拟环境工具,用于创建独立的 Python 环境,隔离不同项目的依赖,避免全局安装包的版本冲突。

核心功能

  • 隔离项目依赖(如不同项目使用不同版本的 Django)。
  • 通过 pip 安装包到虚拟环境,不影响系统全局 Python。
  • 支持导出依赖列表(requirements.txt)。

使用场景

  • 开发 Python 应用时管理项目依赖。
  • 需要同时维护多个项目,且依赖版本不同。
  • 部署 Python 应用时确保环境一致性。

使用方法

  1. 创建虚拟环境:
    python -m venv myenv  # 生成 `myenv` 目录
    
  2. 激活虚拟环境:
    • Linux/macOS
      source myenv/bin/activate
      
    • Windows
      myenv\Scripts\activate.bat
      
  3. 安装依赖:
    pip install requests  # 包仅安装在虚拟环境中
    
  4. 导出依赖列表:
    pip freeze > requirements.txt
    
  5. 退出虚拟环境:
    deactivate
    

关键操作

  • 依赖复用:通过 pip install -r requirements.txt 快速安装他人项目的依赖。
  • 轻量隔离:虚拟环境仅占用少量磁盘空间,可随时删除重建。

对比总结

工具场景核心功能典型命令
Android envsetupAndroid 源码编译配置编译环境、提供快捷命令source envsetup.sh, lunch, mm
Python venvPython 项目管理隔离依赖、管理包版本python -m venv, activate, pip

常见问题

Q1:envsetup.sh 只能在 AOSP 中使用吗?
是的,它是 Android 源码编译的专用工具,普通 App 开发无需使用。

Q2:Python 虚拟环境能否跨平台共享?
不建议直接复制虚拟环境目录,不同平台可能不兼容。应通过 requirements.txt 同步依赖。

Q3:如何彻底删除虚拟环境?
直接删除虚拟环境目录(如 rm -rf myenv)即可。


通过合理使用这两个工具,你可以高效管理 Android 系统级开发环境和 Python 项目依赖环境,避免环境冲突问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/78820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

游戏引擎学习第222天

回顾昨天的过场动画工作 我们正在制作一个游戏,目标是通过直播的方式完成整个游戏的开发。在昨天的工作中,我享受了制作过场动画的过程,所以今天我决定继续制作多个层次的过场动画。 昨天我们已经开始了多层次过场动画的基本制作&#xff0…

Leedcode刷题 | Day31_贪心算法05

一、学习任务 56. 合并区间代码随想录738. 单调递增的数字968. 监控二叉树 二、具体题目 1.56合并区间56. 合并区间 - 力扣(LeetCode) 给出一个区间的集合,请合并所有重叠的区间。 示例 1: 输入: intervals [[1,3],[2,6],[8,10],[15,1…

app逆向专题五:新快报app数据采集

app逆向专题五:新快报app数据采集 一、抓包寻找数据接口二、编写代码三、完整代码一、抓包寻找数据接口 打开charles,并在手机端打开新快报app,点击“广州”或者“经济”等选项卡,抓包,寻找数据接口,如图所示: 二、编写代码 这里介绍一种简便的代码编写方法,在数据…

Java面试黄金宝典45

1. 非对称加密 RSA 定义:RSA 是一种广泛使用的非对称加密算法,其安全性基于大整数分解的困难性。它使用一对密钥,即公钥和私钥。公钥可公开用于加密消息,而私钥必须保密,用于解密由相应公钥加密的消息。要点: 公钥公开,私钥保密,二者成对出现。加密和解密使用不同的密钥…

提权实战!

就是提升权限,当我们拿到一个shell权限较低,当满足MySQL提权的要求时,就可以进行这个提权。 MySQL数据库提权(Privilege Escalation)是指攻击者通过技术手段,从低权限的数据库用户提升到更高权限&#xff…

在虚拟机上修改saprk的版本

之前安装的spark版本是3.4,现在实验需要的版本是2.4。现在需要更改spark的版本。 方法很简单: 直接将原有的spark3.4的文件删除,再安装2.4版本。 安装过程之后再写。Spark2.1.0入门:Spark的安装和使用_厦大数据库实验室博客

文献分享: DESSERT基于LSH的多向量检索(Part3.2.外部聚合的联合界)

原论文 文章目录 1. \textbf{1. } 1. 定理 4.2 \textbf{4.2} 4.2的内容 1.1. \textbf{1.1. } 1.1. 一些符号 1.2. \textbf{1.2. } 1.2. 定理内容 3. \textbf{3. } 3. 联合界限 Ps. \textbf{Ps. } Ps. 运行时间分析 1. \textbf{1. } 1. 定理 4.2 \textbf{4.2} 4.2的内容 1.1. \t…

MIPI协议介绍

MIPI协议介绍 mipi 协议分为 CSI 和DSI,两者的区别在于 CSI用于接收sensor数据流 DSI用于连接显示屏 csi分类 csi 分为 csi2 和 csi3 csi2根据物理层分为 c-phy 和 d-phy, csi-3采用的是m-phy 一般采用csi2 c-phy 和 d-phy的区别 d-phy的时钟线和数据线是分开的,2根线一对…

【中间件】nginx反向代理实操

一、说明 nginx用于做反向代理,其目标是将浏览器中的请求进行转发,应用场景如下: 说明: 1、用户在浏览器中发送请求 2、nginx监听到浏览器中的请求时,将该请求转发到网关 3、网关再将请求转发至对应服务 二、具体操作…

在3ds Max中视口显示为黑色或深灰色

在3ds Max中视口显示为黑色或深灰色 Autodesk Support 2023年10月8日 涵盖的产品和版本 问题: 在3ds Max中,使用“深”UI方案时视口显示为完全黑色,使用“浅”UI方案时视口显示为深灰色。 原因: 已为用户界面禁用Gamma校正。…

Vue.js 中 v-if 的使用及其原理

在 Vue.js 的开发过程中,条件渲染是一项极为常见的需求。v-if指令作为 Vue.js 实现条件渲染的关键手段,能够根据表达式的真假来决定是否渲染某一块 DOM 元素。它在优化页面展示逻辑、提升用户体验等方面发挥着重要作用。接下来,我们就深入探讨…

Verilog:LED呼吸灯

模块接口说明 信号方向描述clk输入系统时钟(100MHz,周期10ns)rst_n输入低电平有效的异步复位信号led_en输入总使能信号(1开启呼吸灯,0关闭)speed_en输入呼吸速度调节使能信号speed[2:0]输入呼吸速度分级&a…

我的计算机网络(总览篇)

总览--网络协议的角度 在一个庞大的网络中,该从哪里去了解呢?我先细细的讲一下我们访问一个网站的全部流程,当我们的电脑连上网络的时候,就会启动DHCP协议,来进行IP地址,MAC地址,DNS地址的分配…

开源的PMPI库实现及示例代码

开源的PMPI库实现及示例代码 PMPI (Profiling MPI) 是MPI标准中定义的接口,允许开发者通过拦截MPI调用进行性能测量和调试。以下是几个常用的开源PMPI库实现: 1. MPICH的PMPI接口 MPICH本身提供了PMPI接口,可以直接使用。 2. OpenMPI的PM…

Unity 基于navMesh的怪物追踪惯性系统

今天做项目适合 策划想要实现一个在现有的怪物追踪系统上实现怪物拥有惯性功能 以下是解决方案分享: 怪物基类代码: ​ using UnityEngine; using UnityEngine.AI;[RequireComponent(typeof(NavMeshAgent))] [RequireComponent(typeof(AudioSource))] …

PyTorch进阶学习笔记[长期更新]

第一章 PyTorch简介和安装 PyTorch是一个很强大的深度学习库,在学术中使用占比很大。 我这里是Mac系统的安装,相比起教程中的win/linux安装感觉还是简单不少(之前就已经安好啦),有需要指导的小伙伴可以评论。 第二章…

【区块链安全 | 第三十八篇】合约审计之获取私有数据(二)

文章目录 前言漏洞代码代码审计攻击步骤修复/开发建议审计思路前言 在【区块链安全 | 第三十七篇】合约审计之获取私有数据(一)中,介绍了私有数据、访问私有数据实例、Solidity 中的数据存储方式等知识,本文通过分析具体合约代码进行案例分析。 漏洞代码 // SPDX-Licens…

《微服务与事件驱动架构》读书分享

《微服务与事件驱动架构》读书分享 Building Event-Driver Microservices 英文原版由 OReilly Media, Inc. 出版,2020 作者:[加] 亚当 • 贝勒马尔 译者:温正东 作者简介: 这本书由亚当贝勒马尔(Adam Bellemare…

小刚说C语言刷题——第22讲 二维数组

昨天我们讲了一维数组,今天我们来讲二维数组。 1.定义 二维数组是指在数组名后跟两个方括号的数组。 2.语法格式 数据类型 数组名[下标][下标] 例如:int a[5][9];//表示5行9列的数组 3.访问二维数组元素 格式:数组名[行坐标][列坐标]…

Vue 大文件分片上传组件实现解析

Vue 大文件分片上传组件实现解析 一、功能概述 1.1本组件基于 Vue Element UI 实现,主要功能特点: 大文件分片上传:支持 2MB 分片切割上传实时进度显示:可视化展示每个文件上传进度智能格式校验:支持文件类型、大小…