我在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
答案 0 :(得分:0)
我有同样的问题。看起来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_ENDIAN
和WEBRTC_ARCH_LITTLE_ENDIAN
成对出现。所以我认为这取决于版本。