Jimmy Chen

A Programmer

(原创)续-使用AOSP源码为Google Pixle编译系统镜像

编译user版本的镜像

  在上一篇博客中,我们使用的是userdebug版本编译,至于user、userdebug和eng之间的区别可以看下面来自AOSP官网的图片

《(原创)续-使用AOSP源码为Google Pixle编译系统镜像》

《(原创)续-使用AOSP源码为Google Pixle编译系统镜像》

所以看需求,如果需要root权限就继续用userdebug版本好了,这一步就不用做,直接看下一步的更改签名,如果想稳定和性能优先可以按照下面的步骤来编译user版本

  • 打开device/google/marlin/vendorsetup.sh文件
  • 最下面添加一行add_lunch_combo aosp_sailfish-user
  • 在源码根目录执行source build/envsetup.sh
  • 然后执行lunch,选择刚刚添加进去的aosp_sailfish-user选项
  • 最后执行make -j4 2>&1 | tee build.log就行

按照上面编译完之后,使用fastboot烧写镜像即可,具体烧写步骤可以参考上一篇博客

替换test key

  在这之前,我们使用给系统签名的key使用的都是google提供的test key。因为Android是开源的,任何人都可以获得这个key,如果我们不更换这个key,一些恶意软件就可以使用这个key进行签名,从而获得系统权限,对其他应用进行破换或者读取用户的敏感数据。

生成自己的release key

  要生成自己的key可以依次执行下面的语句:

  • 首先执行subject='/C=CN/ST=GuangDong/L=ShenZhen/O=None/OU=None/CN=jimmy/emailAddress=jimmychen@blog4jimmy.com'语句
  • 然后创建存储key的文件夹mkdir ~/.android-certs
  • 最后生成key, for x in releasekey platform shared media; do ./development/tools/make_key ~/.android-certs/$x "$subject"; done,在需要输入密码的时候直接按回车就好

上面的第一步中对应编号的意思为

C ---> Country Name (2 letter code)
ST ---> State or Province Name (full name)
L ---> Locality Name (eg, city)
O ---> Organization Name (eg, company)
OU ---> Organizational Unit Name (eg, section)
CN ---> Common Name (eg, your name or your server’s hostname)
emailAddress ---> Contact email address

生成release img

  • 首先执行 make dist -j4 2>&1 | tee dist.log
  • 然后 ./build/tools/releasetools/sign_target_files_apks -o -d ~/.android-certs out/dist/*-target_files-*.zip signed-target_files.zip
  • 最后生成fastboot烧写的img,./build/tools/releasetools/img_from_target_files signed-target_files.zip signed-img.zip

刷机

手机进入fastboot模式后,首先要清除userdata的数据,因为release img里面的apk已经使用过对应的key签名了,不清除userdata分区的话,手机是无法正常开机的。最后通过fastboot update signed-img.zip 烧写新编译的镜像即可。升级完后手机会自动开机,开机后查看Build number的信息如下,test key的字样就没有

《(原创)续-使用AOSP源码为Google Pixle编译系统镜像》

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d 博主赞过: