Ubantu14编译7.1.2Android系统

Ubantu14 编译7.1.2Android系统

Ubantu安装Git

git :使用repo工具的时候会用到git,git并没有在Ubuntu中预装,所以需要事先安装git,使用命令:

sudo apt-get install git -y

安装完成之后,需要对git进行配置,设置git的电子邮件和用户名。

git config --global user.email "zhangshuai9511@163.com"
git config --global user.name "zhangs"

Ubantu18 安装编译所需环境

sudo apt-get install git-core -y
sudo apt-get install gnupg -y
sudo apt-get install flex -y
sudo apt-get install bison -y
sudo apt-get install build-essential -y
sudo apt-get install zip -y
sudo apt-get install curl -y
sudo apt-get install zlib1g-dev -y
sudo apt-get install gcc-multilib -y
sudo apt-get install g++-multilib -y
sudo apt-get install libc6-dev-i386 -y
sudo apt-get install libncurses5-dev -y
sudo apt-get install lib32ncurses5-dev -y
sudo apt-get install x11proto-core-dev -y
sudo apt-get install libx11-dev -y
sudo apt-get install lib32z1-dev -y
sudo apt-get install libgl1-mesa-dev -y
sudo apt-get install libxml2-utils -y
sudo apt-get install xsltproc -y
sudo apt-get install unzip -y
sudo apt-get install fontconfig -y

若上述安装出现异常,使用aptitude解决依赖等问题

sudo apt-get install aptitude

解决依赖示例

sudo aptitude install libgl1-mesa-dev
......
输入. 切换解决方案

Ubantu14 安装编译环境

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5-dev lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

sudo apt-get install git-core -y
sudo apt-get install gnupg -y
sudo apt-get install flex -y
sudo apt-get install bison -y
sudo apt-get install gperf -y
sudo apt-get install build-essential -y
sudo apt-get install zip -y
sudo apt-get install curl -y
sudo apt-get install zlib1g-dev -y
sudo apt-get install gcc-multilib -y
sudo apt-get install g++-multilib -y
sudo apt-get install libc6-dev-i386 -y
sudo apt-get install libncurses5-dev -y
sudo apt-get install lib32ncurses5-dev -y
sudo apt-get install x11proto-core-dev -y
sudo apt-get install libx11-dev -y
sudo apt-get install lib32z-dev -y
sudo apt-get install libgl1-mesa-dev -y
sudo apt-get install libxml2-utils -y
sudo apt-get install xsltproc -y
sudo apt-get install unzip -y


sudo aptitude install build-essential
sudo aptitude install zlib1g-dev
sudo aptitude install gcc-multilib
sudo aptitude install g++-multilib
sudo aptitude install libgl1-mesa-dev




Ubantu18 安装OpenJDK1.8

1.由于ubuntu 18.04自带openjdk,卸载自身openjdk

sudo apt-get remove openjdk*

2.安装jdk 1.8

sudo apt-get update
sudo apt-get install openjdk-8-jdk

3.查看java和javac版本,查看是否安装成功

java -version
javac -version

Ubantu安装OpenJDK1.8

  1. Ctrl+Alt+T 打开终端执行以下命令:

sudo add-apt-repository ppa:openjdk-r/ppa

输入你的sudo密码继续
2. 升级系统资源包并安装openjdk1.8:

sudo apt-get update

sudo apt-get install openjdk-8-jdk
3. 在多个JDK版本中切换JDK

sudo update-alternatives –config java

选择你需要的JDK版本:

设置一个默认Java:

sudo update-alternatives –config javac
4. 检查JDK版本:

java -version

输出以下信息表示成功

openjdk version “1.8.0_01-internal”
OpenJDK Runtime Environment (build 1.8.0_01-internal-b04)
OpenJDK 64-Bit Server VM (build 25.40-b08, mixed mode)
5.设置jdk环境变量

这里采用全局设置方法,它是是所有用户的共用的环境变量

$sudo gedit ~/.bashrc
添加以下代码:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:JAVAHOME/lib:

{JRE_HOME}/lib

export PATH=JAVAHOME/bin:
PATH
————————————————
版权声明:本文为CSDN博主「King-Guo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/the_sunshine_of_king/article/details/58202986

Ubantu安装curl

官方一点的说法就是开源的文件传输工具。类似迅雷,或者wget(这个没听说过?)。其实这个工具可以用wget来代替。。。。Ubuntu在默认的情况下是不安装curl的,所以我们需要自己动手安装:

sudo apt-get install curl -y

Ubantu安装Repo

