1.You cannot install files to xxx while building a separate vendor.img!
Non-symlink out/target/product/qssi/system/vendor detected!
You cannot install files to out/target/product/qssi/system/vendor while building a separate vendor.img!
13:59:39 ninja failed with: exit status 1
#### failed to build some targets (05:26 (mm:ss)) ####
问题分析:
报这个错的时候,我在为系统增加可卸载恢复的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就可以编译通过,预置可卸载成功,恢复出厂设置可恢复。
旧的
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := Test
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
#LOCAL_PREBUILT_JNI_LIBS := \
#LOCAL_PRIVILEGED_MODULE := true
LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/operator/app
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)
修改LOCAL_MODULE_PATH为
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/operator/app
以上。
2.FAILED: setup-jack-server
可能有报错
FAILED: setup-jack-server
Jack server installation not found
全局禁用
禁止整个系统编译使用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/文件夹在根目录,如果在编译过程中强行停止,这个文件夹可能会一直存在,后面再编译,会一直读这个文件夹的内容。造成异常
报错信息如下:
============================================
[build.sh]: Command: "/tmp/tmp.6d9u6Sy5VV/releasetools/build_super_image.py --path /tmp/tmp.6d9u6Sy5VV /tmp/tmp.kAZ9qkWxSO /media/angleyes/ADATA/01_angleyes/01_mc907/LA.UM.9.12_MC907_custom/out/target/product/lito/super.img"
============================================
Warning: releasetools script should be invoked as hermetic Python executable -- build and run `build_super_image` directly.
Traceback (most recent call last):
File "/tmp/tmp.6d9u6Sy5VV/releasetools/build_super_image.py", line 221, in <module>
main(sys.argv[1:])
File "/tmp/tmp.6d9u6Sy5VV/releasetools/build_super_image.py", line 215, in main
BuildSuperImage(args[0], args[1])
File "/tmp/tmp.6d9u6Sy5VV/releasetools/build_super_image.py", line 190, in BuildSuperImage
return BuildSuperImageFromExtractedTargetFiles(inp, out)
File "/tmp/tmp.6d9u6Sy5VV/releasetools/build_super_image.py", line 152, in BuildSuperImageFromExtractedTargetFiles
info_dict = common.LoadInfoDict(inp)
File "/tmp/tmp.6d9u6Sy5VV/releasetools/common.py", line 635, in LoadInfoDict
raise ValueError("Failed to find META/misc_info.txt in input target-files")
ValueError: Failed to find META/misc_info.txt in input target-files
real 0m3.329s
user 0m0.084s
sys 0m0.021s
============================================
[build.sh]: FAILED: /tmp/tmp.6d9u6Sy5VV/releasetools/build_super_image.py --path /tmp/tmp.6d9u6Sy5VV /tmp/tmp.kAZ9qkWxSO /media/angleyes/ADATA/01_angleyes/01_mc907/LA.UM.9.12_MC907_custom/out/target/product/lito/super.img
============================================
4.You have tried to change the API from what has been previously approved.
******************************
You have tried to change the API from what has been previously approved.
To make these errors go away, you have two choices:
1. You can add '@hide' javadoc comments (and remove @SystemApi/@TestApi/etc)
to the new methods, etc. shown in the above diff.
2. You can update current.txt and/or removed.txt by executing the following command:
make api-stubs-docs-update-current-api
To submit the revised current.txt to the main Android repository,
you will need approval.
******************************
[ 95% 106290/111600] //frameworks/base:module-lib-api-stubs-docs metalava merged [common]
[ 95% 106291/111600] //frameworks/base:module-lib-api metalava merged [common]
ninja: build stopped: subcommand failed.
22:21:34 ninja failed with: exit status 1
运行命令
make update-api
再重新编译
5.编译单个模块失败
操作过程如下
1.在安卓官网下载了一份Setting的app
2.将高通源码中setting APP删除
3.将安卓官方APP替换到同一个目录,单独编译,报错
4.换回高通的app源码,单独编译,报错
5.编译其他的APP,正常
报错内容
警告: [options] 未与 -source 9 一起设置引导类路径
packages/apps/Settings/tests/robotests/src/com/android/settings/network/telephony/NetworkScanHelperTest.java:90: 错误: 无法将类 NetworkScanHelper中的构造器 NetworkScanHelper应用到给定类型;
mNetworkScanHelper = new NetworkScanHelper(mTelephonyManager,
^
需要: Context,TelephonyManager,NetworkScanCallback,Executor
找到: TelephonyManager,NetworkScanCallback,ExecutorService
原因: 实际参数列表和形式参数列表长度不同
packages/apps/Settings/tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java:87: 错误: 无法将类 PreferredNetworkModePreferenceController中的方法 init应用到给定类型;
mController.init(SUB_ID);
^
需要: Lifecycle,int
找到: int
原因: 实际参数列表和形式参数列表长度不同
注: 某些输入文件使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
注: 某些输入文件使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
解决方案
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等镜像都有联系
++++ vbmeta ++++
2021-07-05 19:46:23 - common.py - INFO : Running: "avbtool extract_public_key --key external/avb/test/data/testkey_rsa2048.pem --output /media/angleyes/ADATA/01_angleyes/01_mc907/LA.UM.9.12_MC907_custom/out/soong/.temp/avb-gabF5g.avbpubkey"
2021-07-05 19:46:23 - common.py - INFO :
2021-07-05 19:46:23 - common.py - INFO : Running: "avbtool make_vbmeta_image --output /media/angleyes/ADATA/01_angleyes/01_mc907/LA.UM.9.12_MC907_custom/out/target/product/lito/obj/PACKAGING/target_files_intermediates/lito-target_files-eng.angleyes/IMAGES/vbmeta.img --key external/avb/test/data/testkey_rsa4096.pem --algorithm SHA256_RSA4096 --include_descriptors_from_image /media/angleyes/ADATA/01_angleyes/01_mc907/LA.UM.9.12_MC907_custom/out/target/product/lito/obj/PACKAGING/target_files_intermediates/lito-target_files-eng.angleyes/IMAGES/vendor.img --include_descriptors_from_image /media/angleyes/ADATA/01_angleyes/01_mc907/LA.UM.9.12_MC907_custom/out/target/product/lito/obj/PACKAGING/target_files_intermediates/lito-target_files-eng.angleyes/IMAGES/recovery.img --chain_partition vbmeta_system:2:/media/angleyes/ADATA/01_angleyes/01_mc907/LA.UM.9.12_MC907_custom/out/soong/.temp/avb-gabF5g.avbpubkey --include_descriptors_from_image /media/angleyes/ADATA/01_angleyes/01_mc907/LA.UM.9.12_MC907_custom/out/target/product/lito/obj/PACKAGING/target_files_intermediates/lito-target_files-eng.angleyes/IMAGES/boot.img --include_descriptors_from_image /media/angleyes/ADATA/01_angleyes/01_mc907/LA.UM.9.12_MC907_custom/out/target/product/lito/obj/PACKAGING/target_files_intermediates/lito-target_files-eng.angleyes/IMAGES/dtbo.img --include_descriptors_from_image /media/angleyes/ADATA/01_angleyes/01_mc907/LA.UM.9.12_MC907_custom/out/target/product/lito/obj/PACKAGING/target_files_intermediates/lito-target_files-eng.angleyes/IMAGES/odm.img --padding_size 4096"
2021-07-05 19:46:23 - common.py - INFO :
2021-07-05 19:46:23 - add_img_to_target_files.py - INFO :
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的时候
会需要大概
这个空间会使用根目录下的内容
报错可能有
1./tmp/merge_target_files_muipZn/output/RECOVERY/RAMDISK/system/bin/adbd: write error (disk full?). Continue? (y/n/^C)
2.No space left on device
使用命令:
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
报错,无法删除
C:\Users\Administrator>adb uninstall QSensorTest.apk
Failure [DELETE_FAILED_INTERNAL_ERROR]
解决方案
adb shell pm list packages -f//找到对应的APK位置
adb root
adb disable-verity
adb reboot
adb root
adb remount
adb shell
mount -o rw,remount /system
rm -rf xxx