高通安卓12-问题整理和解决方案

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

  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值