NDK開發中小技巧
阿新 • • 發佈:2019-01-24
- 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