實現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 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"); }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM