欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

NDK开发中小技巧

程序员文章站 2022-06-22 18:20:26
...
  1. 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

  1. 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})
  1. 假如出现在头文件不让赋值为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
-----
  1. null
相关标签: ndk