print status-go logs in adb logcat
This commit is contained in:
parent
c2ef0e4547
commit
8137c802fe
|
@ -41,6 +41,7 @@ npm-debug.log
|
||||||
buck-out/
|
buck-out/
|
||||||
\.buckd/
|
\.buckd/
|
||||||
android/app/libs
|
android/app/libs
|
||||||
|
android/app/obj
|
||||||
android/keystores/debug.keystore
|
android/keystores/debug.keystore
|
||||||
|
|
||||||
# Generated by re-natal
|
# Generated by re-natal
|
||||||
|
|
|
@ -159,6 +159,8 @@ android {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sourceSets { main { jniLibs.srcDirs 'libs' } }
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
@ -204,3 +206,20 @@ task copyDownloadableDepsToLibs(type: Copy) {
|
||||||
|
|
||||||
// Must be at bottom to avoid dependency collision
|
// Must be at bottom to avoid dependency collision
|
||||||
apply plugin: "com.google.gms.google-services"
|
apply plugin: "com.google.gms.google-services"
|
||||||
|
|
||||||
|
task hemroidBuild(type: Exec) {
|
||||||
|
def rootDir = project.rootDir
|
||||||
|
def localProperties = new File(rootDir, "local.properties")
|
||||||
|
|
||||||
|
def ndkDir = "$System.env.ANDROID_NDK_HOME"
|
||||||
|
if (localProperties.exists()) {
|
||||||
|
Properties properties = new Properties()
|
||||||
|
localProperties.withInputStream { instr ->
|
||||||
|
properties.load(instr)
|
||||||
|
}
|
||||||
|
ndkDir = properties.getProperty('ndk.dir')
|
||||||
|
}
|
||||||
|
executable "$ndkDir/ndk-build"
|
||||||
|
}
|
||||||
|
|
||||||
|
preBuild.dependsOn hemroidBuild
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
LOCAL_PATH := $(call my-dir)
|
||||||
|
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := status-logs
|
||||||
|
LOCAL_SRC_FILES := Log.c
|
||||||
|
|
||||||
|
LOCAL_CPPFLAGS := -std=c++11 -fexceptions -I$(LOCAL_PATH)/include
|
||||||
|
LOCAL_LDFLAGS := -llog
|
||||||
|
|
||||||
|
include $(BUILD_SHARED_LIBRARY)
|
|
@ -0,0 +1,4 @@
|
||||||
|
APP_ABI := all
|
||||||
|
APP_PLATFORM := android-15
|
||||||
|
APP_STL := gnustl_static
|
||||||
|
NDK_TOOLCHAIN_VERSION=4.9
|
|
@ -0,0 +1,39 @@
|
||||||
|
// https://codelab.wordpress.com/2014/11/03/how-to-use-standard-output-streams-for-logging-in-android-apps/
|
||||||
|
#include <jni.h>
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <android/log.h>
|
||||||
|
|
||||||
|
static int pfd[2];
|
||||||
|
static pthread_t thr;
|
||||||
|
|
||||||
|
static void *thread_func(void* param)
|
||||||
|
{
|
||||||
|
ssize_t rdsz;
|
||||||
|
char buf[128];
|
||||||
|
while((rdsz = read(pfd[0], buf, sizeof buf - 1)) > 0) {
|
||||||
|
if(buf[rdsz - 1] == '\n') --rdsz;
|
||||||
|
buf[rdsz] = 0; /* add null-terminator */
|
||||||
|
__android_log_write(ANDROID_LOG_DEBUG, "StatusNativeLogs", buf);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved)
|
||||||
|
{
|
||||||
|
/* make stdout line-buffered and stderr unbuffered */
|
||||||
|
setvbuf(stdout, 0, _IOLBF, 0);
|
||||||
|
setvbuf(stderr, 0, _IONBF, 0);
|
||||||
|
|
||||||
|
/* create the pipe and redirect stdout and stderr */
|
||||||
|
pipe(pfd);
|
||||||
|
dup2(pfd[1], 1);
|
||||||
|
dup2(pfd[1], 2);
|
||||||
|
|
||||||
|
/* spawn the logging thread */
|
||||||
|
if(pthread_create(&thr, 0, thread_func, 0) == -1)
|
||||||
|
return JNI_VERSION_1_6; // fail silently
|
||||||
|
pthread_detach(thr);
|
||||||
|
|
||||||
|
return JNI_VERSION_1_6;
|
||||||
|
}
|
|
@ -115,6 +115,15 @@ public class MainActivity extends ReactActivity {
|
||||||
|
|
||||||
dialog.show();
|
dialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Thread thread = new Thread() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
System.loadLibrary("status-logs");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue