相信不少人在剛開始學習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"); }