NDK开发中小技巧
程序员文章站
2022-06-22 18:20:26
...
- LOG日志工具类 将运行时判断是否debug 放入AndroidLog.h中判断,在AndroidLog.h中修改即可区分是否打印日志
#ifndef MYMUSIC_ANDROIDLOG_H
#define MYMUSIC_ANDROIDLOG_H
#include "android/log.h"
#define LOG_DEBUG true //日志开关,true为开,其它为关
#define TAG "jniLib"//标签
#define LOGD(FORMAT,...) if(LOG_DEBUG) __android_log_print(ANDROID_LOG_DEBUG,TAG,FORMAT,##__VA_ARGS__);
#define LOGE(FORMAT,...) if(LOG_DEBUG) __android_log_print(ANDROID_LOG_ERROR,TAG,FORMAT,##__VA_ARGS__);
#endif //MYMUSIC_ANDROIDLOG_H
- CMakelists 中 使用GLOB关键字 把cpp 文件夹下的所有c 和c++文件都编译,省却了每添加一个c或者cpp文件就需要在CMakelists中添加.
#需要编译的文件 组
file(GLOB my_source src/main/cpp/*.cpp src/main/cpp/*.c)
include_directories(src/main/cpp/include)
add_library( # Sets the name of the library.
native-lib
SHARED
${my_source})
- 假如出现在头文件不让赋值为NULL的情况.
xyyyplayer/src/main/cpp/XYCallJava.h:16:20: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
JavaVM *javaVM = NULL
解决方式 在CMakelist中 添加下面代码 使其支持c++11
# cmakelists 设置c++11
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
elseif(COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()
# cmakelists 设置c++11
-----
- null