Android 新增加Audio Codec ,遇到的编译问题处理

在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 文件的修改,长下面这样子。

猜你喜欢

转载自blog.csdn.net/dreamDay2016_11_11/article/details/129025930