diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f8197426929f51016febf0b455f27a9cd1e269d..9b5d66abf2ef0b5f0a6041de50c42cc46e1c8830 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,6 @@ ohos 第二个版本: 3. c++文件移植生成so包 4. 实现日志存储到本地文件 5. 实现第一个版本遗留的问题 - * entry里的entry/libs/arm64-v8a/liblog4a-lib.so 来自依赖库编译,暂时不能删除需要保留使用,后续版本,持续优化 ## 0.0.1-SNAPSHOT ohos 第一个版本 diff --git a/entry/libs/arm64-v8a/liblog4a-lib.so b/entry/libs/arm64-v8a/liblog4a-lib.so deleted file mode 100644 index 8e8eed75ff93bae7c6204316882f4588a66ba25f..0000000000000000000000000000000000000000 Binary files a/entry/libs/arm64-v8a/liblog4a-lib.so and /dev/null differ diff --git a/log2file/src/main/cpp/log4a-lib.cpp b/log2file/src/main/cpp/log4a-lib.cpp index e30ee5754402714480421a2a0024a68117a7da2d..ec0841df244c6d5c718c6fbef15197b7021f9a00 100644 --- a/log2file/src/main/cpp/log4a-lib.cpp +++ b/log2file/src/main/cpp/log4a-lib.cpp @@ -1,7 +1,5 @@ #include -#include -#include #include #include #include @@ -18,17 +16,16 @@ static void writeDirtyLogToFile(int buffer_fd); static AsyncFileFlush *fileFlush = nullptr; -extern "C" -JNIEXPORT jlong JNICALL Java_me_pqpo_librarylog4a_initNative(JNIEnv *env, jclass type, jstring buffer_path_, +static jlong initNative(JNIEnv *env, jclass type, jstring buffer_path_, jint capacity, jstring log_path_, jboolean compress_) { + const char *buffer_path = env->GetStringUTFChars(buffer_path_, 0); const char *log_path = env->GetStringUTFChars(log_path_, 0); size_t buffer_size = static_cast(capacity); int buffer_fd = open(buffer_path, O_RDWR|O_CREAT, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); // buffer 的第一个字节会用于存储日志路径名称长度,后面紧跟日志路径,之后才是日志信息 - // AsyncFileFlushXX *pp = new AsyncFileFlushXX(); if (fileFlush == nullptr) { - fileFlush = new AsyncFileFlush(); + fileFlush = new AsyncFileFlush(); } // 加上头占用的大小 buffer_size = buffer_size + LogBufferHeader::calculateHeaderLen(strlen(log_path)); @@ -48,7 +45,6 @@ JNIEXPORT jlong JNICALL Java_me_pqpo_librarylog4a_initNative(JNIEnv *env, jclass env->ReleaseStringUTFChars(buffer_path_, buffer_path); env->ReleaseStringUTFChars(log_path_, log_path); return reinterpret_cast(logBuffer); -// return reinterpret_cast(10L); } static char* openMMap(int buffer_fd, size_t buffer_size) { @@ -86,9 +82,9 @@ static void writeDirtyLogToFile(int buffer_fd) { } } -extern "C" -JNIEXPORT JNICALL void Java_me_pqpo_librarylog4a_writeNative(JNIEnv *env, jobject instance, jlong ptr, +static void writeNative(JNIEnv *env, jobject instance, jlong ptr, jstring log_) { + const char *log = env->GetStringUTFChars(log_, 0); jsize log_len = env->GetStringUTFLength(log_); LogBuffer* logBuffer = reinterpret_cast(ptr); @@ -100,21 +96,16 @@ JNIEXPORT JNICALL void Java_me_pqpo_librarylog4a_writeNative(JNIEnv *env, jobjec env->ReleaseStringUTFChars(log_, log); } -#define LOG_TAG "jhx" - -extern "C" -JNIEXPORT JNICALL void Java_me_pqpo_librarylog4a_releaseNative(JNIEnv *env, jobject instance, jlong ptr) { +static void releaseNative(JNIEnv *env, jobject instance, jlong ptr) { LogBuffer* logBuffer = reinterpret_cast(ptr); logBuffer->async_flush(fileFlush, logBuffer); if (fileFlush != nullptr) { delete fileFlush; } fileFlush = nullptr; - HILOG_INFO(LOG_APP, "hello release native"); } -extern "C" -JNIEXPORT JNICALL void Java_me_pqpo_librarylog4a_changeLogPathNative(JNIEnv *env, jobject instance, jlong ptr, +static void changeLogPathNative(JNIEnv *env, jobject instance, jlong ptr, jstring logFilePath) { const char *log_path = env->GetStringUTFChars(logFilePath, 0); LogBuffer* logBuffer = reinterpret_cast(ptr); @@ -122,57 +113,55 @@ JNIEXPORT JNICALL void Java_me_pqpo_librarylog4a_changeLogPathNative(JNIEnv *env env->ReleaseStringUTFChars(logFilePath, log_path); } -extern "C" -JNIEXPORT JNICALL void Java_me_pqpo_librarylog4a_flushAsyncNative(JNIEnv *env, jobject instance, jlong ptr) { +static void flushAsyncNative(JNIEnv *env, jobject instance, jlong ptr) { LogBuffer* logBuffer = reinterpret_cast(ptr); logBuffer->async_flush(fileFlush); } -//static JNINativeMethod gMethods[] = { -// -// { -// "initNative", -// "(Ljava/lang/String;ILjava/lang/String;Z)J", -// (void*)initNative -// }, -// -// { -// "writeNative", -// "(JLjava/lang/String;)V", -// (void*)writeNative -// }, -// -// { -// "flushAsyncNative", -// "(J)V", -// (void*)flushAsyncNative -// }, -// -// { -// "changeLogPathNative", -// "(JLjava/lang/String;)V", -// (void*)changeLogPathNative -// }, -// -// { -// "releaseNative", -// "(J)V", -// (void*)releaseNative -// } -// -//}; -// -//extern "C" -//JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) { -// JNIEnv *env = NULL; -// if (vm->GetEnv((void **) &env, JNI_VERSION_1_4) != JNI_OK) { -// return JNI_FALSE; -// } -// jclass classDocScanner = env->FindClass(kClassDocScanner); -// if(env -> RegisterNatives(classDocScanner, gMethods, sizeof(gMethods)/ sizeof(gMethods[0])) < 0) { -// return JNI_FALSE; -// } -// return JNI_VERSION_1_4; -//} +static JNINativeMethod gMethods[] = { + + { + "initNative", + "(Ljava/lang/String;ILjava/lang/String;Z)J", + (void*)initNative + }, + + { + "writeNative", + "(JLjava/lang/String;)V", + (void*)writeNative + }, + + { + "flushAsyncNative", + "(J)V", + (void*)flushAsyncNative + }, + + { + "changeLogPathNative", + "(JLjava/lang/String;)V", + (void*)changeLogPathNative + }, + + { + "releaseNative", + "(J)V", + (void*)releaseNative + } +}; +extern "C" +JNIEXPORT jint JNICALL +JNI_OnLoad(JavaVM* vm, void* reserved) { + JNIEnv *env = NULL; + if (vm->GetEnv((void **) &env, JNI_VERSION_1_4) != JNI_OK) { + return JNI_FALSE; + } + jclass classDocScanner = env->FindClass(kClassDocScanner); + if(env -> RegisterNatives(classDocScanner, gMethods, sizeof(gMethods)/ sizeof(gMethods[0])) < 0) { + return JNI_FALSE; + } + return JNI_VERSION_1_4; +} \ No newline at end of file