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.pswp.cn/diannao/78820.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/78820.shtml
英文地址,請注明出處:http://en.pswp.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 分片切割上傳實時進度顯示:可視化展示每個文件上傳進度智能格式校驗:支持文件類型、大小…