这篇文章上次修改于 228 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

https://github.com/dqzg12300/MikRom

https://github.com/dqzg12300/MikRom/issues/40#issuecomment-1364508642

General110提供了移植到安卓12的版本:

下载:https://wwpl.lanzoue.com/iytaA0jbotwb 密码:389m

于是想编译一个高版本的MikRom,同时参考了下面的文章完成了编译

原issue提到是基于android-12.1.0_r22改的,所以我选择拉取了android-12.1.0_r22分支的源代码

不过参考文章的是android-12.1.0_r11,实测用android-12.1.0_r22可以完成编译,并且能正常使用(只测试了脱壳)


  1. 拉取android-12.1.0_r22分支的AOSP,具体略
  2. Driver Binaries for Nexus and Pixel Devices下载手机对应的驱动,并在AOSP根目录下解压
  3. 根据自己的型号找到device/google/coral/flame/BoardConfig.mk,添加下面的补充
BUILD_BROKEN_ELF_PREBUILT_PRODUCT_COPY_FILES := true

否则会遇到一个关于预编译二进制文件的错误,具体没有截图,是下面文件的PRODUCT_COPY_FILES

  • build/make/target/product/handheld_system.mk
  1. 删除下面代码中关于Lineage Services的部分,因为General110是基于LineageOS改的,AOSP里面不需要这部分
  • frameworks/base/services/java/com/android/server/SystemServer.java

2023-10-31T14:34:49.png

  1. 在下面的文件中,末尾添加相关的内容:
  • build/soong/scripts/check_boot_jars/package_allowed_list.txt

如果是安卓10,那么路径是下面这个:

  • build/core/tasks/check_boot_jars/package_whitelist.txt

追加如下内容,否则也会遇到报错,具体忘了是啥

###################################################
cn\.mik
cn\.mik\..*
  1. 替换sepolicy文件,编译途中提示32.0路径下面这个和另外路径下的不一致,我这里选择直接用32下面这个覆盖原来的,不止这一个
  • system/sepolicy/prebuilts/api/32.0/public/domain.te
  • system/sepolicy/public/domain.te
  1. adbrootservice_aidl的问题

frameworks/base/Android.bp里面有adbrootservice_aidl,会提示找不到,因为这个AOSP里面并没有,直接去掉即可

  1. NvAppProfileService

这个也是LineageOS的,AOSP里面没有,去掉相关的内容即可

  • frameworks/base/core/java/android/content/pm/PackageParser.java

其他注意事项:

  1. 需要配套使用General110提供的压缩包的MikManager.apk,原版本有点bug,好像没适配安卓12
  2. 直接编译user版本是没有root的
  3. 要先编译system/extras/su/Android.mk得到xuuu,等于另外搞个root,即mmm system/extras/su,不过实际上说setgid失败,可能不适用AOSP
  4. 每次改动之后记得先make update-api
  5. 内存不够加swap,我是20G+8G