android studio 中jni底層日誌的列印

來源:互聯網
上載者:User

標籤:ati   type   bug   tag   proguard   日誌   方法   and   pen   

1 添加ndk對log支援
若需要添加ndk對log的支援,只需要通過以下2步即可實現。


1.1 修改Android.mk
如產生的庫檔案是“.so檔案”,則在Android.mk中添加如下內容:
LOCAL_LDLIBS:=-L$(SYSROOT)/usr/lib -llog
如產生的庫檔案是“.a檔案”,則在Android.mk中添加如下內容:
LOCAL_LDLIBS:=-llog

1.2 在.c或.cpp檔案中引用log標頭檔
添加如下內容:
// 引入log標頭檔
#include  <android/log.h>
// log標籤
#define  TAG    "這裡填寫日誌的TAG"
// 定義info資訊
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,TAG,__VA_ARGS__)
// 定義debug資訊
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__)
// 定義error資訊
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG,__VA_ARGS__)

ANDROID_LOG_INFO:是記錄層級;
TAG:是要過濾的標籤,可以在LogCat視圖中過濾。
__VA_ARGS__:是實際的日誌內容。
完成上面2步之後,我們就可以在.c/cpp檔案中添加LOGI、LOGD、LOGE去列印資訊!使用LOGI、LOGD、LOGE的方法和使用printf一樣

1.3日誌類型
1)Log.v 的調試顏色為黑色的,任何訊息都會輸出,這裡的v代表verbose囉嗦的意思,平時使用就是Log.v(,);
2)Log.d的輸出顏色是藍色的,僅輸出debug調試的意思,但他會輸出上層的資訊,過濾起來可以通過DDMS的Logcat標籤來選擇
3)Log.i的輸出為綠色,一般提示性的訊息information,它不會輸出Log.v和Log.d的資訊,但會顯示i、w和e的資訊
4)Log.w的意思為橙色,可以看作為warning警告,一般需要我們注意最佳化Android代碼,同時選擇它後還會輸出Log.e的資訊。
5)Log.e為紅色,可以想到error錯誤,這裡僅顯示紅色的錯誤資訊,這些錯誤就需要我們認真的分析,查看棧的資訊了。

 

如:

LOGI("user info----name:%s, age:%d, sex:%s.", "xxx", 18, "男");

執行上句代碼可以再logcat中列印出相應日誌。

注意:log列印的方法中不能傳入jstring,必須將jstring轉為c中的字元數組在傳入到方法裡面列印,否則會報錯。

特別需要強調的是在android studio 通過上層配置之後,啟動並執行時候會報錯:

提示

 

如何解決了,在app的gradle設定檔中設定:

ldLibs "log"
apply plugin: ‘com.android.application‘android {    compileSdkVersion 25    buildToolsVersion "23.0.3"    defaultConfig {        applicationId "im.weiyuan.com.jni"        minSdkVersion 16        targetSdkVersion 25        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"        ndk{            moduleName "hello"  //設定庫(so)檔案名稱            abiFilters "armeabi", "armeabi-v7a", "x86"            ldLibs "log"        }    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘        }    }}dependencies {    compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])    androidTestCompile(‘com.android.support.test.espresso:espresso-core:2.2.2‘, {        exclude group: ‘com.android.support‘, module: ‘support-annotations‘    })    compile ‘com.android.support:appcompat-v7:25.2.0‘    testCompile ‘junit:junit:4.12‘}

 

android studio 中jni底層日誌的列印

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.