1、安装Repo
确保主目录下有一个 bin/ 目录,并且该目录包含在路径中:
mkdir ~/bin
PATH=~/bin:$PATH
下载安装curl:
https://blog.csdn.net/qq_31458537/article/details/87914443
下载 Repo 工具,并确保它可执行:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
下载安装git:
https://blog.csdn.net/qq_42690368/article/details/82319238
git config --global user.name "zhangjianliang"
git config --global user.email "[email protected]"
根据用户名及邮箱生成密钥(该密钥会用在该账号中):ssh-keygen -t rsa -C "[email protected]"
/home/admin/.ssh/id_rsa
下载android源码:
repo init -u https://android.googlesource.com/platform/manifest -b android-7.1.2_r28
搭建编译环境:
https://source.android.com/source/initializing
解压驱动文件,得到两个可执行文件.
把可执行文件移到源码根目录, 执行可执行文件
单独模块编译(假设编译 系统 Setting):
source build/envsetup.sh
mmm packages/apps/Settings/
单独模块编译后刷入系统:
取消校验
adb disable-verity
重启手机
刷入编译后的模块
source build/envsetup.sh
lunch 21
mmm packages/apps/Settings
adb root
adb remount
adb shell rm -rf /system/priv-app/Settings
adb shell am start com.android.settings/.Settings
adb push out/target/product/bullhead/system/priv-app/Settings /system/priv-app/
adb shell am start com.android.settings/.Settings
编译完的安装:把编译完的包下载到本地,执行以下命令
adb reboot bootloader
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
全编译
source build/envsetup.sh
lunch 21
export LC_ALL=C
m -j8
#在后台运行
#nohup m -j8
单独编译模块
生成可导入 Android Studio 调试的项目:
//准备编译命令
source build/envsetup.sh
//单独编译 idegen 模块
mmm development/tools/idegen/
//生成 Android Studio 的配置文件
development/tools/idegen/idegen.sh
在源码根目录执行命令
sh development/tools/idegen/idegen.sh
会在源码根目录生成 android.ipr
最后导入源码根目录的 android.ipr
最终生成可导入 android studio 的项目
重新编译源码时,清除缓存:
1、在源码目录的根目录下,make clobber 删除之前编译生成的所有文件,方便重新编译
2、再退回到根目录,执行sourcebuild/envsetup.sh,lunch,make.
擦除刷入的旧模块
fastboot erase system
fastboot erase userdata
fastboot erase cache
...
添加系统API或者修改@hide的API后,需要执行
make update-api,然后再make
系统编译完之后,执行命令生成ota差分包
差分升级包,减少系统升级流量损耗
source build/envsetup.sh
lunch 21
make otapackage
生成文件的目录:out/target/product/msm8974/obj/PACKAGING/target_files_intermediates/
差分包的制作
./build/tools/releasetools/ota_from_target_files -i <差分包名>。
生成系统签名、对系统ota包签名、对系统应用签名
1.系统如何制作独立的签名
build/target/product/security ,有个readme,里面有个链接 ,有批量生成key的方法,可以生成pk8 与 x509文件,还有叫你系统怎么用这个签名
遇到了生成的时候报了个错,导致x509没有生成,原因是填写的参数 cn地区之类的长度超过两位导致
2.生成签名后,把releaseKey.xxx 重命名为 testkey.xxx,把所有签名移到 /build/target/product/security 覆盖系统默认签名
3.配置环境
source build/envsetup.sh
lunch aosp_bullhead-userdebug
4.生成系统编译文件
make otapackage
生成文件的目录 out/target/product/msm8974/obj/PACKAGING/target_files_intermediates/
5.差分包的制作
build/tools/releasetools/ota_from_target_files -i <差分包名>。
使用生成的系统签名
系统应用常驻后台
application 配置 android:persistent,验证后台常驻效果
使用后台打印日志验证
系统应用、系统签名放置
需要注意的是,如果app使用的 so 是32位,系统是64位,需要在 Android.mk 中配置 LOCAL_MULTILIB := 32
查看系统位数:adb shell getprop ro.product.cpu.abi