Windows10下载Android 源码 AOSP单个模块代码(含WSL安装步骤)

35 篇文章 0 订阅

AOSP(Android Open Source Project)安卓开源项目

cn可访问AOSP官网:https://source.android.google.cn/

由于网络限制,只能用国内镜像同步AOSP的代码。原本打算下载部分模块代码(为了方便阅读),但是github上AOSP缺少部分模块的代码。

Github上不完整的源代码:https://github.com/aosp-mirror

途径:
  1. 通过repo的init,获取repo目录
  2. 查看manifest文件夹下default.xml获取git仓库地址,选择性下载部分模块代码
一些问题及处理选择:

repo必须在Linux/mac下执行,那么可以选择安装常用虚拟机或者是WSL。这里选择采用WSL,在形式上感觉比用VM等工具安装虚拟机流程简单

WSL(Windows Subsystem for Linux,适于Linux的windows子系统)

计划步骤:
  1. 安装WSL
  2. 在wsl中repo init
  3. 获取git地址后,在windows下clone代码

一、源代码/镜像链接

Google

Google官方AOSP源代码(不可访问):https://source.android.com/
AOSP官方文档 :https://source.android.google.cn/

Tsinghua

清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/
大学镜像汇总(大连东软信息学院提供)http://mirrors.neusoft.edu.cn/

二、安装WSL

官方教程:适用于 Linux 的 Windows 子系统安装指南 (Windows
10)https://docs.microsoft.com/zh-cn/windows/wsl/install-win10

(一)安装与分发步骤

使用PowerShell(admin),采用WSL2

  1. 启用适用于Linux的Windows子系统,才能在Window上安装Linux分发
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    
  2. 确定WSL2所需的windows版本本机是否符合,否则不能使用WSL2
    在这里插入图片描述
  3. 启用虚拟机功能
    PS:安装WSL2之前,必须启用“虚拟机平台”可选功能
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    
  • 以上两步骤的执行结果,需要重启
    在这里插入图片描述
  1. 下载并安装Linux内核更新包
  1. 将WSL2设为默认版本
    wsl --set-default-version 2
    
  2. 微软商店安装所选的 Linux 分发
  • 虽然没有写版本,但这里默认下载了最新版Ubuntu 20.04.1 LTS
    在这里插入图片描述
  1. 设置新分发,设置用户名和密码
    在这里插入图片描述

(二)定位WSL位置

以下的查询方式,感觉只有进行了操作才能在“网络”找到Ubuntu虚拟机,否则目录没有东西(应该是没有初始化完?)。然后一种简单粗暴的办法就是新建文件然后全文搜索文件能找到地址。

win+r或者文件资源管理器输入\\wsl$

在这里插入图片描述

将WSL添加到网络位置方便访问

电脑内任意右键→“添加一个网络位置”

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
结果:
在这里插入图片描述

迁移WSL到非系统盘(工具 LxRunOffline)
# 使用 LxRunOffline.exe move 命令进行迁移,需要稍等一段时间后移动完成,如下。
# -n 指定你要迁移的系统名;
# -d 指定你新系统的迁移路径。
.\LxRunOffline.exe move -n Ubuntu-16.04 -d D:\VirtualMachine

在这里插入图片描述

# 使用LxRunOffline.exe get-dir查询子系统存储路径,如下:
.\LxRunOffline.exe get-dir -n Ubuntu-16.04

在这里插入图片描述

三、源代码下载

在安装完成的WSL中执行repo init

(一)安装repo并初始化仓库

