新建工程NDKTest2,新建活动MainActivity


修改local.properties,加入ndk路径

ndk.dir=$$

修改gradle.properties,加入:

android.useDeprecatedNdk=true

新建MyNDK.java:

package com.zj.ndktest2;/** * Created by root on 15-11-25. */public class MyNDK {    static {        System.loadLibrary("hello-log");    }    public static native void HelloLog();}


修改MainActivity.java:

package com.zj.ndktest2;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        MyNDK.HelloLog();    }}

修改app/build.gradle,添加

android {    defaultConfig {         ndk {               moduleName "hello-log"               ldLibs "log"         }    }}

点击MyNDK.java,右键->External Tools->javah,生成com_zj_ndktest2_MyNDK.h:

/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_zj_ndktest2_MyNDK */#ifndef _Included_com_zj_ndktest2_MyNDK#define _Included_com_zj_ndktest2_MyNDK#ifdef __cplusplusextern "C" {#endif/* * Class:     com_zj_ndktest2_MyNDK * Method:    HelloLog * Signature: ()V */JNIEXPORT void JNICALL Java_com_zj_ndktest2_MyNDK_HelloLog  (JNIEnv *, jclass);#ifdef __cplusplus}#endif#endif

新建MyLog.h:

#ifndef _MYLOG_H_#define _MYLOG_H_#include <android/log.h>#define TAG "test"#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, TAG, __VA_ARGS__)#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__)#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, TAG, __VA_ARGS__)#define LOGW(...) __android_log_print(ANDROID_LOG_WARN, TAG, __VA_ARGS__)#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, TAG, __VA_ARGS__)#endif

新建main.cpp:

#include <jni.h>#include "com_zj_ndktest2_MyNDK.h"#include "MyLog.h"#include <android/log.h>JNIEXPORT void JNICALL Java_com_zj_ndktest2_MyNDK_HelloLog (JNIEnv *env, jclass cla) {    LOGV("hello verbose");    LOGD("hello debug");    LOGI("hello info");    LOGW("hello warn");    LOGE("hello error");}

新建Android.mk:

LOCAL_PATH := ${call my-dir}include $(CLEAR_VARS)LOCAL_MODULE := hello-logLOCAL_SRC_FILES := main.cppinclude $(BUILD_SHARED_LIBRARY)


运行:



#####################################################################


NDK关于日志输出的头文件在

#include <android/log.h>

android/log.h文件可以在$(NDK_HOME)/platforms/android-*/arch-*/usr/include/android里面


关键语句是:

/* * Android log priority values, in ascending priority order. */typedef enum android_LogPriority {    ANDROID_LOG_UNKNOWN = 0,    ANDROID_LOG_DEFAULT,    /* only for SetMinPriority() */    ANDROID_LOG_VERBOSE,    ANDROID_LOG_DEBUG,    ANDROID_LOG_INFO,    ANDROID_LOG_WARN,    ANDROID_LOG_ERROR,    ANDROID_LOG_FATAL,    ANDROID_LOG_SILENT,     /* only for SetMinPriority(); must be last */} android_LogPriority;

/* * Send a formatted string to the log, used like printf(fmt,...) */int __android_log_print(int prio, const char *tag,  const char *fmt, ...)

可以自定义上述log输出函数,新建MyLog.h:

#ifndef _MYLOG_H_#define _MYLOG_H_#include <android/log.h>#define TAG "test"#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, TAG, __VA_ARGS__)#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__)#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, TAG, __VA_ARGS__)#define LOGW(...) __android_log_print(ANDROID_LOG_WARN, TAG, __VA_ARGS__)#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, TAG, __VA_ARGS__)#endif

以后想要日志输出即可使用


##################################################################33


关于如何添加NDK能够log的方法,在网上找到4种:

1.在Android.mk中加入:

LOCAL_LDLIBS := -llog

注意,上述语句应加在include $(CLEAR_VARS)之后


2.在Android.mk中加入:

LOCAL_LDFLAGS := -llog

3.在Android.mk中加入:

LOCAL_SHARED_LIBRARIES += liblog

4.在app/build.gradle中加入:

android {    defaultConfig {          ndk {               ldLibs "log"           }     }} 


更多相关文章

  1. android stuido中修改最低sdk
  2. Android(安卓)系统音量最大值的定义位置以及默认值的修改方法
  3. Android(安卓)studio怎样隐藏标题栏
  4. Android(安卓)Unable to find instrumentation target package
  5. widget入门
  6. android 设置 源码 修改默认主题为白底黑字
  7. Android(安卓)USB debugging 功能失效
  8. 2013.07.22——— android 修改hosts
  9. 修改不启动Launcher导致开机广播无法发出的bug

随机推荐

  1. 【Android开发环境安装】
  2. 【066】Android & Java 难点解析
  3. Android Camera调用流程
  4. Android修改gen下包名
  5. Android: Android Wifi System
  6. android WebView loadData不能解析
  7. 本博博文预报
  8. 如何去写 Android(安卓)init.rc (Android
  9. 开启 Android 反射调用
  10. Android MediaController