Android JNIログ使用

2992 ワード

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  

// 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'

}


```