【问题标题】:Android CSipSimple Build Fail for arm64-v8aarm64-v8a 的 Android CSipSimple 构建失败
【发布时间】:2016-06-07 17:56:08
【问题描述】:

我在 Galaxy S6 Edge+ 上遇到一个错误,它说它无法加载本机库。我正在使用 CSipSimple。如果我不在 Application.mk 文件中包含 arm64-v8a,它编译得很好。我收到此错误:

[arm64-v8a] StaticLibrary  : libpj_amr_stagefright_codec.a
[arm64-v8a] StaticLibrary  : libpjsip.a
[arm64-v8a] Compile        : pjmedia <= echo_webrtc_aec.c
In file included from jni/pjsip/android_toolchain/pjmedia/../../sources/pjmedia/../../../webrtc/sources/modules/audio_processing/aec/include/echo_cancellation.h:14:0,
                 from jni/pjsip/android_toolchain/pjmedia/../../sources/pjmedia/src/pjmedia/echo_webrtc_aec.c:57:
jni/pjsip/android_toolchain/pjmedia/../../sources/pjmedia/../../../webrtc/sources/typedefs.h:61:2: error: #error Please add support for your architecture in typedefs.h
 #error Please add support for your architecture in typedefs.h
  ^
make[1]: *** [obj/local/arm64-v8a/objs/pjmedia/src/pjmedia/echo_webrtc_aec.o] Error 1
make[1]: *** Waiting for unfinished jobs....
rm jni/swig-glue/android_toolchain/../.pjsua.i
make[1]: Leaving directory `/home/user/data/svn/CSipSimple-trunk/CSipSimple'
make: *** [libraries] Error 2

这是 make 文件的一部分(我会包含它以防搞砸):

 JNI_DIR := $(call my-dir)

 APP_OPTIM := release APP_ABI := armeabi armeabi-v7a x86 mips arm64-v8a

 MY_USE_CSIPSIMPLE := 1

 MY_USE_G729 := 1

如果有帮助,我正在使用 Android NDK r10e-rc4。

编辑 1: 我还尝试按顺序使用以下命令进行构建: svn update, make clean, make udpate, make

【问题讨论】:

    标签: android android-ndk csip-simple


    【解决方案1】:

    我也有同样的问题。看起来 WebRTC 的代码还不支持 arm64-v8a。

    将以下补丁应用到错误消息中的“webrtc/sources/typedefs.h”可以修复此构建中断。

     #define WEBRTC_ARCH_32_BITS
     #define WEBRTC_ARCH_LITTLE_ENDIAN
     #define WEBRTC_LITTLE_ENDIAN
    +#elif defined(__aarch64__)
    +#define WEBRTC_ARCH_64_BITS
    +#define WEBRTC_ARCH_LITTLE_ENDIAN
    +#define WEBRTC_LITTLE_ENDIAN
     #elif defined(__MIPSEL__)
     #define WEBRTC_ARCH_32_BITS
     #define WEBRTC_ARCH_LITTLE_ENDIAN
    

    另见:https://android.googlesource.com/platform/external/webrtc/+/android-6.0.1_r41/src/typedefs.h

    注意,上面链接中的代码不包含#define WEBRTC_LITTLE_ENDIAN,但在我的代码版本中,WEBRTC_LITTLE_ENDIANWEBRTC_ARCH_LITTLE_ENDIAN 成对出现。所以我认为这取决于版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-25
      • 2017-10-05
      • 1970-01-01
      • 2018-04-16
      • 2023-01-17
      • 2020-11-16
      • 2017-06-10
      • 1970-01-01
      相关资源
      最近更新 更多