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
- 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
————————————————
版权声明:本文为优快云博主「King-Guo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/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,请执行以下操作:
- 确保主目录下有一个 bin/ 目录,并且该目录包含在路径中:
mkdir ~/bin
PATH=~/bin:$PATH
- 下载 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
————————————————
版权声明:本文为优快云博主「yue_xingyu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/kouyi5627/article/details/88319129
准备环境
https://blog.youkuaiyun.com/qq_39153421/article/details/104237072
https://blog.youkuaiyun.com/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
编译单个模块
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
修改开机动画
修改开机动画的方式有两种:
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.youkuaiyun.com/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.youkuaiyun.com/weixin_29375669/article/details/117580290
修改内核Logo
下载内核源码
下载源码
在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