1、在cmakelist中加入 要引用的动态库
add_library( libflag //1、 引用的so 动态库标志,可以随意填一个,但4与1保持一致
SHARED //2、 表明这是一个动态库,STATIC则为静态库
IMPORTED) //3、 表明这动态库是从外部引入的
set_target_properties( libflag //4、引用的so 动态库标志,可以随意填一个,但4与1保持一致
PROPERTIES IMPORTED_LOCATION //5、指明6 的属性为文件路径
${CMAKE_CURRENT_SOURCE_DIR}/../j2534SO/libname.so) //6、被引用的动态库的路径和名称
2、如果在编译的时候报: undefined reference to 这样的错误,而错误信息中指明的接口所应用的动态库你确信你已经包含进来了,那还有一种可能的原因:ANDROID_ALLOW_UNDEFINED_SYMBOLS=TRUE 这个宏没有加上,在build.gradle中加入这个宏即可
externalNativeBuild { cmake { cFlags "-DAPP_EASYKEYAD=1" arguments "-DANDROID_ALLOW_UNDEFINED_SYMBOLS=TRUE" } }
加上这个宏,代码可以顺利编译通过,因为这个变量默认值是false,对于所有未定义的引用都会报“undefined symbol”或"undefined reference to"错误,便于发现可能的bug。如果对于引用的库有自信,设置成'true‘时不会检查引用,代码可以快速通过编译。但是如果代码有问题,编译出来的动态库可能会报运行时错误。