發表文章

目前顯示的是 9月, 2017的文章

Android 7.0 APP存取log和prop行為變更

根據Android官方文件 https://developer.android.com/about/versions/nougat/android-7.0-changes.html?hl=zh-tw Android 7.0後非系統APP, 需要使用log和prop要使用NDK開放的API, 不再提供如libcutils和libutils的存取, 在啟動APP時候會發生 dlopen failed: cannot locate symbol "__system_property_get" referenced by ... 像是下面兩個log標頭檔就應該要修改 #include<utils/Log.h> #include<cutils/log.h> log函數使用包含在liblog內的函數 #include<android/log.h> int __android_log_print(int prio, const char *tag, const char *fmt, ...); AOSP實作和定義分別在 system/core/liblog/logger_write.c system/core/include/android/log.h 和以前用ALOG以及LOG系列函數不一樣的點在於需要自己寫priority, 因為實在太麻煩, 所以自己寫了一個AndroidLog.h方便使用 #ifndef __ANDROIDLOG_H__ #define __ANDROIDLOG_H__ #include <android/log.h> #if LOG_NDEBUG #define LOGV(...) ((void)0) #else #define LOGV(...) ((void)__android_log_print(ANDROID_LOG_VERBOSE,LOG_TAG,__VA_ARGS__)) #endif #define LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)) #define LOGE(...) ((void)__android_l

在Android.mk產生git版本,編譯時間和builder名稱

Android.mk產生git版本,編譯時間和builder名稱 CUR_GIT_VERSION="$(shell cd $(LOCAL_PATH);git log | grep commit -m 1 | cut -d' ' -f 2)" CUR_GIT_UNCOMMIT_FILE_NUM=$(shell cd $(LOCAL_PATH);git diff | grep +++ -c) CUR_BUILD_TIME=" $(shell date)" CUR_BUILD_NAME=" $(shell echo ${LOGNAME})" LOCAL_CFLAGS+=-DCUR_GIT_VERSION=\"${CUR_GIT_VERSION}${CUR_GIT_UNCOMMIT_FILE_NUM}\" LOCAL_CFLAGS+=-DCUR_BUILD_TIME=\"${CUR_BUILD_TIME}\" LOCAL_CFLAGS+=-DCUR_BUILD_NAME=\"${CUR_BUILD_NAME}\"