LEEYANGY

LEEYANGY 关注TA

拼搏百天,我要上湖工大!

LEEYANGY

LEEYANGY

关注TA

拼搏百天,我要上湖工大!

  •  Wuhan/HuBei
  • 学生
  • 写了322,476字

该文章投稿至Nemo社区   搞机综合  板块 复制链接


编译AOSP

发布于 2020/12/02 02:33 19,828浏览 4回复 7,340


---------------------------第陆次更新-------2021年--10月02日10:49------------------------------

Android 源码查看所有分支  并切换分支

cd .repo/manifests
git branch -a Beta:
repo init -b android-s-beta-5 Released: repo init -b android-12.0.0_r2




---------------------------------------------------------------------------

---------------------------第五次更新-------202?年--??月--??日??:??------------------------------

@github

        1.device tree  

        2.kernel tree 

        3.vendor tree

        twrp原生解密思路

        judyp-twrp

        how-to-repo   caf-aosp


---------------------------第四次更新-------2020年--12月--28日23:18------------------------------


---------------------------第三次更新-------2020年--12月--15日------------------------------

            拉取blob配置文件,首先我们同步完lineage源码后,进入到vendor/lineage/build/templates 这个目录,拷贝这两个extract-files.sh和setup-makefiles.sh这个两个sh文件到你适配的机型设备树中,打开这两个文件,对其文本进行一些小修改。

