1. 程式人生 > >實現Android Studio JNI開發C/C++使用__android_log_print輸出Log

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

Android Studio的Android.mk是自動生成的,就算修改也是沒用了,實際Android Studio的Android.mk是根據gradle檔案生成的,那麼就需要修改gradle檔案。

如果不修改gradle,直接使用__android_log_print就會報錯

Error:(36) undefined reference to '__android_log_print'

現在只需要在jni Module中得build.gradle 新增一些程式碼即可實現輸出Log

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");
}
複製程式碼