参考链接
Repo 是一款工具,可让您在 Android 环境中更轻松地使用 Git。
要安装 Repo,请执行以下操作:

  1. 确保主目录下有一个 bin/ 目录,并且该目录包含在路径中:
mkdir ~/bin
PATH=~/bin:$PATH
  1. 下载 Repo 工具,并确保它可执行:

清华源镜像版

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod a+x ~/bin/repo

初始化 Repo 客户端

安装 Repo 后,设置您的客户端以访问 Android 源代码代码库:

创建一个空目录来存放您的工作文件。如果您使用的是 MacOS,必须在区分大小写的文件系统中创建该目录。为其指定一个您喜欢的任意名称:

mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY

运行 repo init 以获取最新版本的 Repo 及其最近的所有错误更正内容。您必须为清单指定一个网址,该网址用于指定 Android 源代码中包含的各个代码库将位于工作目录中的什么位置。

清华源镜像版

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest

要对“master”以外的分支进行校验,请使用 -b 来指定相应分支。要查看分支列表,请参阅源代码标记和版本。

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-4.0.1_r1

初始化成功后,系统将显示一条消息,告诉您 Repo 已在工作目录中完成初始化。客户端目录中现在应包含一个 .repo 目录,清单等文件将保存在该目录下。

使用清华源 镜像站 获取安卓系统源码

参考链接
首次下载代码时 需使用初始化包进行 https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包
tar xf aosp-latest.tar
cd AOSP   # 解压得到的 AOSP 工程目录
# 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录
# 运行 repo init 以获取最新版本的 Repo 及其最近的所有错误更正内容。您必须为清单指定一个网址,该网址用于指定 Android 源代码中包含的各个代码库将位于工作目录中的什么位置。 
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.1_r78 # 可选命令,指定版本,如果未指定,则使用最新的版本
repo sync # 正常同步一遍即可得到完整目录
# 或 repo sync -l 仅checkout代码(这种方式比较快,不会fetch最新的远程仓库,也就是如果我下载的是20190101.tar,则最新的修改就到这天,之后至今天的修改,不同步.)
# 如果不加 -l 选项, 则更新本地仓库为最新上百G了.

不管repo sync结果如何 最好走一遍
https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar.md5
# 如果repo sync操作出现源代码被改动提示可以用以下命令修复
repo sync -d                         # 将所有git 仓库的HEAD重置为manifest文件的指定版本
repo forall -c 'git reset --hard'    # Remove all working directory (and staged) changes.
repo forall -c 'git clean -f -d'     # Clean untracked files

参考链接
参考链接
版本号列表

切换AOSP分支

# 进入Repo目录,查看所有分支
cd .repo/manifests
git branch -a

# 如果像我一样使用repo sync -l选项同步, 会发现分支最新只到android-9.0

# 查看分支列表
cd .repo/manifests
git branch -av
# 将repo配置重新指定为相关版本
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ -b android-6.0.1_r78
# 切换分支
repo init -b android-6.0.1_r78
repo init -b android-7.1.2_r28

# rm -rf有个特性不会删除隐藏目录,切换版本操作也就是只需要保留.repo目录
rm -rf *

#先同步一遍
repo sync
# 再只检出即可
repo sync -c -l -j4
-c 或者--current-branch表示只拉取当前分支代码,坑爹啊,我在init指定了分支,同步的时候,你却悄悄给我拉些没用的。
--no-tags 不拉取tags,tag虽然不大,但架不住多
--no-clone-bundle 不使用clone.bundle,clone.bundle是git bundle一样的打包文件,使用bundle文件可以做cdn下载的分流,cdn听上去不错,但是如果cdn到google的服务器,或者clone.bundle本来就占空间,不是很划算,所以不使用clone.bundle
-f 如果sync失败,继续同步
--force-sync 如果文件目录有差异,强制覆盖掉
# repo sync -l 仅checkout代码

# 查看分支列表
cd .repo/manifests
git branch -av
 
# 其中分支代码也可以在这里查
https://blog.csdn.net/bt_leo/article/details/78706608

Ubantu14 安装Python3.6

1、下载Python3

wget http://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz

wget会将文件下载到当前目录下,所以下载前选好目录。

2、下载完成后,解压

tar -xvzf Python-3.6.4.tgz

3、解压完成后,切换到Python3文件夹中

cd ./Python-3.6.4

4、分别执行

./configure --with-ssl
 
make
 
sudo make install

5、输入Python3验证

Python3
————————————————
版权声明:本文为CSDN博主「yue_xingyu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kouyi5627/article/details/88319129

准备环境

