Android JNIログ使用
2992 ワード
1 ndk対logサポートの追加
ndkのlogサポートを追加する必要がある場合は、以下の2つのステップで実現します.
1.1 Androidの修正mk
生成されたライブラリファイルが「.soファイル」であればAndroid.mkには以下の内容が追加されています.
生成されたライブラリファイルが「.aファイル」であればAndroid.mkには以下の内容が追加されています.
1.2はい.cまたは.cppファイルでlogヘッダファイルを参照
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エラーが考えられます.ここには赤いエラー情報しか表示されません.これらのエラーは真剣に分析し、スタックの情報を表示する必要があります.
次のようになります.
前の文コードを実行すると、logcatに対応するログを印刷できます.
注意:log印刷の方法ではjstringは入力できません.jstringをcの文字配列に変換してメソッドに印刷する必要があります.そうしないと、エラーが発生します.
特に、android studioが上位構成を通過した後、実行時にエラーが発生することを強調します.
ヒント
appのgradleプロファイルで次のように設定します.
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'
}
```