在Android S 上新增加Audio Codec Support ,遇到如下编译问题,记录一下处理方法,
1. error 1
******************************************************
error: VNDK library: libstagefright_foundation's ABI has EXTENDING CHANGES Please check compatibility report at: out/soong/.intermediates/frameworks/av/media/libstagefright/foundation/libstagefright_foundation/android_vendor.31_arm64_armv8-a_cortex-a73_shared/libstagefright_foundation.so.abidiff
******************************************************
2.error 2
******************************************************
error: VNDK library: libaudioutils's ABI has EXTENDING CHANGES Please check compatibility report at: out/soong/.intermediates/system/media/audio_utils/libaudioutils/android_vendor.31_arm64_armv8-a_cortex-a73_shared/libaudioutils.so.abidiff
******************************************************
分析error:
1.针对error 1 查看libstagefright_foundation.so.abidiff这个文件提示如下,
lib_name: "libstagefright_foundation"
arch: "arm64"
global_vars_added {
name: "android::MEDIA_MIMETYPE_AUDIO_AVS3"
source_file: "frameworks/av/media/libstagefright/foundation/include/media/stagefright/foundation/MediaDefs.h"
linker_set_key: "_ZN7android25MEDIA_MIMETYPE_AUDIO_AVS3E"
referenced_type: "const char *"
access: public_access
}
added_elf_objects {
name: "_ZN7android25MEDIA_MIMETYPE_AUDIO_AVS3E"
}
compatibility_status: EXTENSION
结论是,新加了全局变量,这正好是我新加的内容。
新加内容
MediaDefs.h
extern const char *MEDIA_MIMETYPE_AUDIO_AVS3;
MediaDefs.cpp
const char *MEDIA_MIMETYPE_AUDIO_AVS3 = "audio/av3a";
2.针对error 2 查看libaudioutils.so.abidiff这个文件提示如下,
lib_name: "libaudioutils"
arch: "arm64"
enum_type_extension_diffs {
type_stack: "android::PowerLog::log-> android::PowerLog *-> android::PowerLog-> const audio_format_t-> audio_format_t-> "
name: "audio_format_t"
fields_added {
enum_field_value: -536870912
name: "AUDIO_FORMAT_AVS3"
}
}
compatibility_status: EXTENSION
结论是,新加了全局变量,这也正好是我新加的内容。
其实,印出error 的同时,已经提示处理方法了,就是执行android 脚本,再生成新的header 文件就可以了。
接下来看看完整的Error 提示:
1. error 1
FAILED: out/soong/.intermediates/frameworks/av/media/libstagefright/foundation/libstagefright_foundation/android_vendor.31_arm64_armv8-a_cortex-a73_shared/libstagefright_foundation.so.abidiff
(prebuilts/clang-tools/linux-x86/bin/header-abi-diff -allow-unreferenced-changes -allow-unreferenced-elf-symbol-changes -lib libstagefright_foundation -arch arm64 -o out/soong/.intermediates/frameworks/av/media/libstagefright/foundation/libstagefright_foundation/android_vendor.31_arm64_armv8-a_cortex-a73_shared/libstagefright_foundation.so.abidiff -new out/soong/.intermediates/frameworks/av/media/libstagefright/foundation/libstagefright_foundation/android_vendor.31_arm64_armv8-a_cortex-a73_shared/libstagefright_foundation.so.lsdump -old prebuilts/abi-dumps/vndk/31/64/arm64_armv8-a/source-based/libstagefright_foundation.so.lsdump)|| (echo 'error: Please update ABI references with: $ANDROID_BUILD_TOP/development/vndk/tools/header-checker/utils/create_reference_dumps.py -l libstagefright_foundation' && (mkdir -p $DIST_DIR/abidiffs && cp out/soong/.intermediates/frameworks/av/media/libstagefright/foundation/libstagefright_foundation/android_vendor.31_arm64_armv8-a_cortex-a73_shared/libstagefright_foundation.so.abidiff $DIST_DIR/abidiffs/) && exit 1)
******************************************************
error: VNDK library: libstagefright_foundation's ABI has EXTENDING CHANGES Please check compatibility report at: out/soong/.intermediates/frameworks/av/media/libstagefright/foundation/libstagefright_foundation/android_vendor.31_arm64_armv8-a_cortex-a73_shared/libstagefright_foundation.so.abidiff
******************************************************
error: Please update ABI references with: $ANDROID_BUILD_TOP/development/vndk/tools/header-checker/utils/create_reference_dumps.py -l libstagefright_foundation
10:46:20 ninja failed with: exit status 1
#### failed to build some targets (20 seconds) ####
2.error 2
[ 10% 348/3267] //system/media/audio_utils:libaudioutils header-abi-diff libaudioutils.so.abidiff [arm]
FAILED: out/soong/.intermediates/system/media/audio_utils/libaudioutils/android_vendor.31_arm_armv8-a_cortex-a73_shared/libaudioutils.so.abidiff
(prebuilts/clang-tools/linux-x86/bin/header-abi-diff -allow-unreferenced-changes -allow-unreferenced-elf-symbol-changes -lib libaudioutils -arch arm -o out/soong/.intermediates/system/media/audio_utils/libaudioutils/android_vendor.31_arm_armv8-a_cortex-a73_shared/libaudioutils.so.abidiff -new out/soong/.intermediates/system/media/audio_utils/libaudioutils/android_vendor.31_arm_armv8-a_cortex-a73_shared/libaudioutils.so.lsdump -old prebuilts/abi-dumps/vndk/31/64/arm_armv8-a/source-based/libaudioutils.so.lsdump)|| (echo 'error: Please update ABI references with: $ANDROID_BUILD_TOP/development/vndk/tools/header-checker/utils/create_reference_dumps.py -l libaudioutils' && (mkdir -p $DIST_DIR/abidiffs && cp out/soong/.intermediates/system/media/audio_utils/libaudioutils/android_vendor.31_arm_armv8-a_cortex-a73_shared/libaudioutils.so.abidiff $DIST_DIR/abidiffs/) && exit 1)
******************************************************
error: VNDK library: libaudioutils's ABI has EXTENDING CHANGES Please check compatibility report at: out/soong/.intermediates/system/media/audio_utils/libaudioutils/android_vendor.31_arm_armv8-a_cortex-a73_shared/libaudioutils.so.abidiff
******************************************************
error: Please update ABI references with: $ANDROID_BUILD_TOP/development/vndk/tools/header-checker/utils/create_reference_dumps.py -l libaudioutils
14:11:43 ninja failed with: exit status 1
#### failed to build some targets (01:19 (mm:ss)) ####
解决方法:执行提示的命令后,生成新的文件。
error 1
cd development/vndk/tools/header-checker/utils/
development/vndk/tools/header-checker/utils$ ./create_reference_dumps.py -l libstagefright_foundation -product xxx
============================================
ninja: no work to do.
Creating dumps for target_arch: arm and variant armv8-a
Created abi dump at /prebuilts/abi-dumps/vndk/31/64/arm_armv8-a/source-based/libstagefright_foundation.so.lsdump
Creating dumps for target_arch: arm64 and variant armv8-a
Created abi dump at /prebuilts/abi-dumps/vndk/31/64/arm64_armv8-a/source-based/libstagefright_foundation.so.lsdump
msg: Processed 2 libraries in 3.13055180311203 minutes
error 2
development/vndk/tools/header-checker/utils$ ./create_reference_dumps.py -l libaudioutils -product xxx
[100% 42/42] //system/media/audio_utils:libaudioutils header-abi-linker libaudioutils.so.lsdump
Creating dumps for target_arch: arm and variant armv8-a
Created abi dump at prebuilts/abi-dumps/vndk/31/64/arm_armv8-a/source-based/libaudioutils.so.lsdump
Creating dumps for target_arch: arm64 and variant armv8-a
Created abi dump at prebuilts/abi-dumps/vndk/31/64/arm64_armv8-a/source-based/libaudioutils.so.lsdump
msg: Processed 2 libraries in 3.355355123678843 minutes
-product 参数,是限定特定产品才编译,不做全编译。
再执行编译,就可以正常编译了。
提交代码时候,也需要把新生成的文件上传到仓库。
libstagefright_foundation.so.lsdump 文件的修改,长下面这样子。