The contents of proprietary-files.txt is a list of blobs with optional comments (lines beginning with #). Each blob line is of the form:

vendor厂商配置:首先在手机system.img和vendor.img 中拉取所有文件,然后将其文件路径写入proprietary-files.txt中,然后由设备树中的extract-files.sh负责调用

,目前为了减轻一些工作量,会有两种样式 类似像htc u11(设备代号:ocean  ,设备树应该是htc/ocean)就没有将设备树柴分开成oceanmsm8998-common两个树,准确来说,安卓9之后貌似是为了减轻工作量,出现了(还是以htc u11举例子):htc/ocean && msm8998-common,这个以芯片命名的树则是一些公共的配置文件树,里面存放了同厂商&&同平台的配置文件,相应的evndor也是如此。 vendor tree的编写则由设备树这边完成,   在breakfast 设备代号之后,允行extract-files.sh,由extract-files去调用已经编写好的proprieatary-files,然后将其写入vendor tree中  ,至此就完成了vendor的编写,后续按需简精,使设备树变得更小。  日后会重组语言,写得有点小乱。



1.接下来就是ubuntu的环境搭建了

sudo apt-get update
sudo apt-get install curl
//repo需要用到python,不然会报错
sudo apt -get install python
sudo apt-get install vim
sudo apt-get install git

(Git装完以后 顺便配置Git信息 git config --global user.name "你的用户名"   && git config --global  user.email "你的油箱")

(例如 : git config --global user.name xiaoming git config --global user.email 123456789@qq.com )


2.安装安卓编译所需要安装包:(不推荐了)

sudo apt-get install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev

Ubuntu 16.04 及以上系统, 替换(怎么安装这玩意?请问问百度,多看/装几次就学会了):

libwxgtk2.8-dev → libwxgtk3.0-dev

关于jdk是否要安装,具体看你要编译的版本来定 由于谷歌在最新的安卓9和安卓10的aosp源码中已经自带了jdk了,所以我们不需要去安装jdk,但是你装了也没关系。

 为了简化过程,这里推荐直接使用OrangeFox提供的脚本,快速安装依赖

cd ~
sudo apt install git aria2 -y
git clone https://gitlab.com/OrangeFox/misc/scripts
cd scripts
sudo bash setup/android_build_env.sh
sudo bash setup/install_android_sdk.sh

依赖安装完成后(下面3,4,5步骤跳过),直接开始拉源码,进行测试环境是否正常

To initialize your local repository using the LineageOS trees, use a command like this:

repo init -u https://github.com/LineageOS/android.git -b lineage-20.0 --git-lfs

Then to sync up:

repo sync

 测试源码是否正常

source build/envsetup.sh
lunch lineage_tv_x86-userdebug

emulator

以上信息来源(https://wiki.lineageos.org/emulator)




以下内容适用安卓11以前

3.下载并解压SDK

     sdk中包含fastboot和adb
wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip && unzip platform-tools-latest-linux.zip -d ~

 

4.下载repo

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo && chmod a+x ~/bin/repo

~bin 和sdk添加环境变量

gedit ~/.profile

复制--粘贴?:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi

# add Android SDK platform tools to path
if [ -d "$HOME/platform-tools" ] ; then
PATH="$HOME/platform-tools:$PATH"
fi

保存--退出

使修改生效source ~/.profile

5.新建文件夹并进入:

mkdir LineageOS && cd LineageOS

初始化LineageOS

repo init --no-clone-bundle -u git://github.com/LineageOS/android.git -b lineage-17.1

or

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android.git -blineage-17.1


上述步骤执行完后使用vim进行修改配置文件:

vim  /WORKING_DIRECTORY/.repo/manifests/default.xml 
 (请参照清华大学镜像站修改)  按下i进行编辑   按下esc退出编辑   按下shift + : 输入wq  然后按下回车  保存退出 然后repo sync 等上一段时间,具体等多久看你网速咯。


6.拉取源码:

repo sync    

or

repo sync -c -j$(nproc --all) --force-sync --no-clone-bundle --no-tags


开始构建

  • 接下来分为三种情况:

    1. 1.有官方维护:

      brunch <设备代号>  即可。
    2. 2.无官方维护,但已有非官方源码:

      1. 去将编译需要用的源码(device,kernel,vendor)从 Git 托管代码站 Clone 到相应位置(一般是 <device/kernel/vendor>/设备厂商名/设备代号)。
      2. 使用 brunch <设备代号> 命令开始编译。
    3. 3.无官方维护,且无非官方源码,但是有其他自定义 ROM 的源码:

      1. 去将编译需要用的源码(device,kernel,vendor)从 Git 托管代码站 Clone 到相应位置(一般是 <device/kernel/vendor>/设备厂商名/设备代号)。
      2. 在此基础上作 ify(参考这里)
      3. 使用 brunch <设备代号> 命令开始编译。
      4. -----------------------------------------------------------------------------------------------
      5. 这里由于LG V40不属于Lineage官方维护,所以找到以下源码

        LG V40源码来自xda开发者 SGCMarkus

      6. git clone https://github.com/SGCMarkus/android_kernel_lge_sdm845.git kernel/lge/sdm845
        git clone https://github.com/SGCMarkus/android_device_lge_judypn.git device/lge/judypn
        git clone https://github.com/SGCMarkus/android_device_lge_sdm845-common.git device/lge/sdm845-common
        git clone https://github.com/SGCMarkus/proprietary_vendor_lge.git vendor/lge
    4. 通用提取vendor配置文件
    5.           给手机赋予root权限               
      adb shell su -c setenforce 0
      cd device/设备厂商名/设备代号
      ./extract-files.sh
      croot
      source build/envsetup.sh or . build/envsetup.sh
      breakfast 设备名


  • -----------------------------------------------------------------------------------------------------------
  • 编译完成
    编译完成后,你可以在 out/target/product/<设备代号> 下找到你编译出来的刷机包,刷入即可。


  • 编译twrp recovery:

    同步最小源码:

    repo init -u git://github.com/minimal-manifest-twrp/platform_manifest_twrp_omni.git -b twrp-9.0
    repo init --depth=1 -u git://github.com/minimal-manifest-twrp/platform_manifest_twrp_omni.git -b twrp-9.0 repo sync


    开始编译:

    为具有恢复分区的设备生成:

    cd <source-dir>; export ALLOW_MISSING_DEPENDENCIES=true; . build/envsetup.sh; lunch omni_<device>-eng; mka recoveryimage

    为没有恢复分区的设备生成:

    cd <source-dir>; export ALLOW_MISSING_DEPENDENCIES=true; . build/envsetup.sh; lunch omni_<device>-eng; mka bootimage



    高通内核msm-4.9



    -------------------------------------------------------------------------------------------
    同步caf-aosp代码,以sdm845为例:
    通过高通官网查询到最新tag为:LA.UM.9.3.r1-00700-sdm845.0.xml (Android 11)
    mkdir caf-aosp && cd caf-aosp
    git clone git://codeaurora.org/tools/repo.git
    vim repo/repo
    将       REPO_URL='git://android.git.kernel.org/tools/repo.git' 改成 REPO_URL='git://codeaurora.org/tools/repo.git'

    拉取代码:

    ./repo/repo init -u git://codeaurora.org/platform/manifest.git -b release -m LA.UM.9.3.r1-00700-sdm845.0.xml --repo-url=git://codeaurora.org/tools/repo.git --repo-branch=caf-stable

    ./repo/repo sync


    ------------------------------------------------------------------------------------


    ------------------------第一次更新2020年--12月---2日--02:33-------------
    点赞(2)
    点了个评