参考:
清华AOSP:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

  • 下载repo工具

    mkdir ~/bin
    PATH=~/bin:$PATH
    # google的repo应该连接不上,建议替换(后文有问题场景)
    # https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
    curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    chmod a+x ~/bin/repo
    
    问题1:python环境配置找不到

    (1)shell原文:

    $ mkdir code
    $ cd code/
    ~/code$ repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest
    /usr/bin/env: ‘python’: No such file or directory
    
    ~/code$ python
    
    Command 'python' not found, did you mean:
    
      command 'python3' from deb python3
      command 'python' from deb python-is-python3
    

    (2)原因:找不到python命令。

    /usr/bin/env: ‘python’: No such file or directory

    • 查看应用列表系统安装了python3和python3.8,但是没有python
    # 查看linux已安装应用列表
    username@COMPUTERNAME:~$ apt list --installed
    Listing... Done
    ....(省略)
    python3.8/focal-updates,focal-security,now 3.8.2-1ubuntu1.2 amd64 [installed,automatic]
    python3/focal,now 3.8.2-0ubuntu2 amd64 [installed,automatic]
    ....
    

    (3)解决:设置软连接python指向python3

    username@COMPUTERNAME:~$ sudo ln -s /usr/bin/python3 /usr/bin/python
    
  • 初始化

    # 建立并进入工作目录(上一步的操作)
    mkdir code
    cd code
    # 初始化仓库
    repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest
    
    问题2:repo镜像请求失败

    (1)原文:

    username@COMPUTERNAME:~$ cd code/
    ~/code$ repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/A
    Downloading Repo source from https://gerrit.googlesource.com/git-repo
    fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
    fatal: error [Errno 101] Network is unreachable
    fatal: cloning the git-repo repository failed, will remove '.repo/repo'
    OSP/platform/manifest
    Downloading Repo source from https://gerrit.googlesource.com/git-repo
    
    fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
    fatal: error [Errno 101] Network is unreachable
    fatal: cloning the git-repo repository failed, will remove '.repo/repo'
    

    (2)原因:无法连接到 gerrit.googlesource.com

    fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle

    (3)解决:rm原本的repo,下载清华repo镜像

    # 下载
    # 为了方便可以将其拷贝到你的PATH里
    # (目前自己的PATH=~/bin:$PATH,所以repo也放在了bin目录下)
    curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
    chmod +x repo
    
    # 更新
    # repo的运行过程中会尝试访问官方的git源更新自己,
    # 使用tuna的镜像源进行更新,可以将如下内容复制到~/.bashrc里,并重启终端
    export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
    

    (4)再次运行,注意先设置username和email,否则报错,但是报错后提示在设置重新执行命令也能直接成功
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

(二)查看git仓库地址

  • repo/manifest/default.xml查看repo管理的分支名称

    \wsl$\Ubuntu\home\username\code.repo\manifests

    在这里插入图片描述

  • Dialer模块:https://aosp.tuna.tsinghua.edu.cn/platform/packages/apps/Dialer

  • Settings模块:https://aosp.tuna.tsinghua.edu.cn/platform/packages/apps/Settings

  1. 在下载的代码目录下.git/config里查看本分支地址
    在这里插入图片描述
git clone https://aosp.tuna.tsinghua.edu.cn/platform/frameworks/opt/telephony
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android AOSP 源码的 device 目录下添加自定义的 framework 模块的步骤如下: 1. 创建新的模块目录: 在 device/{vendor_name}/{device_name}/ 目录下创建一个新的子目录,用于存放自定义的 framework 模块。例如,可以创建一个名为 myframework 的目录: ``` mkdir -p device/{vendor_name}/{device_name}/myframework ``` 2. 添加 Android.mk 文件: 在 myframework 目录下创建一个名为 Android.mk 的文件,用于定义自定义的 framework 模块。例如,可以添加以下代码: ``` LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := myframework LOCAL_MODULE_TAGS := optional LOCAL_MODULE_CLASS := JAVA_LIBRARIES LOCAL_SRC_FILES := MyFramework.java LOCAL_SDK_VERSION := current LOCAL_JAVA_LIBRARIES := core-libart LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 LOCAL_STATIC_ANDROID_LIBRARIES := libsqlite include $(BUILD_JAVA_LIBRARY) ``` 其中: - LOCAL_MODULE 定义了模块名称; - LOCAL_MODULE_TAGS 定义了模块的标签,optional 表示该模块是可选的; - LOCAL_MODULE_CLASS 定义了模块的类型,JAVA_LIBRARIES 表示该模块是一个 Java 库; - LOCAL_SRC_FILES 定义了该模块中包的 Java 源代码文件; - LOCAL_JAVA_LIBRARIES 定义了该模块所依赖的 Java 库; - LOCAL_STATIC_JAVA_LIBRARIES 和 LOCAL_STATIC_ANDROID_LIBRARIES 定义了该模块所依赖的静态库和 Android 库。 3. 添加 Android.bp 文件: 在 myframework 目录下创建一个名为 Android.bp 的文件,用于定义自定义的 framework 模块。例如,可以添加以下代码: ``` java_library { name: "myframework", srcs: ["MyFramework.java"], static_libs: [ "core-libart", "android-support-v4", ], shared_libs: [ "libsqlite", ], sdk_version: "current", installable: true, } ``` 其中: - name 定义了模块名称; - srcs 定义了该模块中包的 Java 源代码文件; - static_libs 定义了该模块所依赖的静态库; - shared_libs 定义了该模块所依赖的共享库; - sdk_version 定义了该模块所需的 Android SDK 版本; - installable 定义了该模块是否可安装。 4. 编译 Android 系统: 在编译 Android 系统之前,需要先执行以下命令: ``` source build/envsetup.sh ``` 然后编译 Android 系统: ``` lunch {device_name}-{build_type} make -j{n} ``` 其中 {device_name} 是设备名称,{build_type} 是编译类型(如 userdebug),{n} 是编译线程数。 编译完成后,就可以在 Android 系统中使用自定义的 framework 模块了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值