https://blog.csdn.net/qq_39153421/article/details/104237072
https://blog.csdn.net/fuchaosz/article/details/51487585

构建安卓系统

准备驱动
获取到vender文件源码后 切记将文件夹赋权

开始构建

sudo make clean

导入编译环境

source /opt/aosp/build/envsetup.sh

设置编译选项

lunch

编译7.1.2系统前

export JACK_JAR=./out/host/linux-x86/framework/jack.jar
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
./prebuilts/sdk/tools/jack-admin kill-server 
./prebuilts/sdk/tools/jack-admin start-server 
# 开干,-j参数为编译线程数,幸运的话睡一觉起来就OK啦。
sudo make -j8
 
# 一键设置环境变量(该命令由build/envsetup.sh导入)
set_stuff_for_environment
 
# 进入安卓源码编译生成目录
cd out/target/product/generic
 
# 启动模拟器
emulator

cd ~/android/out/target/product/generic

emulator -system system.img -data userdata.img -ramdisk ramdisk.img
几个有用的命令
make -k 继续编译
m  编译完整的Android源代码
mm  此命令必须进入指定的工程的目录进行编译
mmm  可以在任何一级目录编译任意指定的工程

刷入真机

adb reboot bootloader

刷入所有镜像

fastboot flashall -w

或逐个刷入镜像

cd /opt/aosp/out/target/product/angler
fastboot flash boot boot.img
fastboot flash recovery recovery.img
fastboot flash system system.img
fastboot flash userdata userdata.img
fastboot flash cache cache.img
fastboot flash vendor vendor.img

刷好之后重启

fastboot reboot

参考链接精品
修改wifi连接提示无任何互联网

编译单个模块

cd /opt/aosp/
// 下面这两步每次打开终端都需要
soruce build/envsetup.sh  
lunch aosp_sailfish-userdebug

// 仅编译framework模块
mmm framework
// 重新生成system.img镜像
make snod
4.如果要单编某个模块,就是用如下命令来编译需要的模块。
   编译bootloader,
      make bootloader
   编译kernel生成boot.img,
      make bootimage
   编译system生成system.img,
      make systemimage
   编译userdata生成userdata.img,
      make userdataimage
   编译recovery生成recovery.img,
      make recoveryimage

然后刷入手机,跟之前步骤一样。
adb reboot bootloader
fastboot flashall -w

AOSP导入AS,打开LOG,单编
AOSP开发含视频
参考链接1
参考链接2

Framework常用工具及LOG调试方法

修改开机动画

参考链接1
参考链接2

修改开机动画的方式有两种:
1、蒙版图片替换:
替换 frameworks/base/core/res/assets/images 目录下的两张图片文件,android-logo-mask.png 和 android-logo-shine.png。
android-logo-mask.png 是镂空蒙版图片,android-logo-shine.png是镂空蒙版后面的闪光图片,两张图片通过叠加移动达到动画效果。

(1)用 Photoshop 制作一张同样分辨率和格式的图片,要求背景为黑色,字体中间镂空,命名为 android-logo-mask.png。制作图片方法请找度娘。

(2)将制作好的图片android-logo-mask.png 复制到 frameworks/base/core/res/assets/images 目录下,替换掉以前的图片。

cp -raf android-logo-mask.png frameworks/base/core/res/assets/images/
// 防止源码不编译图片,需更新图片时间戳
touch frameworks/base/core/res/assets/images/android-logo-mask.png

(3)重新编译模块

source build/envsetup.sh
lunch aosp_angler-eng
mmm frameworks/base/core/res/

(4)生成新的 system.img

make snod

(5)重新烧录并查看效果。

2、逐帧动画替换
创建 bootanimation.zip 文件,该压缩包文件里存放有逐帧动画和控制脚本,通过连续切换显示图片达到动画的效果。
在这里插入图片描述(1)将第一部分图片按播放顺序命名好,保存在 part0 的文件夹中,例如:001.jpg、002.jpg(有的资料和书籍上强调必须为png格式图片,但是我在rk3288上测试,jpg格式也可以正常使用)
(2)将第二部分图片按播放顺序命名好,保存在 part1 的文件夹中,例如:001.jpg、002.jpg
(3)创建名称为 desc.txt 的文档,内容如下:

# 1440 wide, 2560 tall 10frames per second
1440 2560 10

# p means we're defining a part
# first number is repeat count, 0 means infinite
# second number is delay in frames before performing the next part
# so if you are playing 15 frames a second 15 would be... one second
# string defines the directory to load files from
# files will be loaded in order but names don't matter

