1.You cannot install files to xxx while building a separate vendor.img!
问题分析:
报这个错的时候,我在为系统增加可卸载恢复的App,删除out路径下相关的文件夹,仍旧会报错。
预置apk为可卸载时。预置到旧的路径system/vendor/operator/app会编译报错,"You cannot install files to out/target/product/xxx/system/vendor while building a separate vendor.img!"改为预置到vendor/operator/app就可以编译通过,预置可卸载成功,恢复出厂设置可恢复。
旧的
2.FAILED: setup-jack-server
可能有报错
全局禁用
禁止整个系统编译使用jack编译,在/build/core/combo/javac.mk中将
ANDROID_COMPILE_WITH_JACK := true
修改为false,即
ANDROID_COMPILE_WITH_JACK := false
单个模块禁用
在模块的Android.mk中增加如下设置
LOCAL_JACK_ENABLED := disabled
3.无法生成super.img/无法生成升级包
不要手动删除out下的内容
目前out下有一些美格未开放的内容,最好使用命令删除
另外留意out文件夹外是不是有编译的残留,如生成super.img的过程中会创建一个META/文件夹在根目录,如果在编译过程中强行停止,这个文件夹可能会一直存在,后面再编译,会一直读这个文件夹的内容。造成异常
报错信息如下:
4.You have tried to change the API from what has been previously approved.
运行命令
make update-api
再重新编译
5.编译单个模块失败
操作过程如下
1.在安卓官网下载了一份Setting的app
2.将高通源码中setting APP删除
3.将安卓官方APP替换到同一个目录,单独编译,报错
4.换回高通的app源码,单独编译,报错
5.编译其他的APP,正常
报错内容
解决方案
make clean-Settings
6.无法通过fastboot烧写system镜像
更改开机logo之后,fastboot烧录一直报错
1.确定分区是不是更改过
2.全擦一次,不能只是烧录三个xml文件,需要完整的执行擦除过程,具体操作看文章内容
3.重新操作
4.system或者vendor的命令需要是
adb reboot bootloader;#这里不一定可以刷
fastboot reboot fastboot; #这里很重要
fastboot flash system system.img
7.烧录镜像无法正常启动
这个问题遇到过两次了
第一次:编译vendor.img,烧录之后无法启动了
第二次:整编线刷无法启动
第一次的原因是:
烧录vendor.img还需要同时烧录vbmeta.img镜像
第二次原因是:
整编之后,需要把所有img、elf拷贝到烧录文件夹
总结:
镜像之间可能会存在一些关联,尝试烧录一些相关的镜像
观察编译的log,如vbmeta.img,它会和boot、dtb等镜像都有联系
8.更改mk没有作用
目的:想要制作我们自己的开机动画
过程:
1.之前尝试了通过adb在system下创建一个media文件夹,再放入开机动画压缩包是可以用的。
2.现在尝试直接打包在system.img里面,通过修改文件lito.mk,加入内容
PRODUCT_COPY_FILES += $(LOCAL_PATH)/bootanimation.zip:$(TARGET_COPY_OUT_SYSTEM)/media/bootanimation.zip
但是没有作用
3.参考前面的部分
PRODUCT_COPY_FILES += $(LOCAL_PATH)/firmware/test.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/test.bin
新生成的system.img,也没有这个test.bin出来
4.留意到,用userdata.img的编译操作,这个lito.mk参与了编译的过程
解决方案:修改文件qssi.mk解决
9.编译system.img失败
目的:用高通的编译方式没有生成system.img,命令为:./build.sh dist qssi_only -j24
过程:
1.最终结果没有system.img出来
2.有很多error,如:ERROR Interface Name: vendor.nxp.nxpnfc
3.我全部编译之后,是可以用高通的方式生成system.img的,之前做过几次
解答:android11动态分区使用的是system vendor打包出的super.img
当前高通平台的编译设计是,现在qssi lunch里编译system和vendor,再在lito lunch里编译其他,结束时打包成super.img
如果需要单独编译system.img,lunch时选择qssi,再使用make systemimage 生成的system需要在fastbootd(fastboot reboot fastboot)模式下才能刷入
10.清除某个模块的编译结果
目的:想要单独清除某个部分的编译结果,比如system.img或者userdata.img
过程:现在我是手动删除out下的文件,请问有什么命令能自动处理么?
解答:
可以删除out目录对应文件 qssi和lito文件夹
11.全部编译提示空间不足
使用高通的编译方式,制作super.img的时候
会需要大概
这个空间会使用根目录下的内容
报错可能有
使用命令:
sudo du -sh *查看文件占用情况
sudo du -sh * |sort -nr //按大小排序
sudo du -s * |sort -nr//按大小排序
du -h --max-depth=0 //当前目录下,文件占用大小
这是正常情况下的硬盘状态
这是编译过程中硬盘的状态
大概消耗了12个G的临时缓存
12.ADB卸载APP报错Failure [DELETE_FAILED_INTERNAL_ERROR]
通过命令卸载APP
adb uninstall QSensorTest.apk
报错,无法删除
解决方案