實現Android Studio JNI開發C/C++使用__android_log_print輸出Log

相信不少人在剛開始學習Android JNI編程的時候,須要輸出Log,在百度Google搜索的時候都是說須要在Android.mk中加入LOCAL_LDLIBS+= -L$(SYSROOT)/usr/lib -llog ,其實這是在eclipse開發上的方式,Android Studio並非這麼使用。android

Android Studio的Android.mk是自動生成的,就算修改也是沒用了,實際Android Studio的Android.mk是根據gradle文件生成的,那麼就須要修改gradle文件。編程

若是不修改gradle,直接使用__android_log_print就會報錯app

Error:(36) undefined reference to '__android_log_print'

 

如今只須要在jni Module中得build.gradle 添加一些代碼便可實現輸出Logeclipse

build.gradle文件完成代碼學習

apply plugin: 'com.android.library'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            ndk {
                moduleName "moduleName"
                ldLibs "log"//實現__android_log_print
                abiFilters "armeabi", "armeabi-v7a", "x86"
            }
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:support-v13:21.0.3'
}
ldLibs "log" 是關鍵代碼
#include <string.h>
#include <android/log.h>
#include <jni.h>
#include <stdio.h>

#define  LOG_TAG    "native-dev"
#define  LOGI(...)  __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
#define LOGE(...)  __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)
#define LOGI(...)  __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)

void testlog(){
    LOGI("test");
}
相關文章
相關標籤/搜索