# s defines a sound for a part
# sounds will be loaded from /system/media
# oggs with loop points will loop automatically
# only one sound will play at a time
# timing is driven by the part, not the sounds
# if you want no sound, leave blank


# droid
p 1 7 01_droid

# loop
p 0 0 02_nrts

在这里插入图片描述每秒显示帧数:每秒显示的图片数量。
间隔时间:该阶段结束后间隔多久进入下一阶段显示,单位为每张图片的显示时间。

(4)选中01_droid、02_nrts和desc.txt进入自定义压缩,压缩文件格式为 zip,压缩方式为存储,命名为 bootanimation.zip。

(5)将压缩包拷贝到 device/*/$(TARGET_DEVICE)目录下。例如:nexus 6P对应的目录在 device/huawei/angler/bootanimation.zip

(6)修改 device/*/ ( T A R G E T D E V I C E ) / (TARGET_DEVICE)/ (TARGETDEVICE)/(TARGET_DEVICE).mk 文件。例如:nexus 6P是 device/huawei/angler/aosp_angler.mk

// 在文件中添加,不使用逐帧动画时,用 # 屏蔽此行即可
PRODUCT_COPY_FILES +=    device/rockchip/rk3399/rk3399_64/ddr_config.xml:system/etc/ddr_config.xml \
               device/rockchip/rk3288/bootanimation.zip:system/media/bootanimation.zip //这行是追加的内容
touch device/huawei/angler/bootanimation.zip
touch device/huawei/angler/aosp_angler.mk

(7)重新编译生成 system.img

source build/envsetup.sh
lunch rk3288-eng
make snod
或者 make systemimage

(8)重新烧录并查看效果。

adb reboot bootloader
fastboot flashall -w

逐帧动画的优先级比蒙版动画的优先级高,当使用了逐帧动画时,蒙版动画就不播放了。

https://blog.csdn.net/qq_33166886/article/details/84852678?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-3.essearch_pc_relevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-3.essearch_pc_relevant

修改品牌信息

另外,我们可以在aosp/build/tools/buildinfo.sh vendor_buildinfo.sh 这两个文件中直接修改手机品牌的名字,厂家等信息.
https://blog.csdn.net/weixin_29375669/article/details/117580290

修改内核Logo

官方参考链接1
官方参考链接2
参考链接
参考链接2

下载内核源码

下载源码
在aosp源码目录执行git同步内核源码:

//同步源码 谷歌镜像
git clone https://android.googlesource.com/kernel/msm
//同步源码 清华镜像
#git clone https://aosp.tuna.tsinghua.edu.cn/android/kernel/msm.git
cd msm //进入目录

查看版本列表建议利用grep过滤自己需要内容

git branch -a | grep angler

这里有很多版本选择,根据手机当前使用的内核版本 在设置中查看是3.10.73-g309d642或者adb shell进入手机执行cat /proc/version查看

版本同步分支检出代码:

cd msm
git checkout 3.10.73-g309d642
//或者
git checkout -b android-msm-angler-3.10-oreo-r6 origin/android-msm-angler-3.10-oreo-r6

修改内核Logo

编译内核->镜像->刷入

// 将工具集加入到路径中
export PATH=$PATH:/opt/aosp/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin
// 设置目标架构
export ARCH=arm64
// 设置编联合编译方式,
export CROSS_COMPILE=aarch64-linux-android-
// 编译 angler_defconfig 此关键字要到官网查询
make angler_defconfig
make

编译成功后内核镜像就存放在./arch/arm64/boot/目录下,Image.gz-dtb文件就是内核镜像。

设置系统编译时使用的内核,有两种方式:
1.将/opt/aosp/msm/arch/arm64/boot/Image.gz-dtb 文件复制到 /opt/aosp/device/huawei/angler-kernel/ 目录。(注意查看angler-kernel目录下原文件的权限)
2.在使用make bootimage或者编译启动镜像的任何其他make命令行时,添加TARGET_PREBUILT_KERNEL 变量:

#例如:
#进入Android 源码目录
cd /opt/asop/
#设置刚刚编译完成的 Image.gz-dtb 文件路径变量
export TARGET_PREBUILT_KERNEL=/opt/aosp/msm/arch/arm64/boot/Image.gz-dtb
source build/envsetup.sh
lunch aosp_angler-eng
make bootimage

编译完成,文件输出在out/target/product/angler/boot.img

#手机进入fastboot模式
adb reboot bootloader

fastboot flash boot boot.img
fastboot reboot

Framework开发调试

参考链接1
参考链接2
参考链接3
参考链接4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值