ifeq (true,$(strip $(enable_target_debugging)))
  # Target is more debuggable and adbd is on by default
  ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1
  # Enable Dalvik lock contention logging.
  ADDITIONAL_BUILD_PROPERTIES += dalvik.vm.lockprof.threshold=500
  # Include the debugging/testing OTA keys in this build.
  INCLUDE_TEST_OTA_KEYS := true
else # !enable_target_debugging
  # Target is less debuggable and adbd is off by default
  ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1//0-->1

endif # !enable_target_debugging


jni中添加Log打印方法:

参考:https://blog.csdn.net/yf210yf/article/details/9305623

1. 导入log头文件

在你使用的 .c/ .cpp 文件中

导入 log.h 头文件

 #include



2.在Android.mk 中

加上

LOCAL_LDLIBS :=-llog

注意Android.mk里有一行include $(CLEAR_VARS)

必须把LOCAL_LDLIBS :=-llog放在它后面才有用,

否则相当于没写。



3. 定义LOG 函数

先定义一个全局变量,再定义一些输出的LOG函数:

[cpp] view plaincopy
  1. #define TAG "myDemo-jni" // 这个是自定义的LOG的标识   
  2. #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,TAG ,__VA_ARGS__) // 定义LOGD类型   
  3. #define LOGI(...) __android_log_print(ANDROID_LOG_INFO,TAG ,__VA_ARGS__) // 定义LOGI类型   
  4. #define LOGW(...) __android_log_print(ANDROID_LOG_WARN,TAG ,__VA_ARGS__) // 定义LOGW类型   
  5. #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG ,__VA_ARGS__) // 定义LOGE类型   
  6. #define LOGF(...) __android_log_print(ANDROID_LOG_FATAL,TAG ,__VA_ARGS__) // 定义LOGF类型   

上述代码中定义的函数

分别对应于Android 的Java代码中的

 Log.d(), Log.i(), Log.w(),Log.e(), Log.f()等方法.



4.举例

[cpp] view plaincopy
  1. #include   
  2. #include   
  3. #include   
  4.   
  5. #define TAG    "myhello-jni-test" // 这个是自定义的LOG的标识  
  6. #define LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,TAG,__VA_ARGS__) // 定义LOGD类型  
  7.   
  8.  extern "C" {  
  9.      JNIEXPORT jstring JNICALL Java_com_snail_helloworld_MainActivity_myhello(JNIEnv * env, jobject obj);  
  10.  };  
  11.   
  12.  JNIEXPORT jstring JNICALL Java_com_snail_helloworld_MainActivity_myhello(JNIEnv * env, jobject obj)  
  13.  {  
  14.      int i = 0;  
  15.      LOGD("########## i = %d", i);  
  16.      return env->NewStringUTF("Hello From CPP");  
  17.  }  


Android.mk

[cpp] view plaincopy
  1. LOCAL_PATH := $(call my-dir)  
  2.   
  3. include $(CLEAR_VARS)  
  4.   
  5. LOCAL_MODULE    := hello  
  6. LOCAL_SRC_FILES := hello.cpp  
  7. LOCAL_LDLIBS :=-llog  
  8.   
  9. include $(BUILD_SHARED_LIBRARY)  



实际使用情况如下:

#define LOG_TAG "SysPropJNI"


#include "cutils/properties.h"
#include "utils/misc.h"
#include
#include "jni.h"
#include "core_jni_helpers.h"
#include
#include


#define TAG    "SysPropJNI" // 这个是自定义的LOG的标识  
#define LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,TAG,__VA_ARGS__) // 定义LOGD类型 


namespace android
{


static jstring SystemProperties_getSS(JNIEnv *env, jobject clazz,
                                      jstring keyJ, jstring defJ)
{
    int len;
    const char* key;
    char buf[PROPERTY_VALUE_MAX];
    jstring rvJ = NULL;




    if (keyJ == NULL) {
        jniThrowNullPointerException(env, "key must not be null.");
        goto error;
    }
    key = env->GetStringUTFChars(keyJ, NULL);
LOGD("lucky SystemProperties_getSS");
    LOGD("lucky SystemProperties_getSS 22key = [%s]", key);
    len = property_get(key, buf, "");
LOGD("lucky SystemProperties_getSS len = [%d],[%s]", len,buf);
    if ((len <= 0) && (defJ != NULL)) {
        rvJ = defJ;
    } else if (len >= 0) {
        rvJ = env->NewStringUTF(buf);
    } else {
        rvJ = env->NewStringUTF("");
    }


    env->ReleaseStringUTFChars(keyJ, key);


error:
    return rvJ;

}

....


结果:

logcat |grep lucky

04-01 20:01:28.240 D/SysPropJNI( 5610): lucky SystemProperties_getSS
04-01 20:01:28.240 D/SysPropJNI( 5610): lucky SystemProperties_getSS 22key = [ro.serialno]
04-01 20:01:28.240 D/SysPropJNI( 5610): lucky SystemProperties_getSS len = [19],[ABC0M0A1S19000008]

更多相关文章

  1. 自定义ViewGroup onMeasure onLayout
  2. Android(安卓)自定义Ratingbar
  3. Android中自定义标题栏(一)
  4. TypedefViewTest
  5. 自定义Android侧滑菜单控件
  6. Android中自定义标题栏(二)
  7. 选择型控件
  8. android C/C++ source files 全局宏定义
  9. Android(安卓)shape自定义形状,设置渐变色

随机推荐

  1. Supporting Multiple Screens(支持Androi
  2. Android摄像头编程及注意事项
  3. android 4.0 (Ice Cream Sandwich) 已经开
  4. android content provider
  5. Android中Intent传值
  6. Android(安卓)加载大图片是出现的 OutOfM
  7. android中使用SQLite进行CRUD操作的实例
  8. Android的pagerAdapter源码,在线查看网址
  9. android 图片的浏览、缩放、拖动和自动居
  10. 设置 Toolbar(ActionBar) 上的按钮颜色