Logcat'e günlük iletileri ekleyerek JNI C uygulamasında hata ayıklamak istiyorum. Bunu yapan C API nedir?Android JNI programından çağrı yapılacak Log API nedir?
Bunun gibicevap
:
#include <android/log.h>
__android_log_write(ANDROID_LOG_ERROR, "Tag", "Error here");//Or ANDROID_LOG_INFO, ...
böyle makefile bunu ekleyin: Aşağıdaki
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
Eğer yerel kodda içermelidir kod parçacığı olduğunu. Yukarıdaki API'yi kullanmak için, karşılık gelen kütüphaneyi bağlamanız gerekir.
Android'de paylaşılan bir kitaplığı 3 şekilde bağlayabiliriz. 3 durumun altında, belirtilen satırlar Android.mk
'a eklenmelidir. Yani burada üç yol vardır. Nedense
1. LOCAL_LDLIBS way
LOCAL_LDLIBS := -llog
1 çalışmıyor (Bende işe yaramadı), aşağıdaki 2 şekilde
2. LOCAL_LDFLAGS way
LOCAL_LDFLAGS := -llog
3. LOCAL_SHARED_LIBRARIES way
LOCAL_SHARED_LIBRARIES += liblog
syslog
Bu POSIX fonksiyonu da LogCat için çıktılar deneyebilirsiniz .
Android olmayan sistemler arasında daha taşınabilir olmanın avantajı, 'dan daha iyidir ve otomatik olarak uygulama paketini günlüğe ekler. bu örnek uygulaması ile test edilmiştir
:#include <jni.h>
#include <string>
#include <syslog.h>
extern "C"
JNIEXPORT jstring JNICALL
Java_com_cirosantilli_android_1cheat_ndksyslog_MainActivity_stringFromJNI(
JNIEnv* env,
jobject /* this */) {
syslog(LOG_CRIT, "hello syslog");
return env->NewStringUTF("Check adb logcat");
}
Ve logcat şimdi içerir: https://github.com/cirosantilli/android-cheat/tree/a080f5c370c1f06e74a8300fb4a2e93369861047/gradle/NdkSyslog NDK kaynağıdır
01-14 15:39:07.582 3633 3633 E com.cirosantilli.android_cheat.ndksyslog: hello syslog
Android O üzerinde test, HiKey 960.
- 1. C programından çağrı komut satırı
- 2. Android jni GetMethID kilitlenme
- 3. Android JNI APK Paketleme
- 4. Android krom log
- 5. JNI Graphics nedir veya nasıl kullanılır?
- 6. Java programından Win32 API yöntemini çağırma
- 7. JNI
- 8. JNI
- 9. Android ClickableSpan arayarak çağrı yapmıyor
- 10. JNI (C++)
- 11. Qt programından çıkmanın doğru yolu?
- 12. Android cihazından gelen aramaları engelle Java/JNI
- 13. Android JNI - Call AttachCurrentThread olmadan DetachCurrentThread
- 14. Blackberry 10: Android Runtime ve JNI
- 15. BroadcastReceiver'dan MainActivity'de çağrı yöntemi - Android
- 16. Android 4.2.2 Gelen çağrı yayını
- 17. Harvest API-Çağrı tanımsız yöntemine HarvestAPI :: getActiveProjects
- 18. Log Parser
- 19. Bir komut satırı programından çıkmanın tercih edilen yolu nedir?
- 20. codeception - acking çağrı çağrı verileri
- 21. Android JNI yerel kod C++ nesneleri çöp toplama çağırmak mı?
- 22. jni ve Android.mk nasıl oluşturulur?
- 23. "Takılabilir" API nedir?
- 24. Jni Referans Tablosu taşması
- 25. Delphi - JNI Hatası
- 26. JNI ALGILANMIŞ HATASIZ UYGULAMA HATASI
- 27. Büyüme oranlarından hangisi (log * n) ve log * (log n) hangisi daha hızlıdır?
- 28. JNI programında jstring dönüşü
- 29. Java JNI - Java'da C++
- 30. Mac + jni + java
"-L $ (SYSROOT)/usr/lib "kısmı gerekli değildir, sadece" LOCAL_LDLIBS: = -llog "aynı şekilde çalışacaktır. Bunun için işe yaramazsa (benim gibi)) - Android.mk _after_ "LOCAL_LDLIBS: = -llog" satırında "$ (CLEAR_VARS)" satırı vardı, _before_ taşındı ve şimdi Tamam çalışıyor. – Mixaz
Sadece bu işe yaramazsa, aşağıdaki çözüme bakın. –
veya __android_log_print (ANDROID_LOG_INFO, "Etiket", "i% c,% x print% x", "t", 14, 15); –