diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 0000000000000000000000000000000000000000..f6543abd86eda79e84c2323833fd0d2a2f8b4c97 --- /dev/null +++ b/.clang-tidy @@ -0,0 +1,2 @@ +Checks: '*' + diff --git a/.gitignore b/.gitignore index 53a5e4c623b02a4ada971b9dc37f865f939bd1c4..40c4c05bbf4ecf47b9f46e36cbeea93e94e92c3a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,16 @@ +*.iml .gradle /local.properties -/.idea/workspace.xml +/.idea/caches /.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml .DS_Store /build /captures -.idea -*.iml -.externalNativeBuild/ +.externalNativeBuild +/entry/.preview +.cxx + diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..87dba96e05af23f75c047cfaedc27930b7c292b9 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,4 @@ +## 0.0.1-SNAPSHOT +ohos 第一个版本 + * 实现了原库的大部分 api + * 因为SDK不支持so包动态生成的原因,该库的FlushAsync LogFile方法没有实现 \ No newline at end of file diff --git a/History.md b/History.md deleted file mode 100644 index ff0458ca2bdb42acd70f8da6802f12805e9627d4..0000000000000000000000000000000000000000 --- a/History.md +++ /dev/null @@ -1,40 +0,0 @@ -* **1.0.0 (2015/07/13)** - - 打印对象,字符串,异常 - - 显示报错文件名、行数 -* **1.0.1 (2015/07/22)** - - 打印json字符串 -* **1.0.2 (2015/07/24)** - - 支持打印List、Se等数据集合 -* **1.0.3 (2015/07/24)** - - 支持打印Map集合 -* **1.0.4 (2015/07/25)** - - 支持打印数组(暂仅支持一维、二维数组) -* **1.0.6 (2015/08/28)** - - 修复打印字符串包含%s崩溃的bug -* **1.1.0 (2016/03/02)** - - 修复非Exception崩溃的错误 -* **1.2.0 (2016/03/09)** - - 支持android系统对象Bundle、Intent等打印 - - 优化设置选项 - - 支持多维数组 - - 支持自定义对象打印 - - 支持字符串超过4k打印 -* **1.2.1 (2016/03/14)** - - 支持Intent具体Flags显示 - - 修复自定义Parse和自带Parse优先级问题 -* **1.2.2 (2016/03/22)** - - 修复打印Reference类的bug -* **1.3.0 (2016/04/20)** - - 支持对象包含复杂对象,逻辑重构 -* **1.3.1 (2016/05/09)** - - 修复某些情况下出现死循环的情况 -* **1.4.0 (2016/05/19)** - - 支持设置临时tag - - 支持xml打印 - - 解决[issue 10](https://github.com/pengwei1024/LogUtils/issues/10)内部类问题 -* **1.4.2 (2016/05/23)** - - 个性化设置Tag(configFormatTag();) -* **1.4.3 ** - - 修复Instant Run下非静态内部类死循环情况 -* **1.5.1 (2017/03/31)** - - 支持自定义日志写入文件 \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..4e5d22e4c43711b5a3f878f8428092b3836b527e --- /dev/null +++ b/LICENSE @@ -0,0 +1,11 @@ + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/README.OPENSOURCE b/README.OPENSOURCE new file mode 100644 index 0000000000000000000000000000000000000000..ec228a5f6d7e682234d6bf84198dde2334134453 --- /dev/null +++ b/README.OPENSOURCE @@ -0,0 +1,19 @@ +[ + + { + + "Name": "LogUtils", + + "License": "Apache License", + + "License File": "LICENSE", + + "Version Number": "2.0", + + "Upstream URL": "https://github.com/pengwei1024/LogUtils", + + "Description": "更方便和易于使用的日志管理器" + + } + +] \ No newline at end of file diff --git a/README.md b/README.md index b321c3f397d0e38b2d708982226350587b63b05f..c22affffd9ce1cc039f3284c2a9b6f5f3f00f24a 100644 --- a/README.md +++ b/README.md @@ -1,53 +1,116 @@ # LogUtils -![](https://img.shields.io/badge/Logutil-1.7.5-blue.svg) -![Codecov](https://img.shields.io/badge/log2File-1.3.1-brightgreen.svg) - -#### More convenient and easy to use android Log manager - -## Features -* 支持直接打印数据集合, 如List、Set、Map、数组等 -* 全局配置log输出, 个性化设置Tag -* 准确显示调用方法、行,快速定位日志所在文件位置 -* 支持android系统复杂对象Intent、Bundle、Message等打印 -* 提供空实现 release-no-op版本 -* 支持高性能日志写入文件(基于mmap) -* 兼容Android Studio 3.1 日志格式 +#### 项目介绍 +- 项目名称:LogUtils日志管理器 +- 所属系列:openharmony化的第三方组件适配移植 +- 功能:支持直接打印数据集合, 如List、Set、Map、数组;全局配置log输出, 个性化设置Tag +- 基线版本:Release v1.5.1 +- 项目移植状态:主功能完成 +- 调用差异:无 +- 开发版本:sdk5,DevEco Studio2.1.0.301 beta4 + +#### 效果演示 + +#### 安装教程 + 1.在项目根目录下的build.gradle文件中, + allprojects { + repositories { + maven { + url 'https://s01.oss.sonatype.org/content/repositories/snapshots/' + } + } + } + 2.在entry模块的build.gradle文件中, + + dependencies { + implementation('com.gitee.chinasoft_ohos:LogUtils:0.0.1-SNAPSHOT') + ...... + } + +在sdk5,DevEco Studio2.1.0.301 beta4下项目可直接运行 +如无法运行,删除项目.gradle,.idea,build,gradle,build.gradle文件, +并依据自己的版本创建新项目,将新项目的对应文件复制到根目录下 + +#### 使用说明 +```java + // 输出字符串 +LogUtils.d("12345"); + +// 输出参数 +LogUtils.d("12%s3%d45", "a", 0); + +// 输出异常 +LogUtils.d(new NullPointerException("12345")); + +// 输出对象 +Person person = new Person(); +person.setAge(11); +person.setName("pengwei"); +person.setScore(37.5f); +LogUtils.d(person); + +// 对象为空 +LogUtils.d(null); + +// 输出json(json默认debug打印) +String json = "{'a':'b','c':{'aa':234,'dd':{'az':12}}}"; +LogUtils.json(json); + +// 打印数据集合 +List list1 = new ArrayList<>(); +for(int i = 0; i < 4; i++){ + list1.add(person); +} +LogUtils.d(list1); + +// 打印数组 +double[][] doubles = {{1.2, 1.6, 1.7, 30, 33}, + {1.2, 1.6, 1.7, 30, 33}, + {1.2, 1.6, 1.7, 30, 33}, + {1.2, 1.6, 1.7, 30, 33}}; +LogUtils.d(doubles); + +// 自定义tag +LogUtils.tag("我是自定义tag").d("我是打印内容"); + +// 其他用法 +LogUtils.v("12345"); +LogUtils.i("12345"); +LogUtils.w("12345"); +LogUtils.e("12345"); +LogUtils.wtf("12345"); +``` -## Usage -```groovy -implementation 'com.apkfuns.logutils:library:1.7.5' -``` +自定义MaterialSpinner控件,可以添加自定义属性,具体可用属性如下: -#### release-no-op版本 (debug输出日志, release空实现) -```groovy -debugImplementation 'com.apkfuns.logutils:library:1.7.5' -releaseImplementation 'com.apkfuns.logutils:logutils-no-op:1.7.5' -``` +| 方法 | 描述 | 取值 | 缺省 +|--------------------|----------------------|-----------------------------------|---------| +| configAllowLog | 是否允许日志输出 | boolean | true | +| configTagPrefix | 日志log的前缀 | String | "LogUtils" | +| configShowBorders | 是否显示边界 | boolean | false | +| configLevel | 日志显示等级 | LogLevelType | LogLevel.TYPE_VERBOSE| +| addParserClass | 自定义对象打印 |Parser | 无 | +| configFormatTag | 个性化设置Tag |String | %c{-5} | +| configMethodOffset | 方法偏移量 |int | 0 | -#### 日志写入到文件 (基于[Log4a](https://github.com/pqpo/Log4a)实现) +#### 测试信息 -```java -implementation 'com.apkfuns.log2file:log2file:1.3.1' +CodeCheck代码测试无异常 +CloudTest代码测试无异常 -// 设置日志写文件引擎 -LogUtils.getLog2FileConfig().configLogFileEngine(new LogFileEngineFactory(context)); -``` +火绒安全病毒安全检测通过 -别忘了添加写文件权限 +当前版本demo功能与原组件基本无差异 -``` - -``` +#### 版本迭代 -## Wiki -[使用教程](./README_USAGE.md) +0.0.1-SNAPSHOT +#### 版权和许可信息 -## License
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/README_USAGE.md b/README_USAGE.md
deleted file mode 100644
index c0cbf24fd6c8e98d8cf2f6a42ce9ae74e7acd140..0000000000000000000000000000000000000000
--- a/README_USAGE.md
+++ /dev/null
@@ -1,204 +0,0 @@
-# LogUtils
- 
-![](https://img.shields.io/badge/Logutil-1.7.5-blue.svg)
-![Codecov](https://img.shields.io/badge/log2File-1.3.0-brightgreen.svg)
-
-#### More convenient and easy to use android Log manager
-
-## 1. Features
-* 支持直接打印数据集合, 如List、Set、Map、数组等
-* 全局配置log输出, 个性化设置Tag
-* 准确显示调用方法、行,快速定位日志所在文件位置
-* 支持android系统复杂对象Intent、Bundle、Message等打印
-* 提供空实现 release-no-op版本
-* 支持高性能日志写入文件(基于mmap)
-* 兼容Android Studio 3.1 日志格式
-
-## 2. screenshot
-##### 日志说明
-![截图](screenshot/screenshot02.png)
-##### 个性化设置Tag
-![截图](screenshot/screenshot08.png)
-##### 打印数据列表
-![截图](screenshot/screenshot03.png)
-##### 打印数组
-![截图](screenshot/screenshot04.png)
-##### 打印对象本身属性和继承的属性
-![截图](screenshot/screenshot05.png)
-##### 打印系统对象Intent
-![截图](screenshot/screenshot06.png)
-
-## 3. Simple
-```java
-
-// 输出字符串
-LogUtils.d("12345");
-
-// 输出参数
-LogUtils.d("12%s3%d45", "a", 0);
-
-// 输出异常
-LogUtils.d(new NullPointerException("12345"));
-
-// 输出对象
-Person person = new Person();
-person.setAge(11);
-person.setName("pengwei");
-person.setScore(37.5f);
-LogUtils.d(person);
-
-// 对象为空
-LogUtils.d(null);
-
-// 输出json(json默认debug打印)
-String json = "{'a':'b','c':{'aa':234,'dd':{'az':12}}}";
-LogUtils.json(json);
-
-// 打印数据集合
-List list1 = new ArrayList<>();
-for(int i = 0; i < 4; i++){
-    list1.add(person);
-}
-LogUtils.d(list1);
-
-// 打印数组
-double[][] doubles = {{1.2, 1.6, 1.7, 30, 33},
-                {1.2, 1.6, 1.7, 30, 33},
-                {1.2, 1.6, 1.7, 30, 33},
-                {1.2, 1.6, 1.7, 30, 33}};
-LogUtils.d(doubles);
-
-// 自定义tag
-LogUtils.tag("我是自定义tag").d("我是打印内容");
-
-// 其他用法
-LogUtils.v("12345");
-LogUtils.i("12345");
-LogUtils.w("12345");
-LogUtils.e("12345");
-LogUtils.wtf("12345");
-```
-
-### options
-方法 | 描述 | 取值 | 缺省
-------- | ------- | ------- | -------
-configAllowLog | 是否允许日志输出 | boolean | true
-configTagPrefix | 日志log的前缀 | String | "LogUtils"
-configShowBorders | 是否显示边界 | boolean | false
-configLevel | 日志显示等级 | LogLevelType | LogLevel.TYPE_VERBOSE
-addParserClass | 自定义对象打印 | Parser | 无
-configFormatTag | 个性化设置Tag | String | %c{-5}
-configMethodOffset | 方法偏移量 | int | 0
-
-###### 写入日志文件参数
-方法 | 描述 | 取值 | 缺省
-------- | ------- | ------- | -------
-configLog2FileEnable | 是否支持写入文件 | boolean | false
-configLog2FilePath | 写入日志路径 | String | 无
-configLog2FileNameFormat | 写入日志文件名 | string | %d{yyyyMMdd}.txt
-configLog2FileLevel | 写入日志等级 | LogLevelType | LogLevel.TYPE_VERBOSE
-configLogFileEngine | 写入日志实现 | LogFileEngine | 无
-configLogFileFilter | 写入日志过滤 | LogFileFilter | 无
-
-##### Demo
-```java
-LogUtils.getLogConfig()
-                .configAllowLog(true)
-                .configTagPrefix("MyAppName")
-                .configShowBorders(true)
-                .configFormatTag("%d{HH:mm:ss:SSS} %t %c{-5}")
-
-# 支持写入日志到文件
- LogUtils.getLog2FileConfig().configLog2FileEnable(true)
-                // targetSdkVersion >= 23 需要确保有写sdcard权限
-                .configLog2FilePath("/sdcard/项目文件夹/logs/")
-                .configLog2FileNameFormat("%d{yyyyMMdd}.txt")
-                .configLogFileEngine(new LogFileEngineFactory());
-```
-
-##### configFormatTag参数详解
-变量 | 简写 | 描述  | 参数 | 示例 | 输出结果
-------- | ------- | -------   | -------  | ------- | -------
-%% | 无 | 转义% | 无|%%d|%d
-%date | %d | 当前时间  | 格式化时间,如HH:mm:ss|%d{HH:mm:ss:SSS}|10:00:46:238
-%thread | %t | 当前线程名称 | 无|%t|thread-127
-%caller | %c | 线程信息和类路径  |一般用%c{-5}就好了,用法为%c{整数}或者%caller{整数},整数为包名路径,如路径为`com.apkfuns.logutils.demo.MainActivity.onCreate(MainActivity.java:135)`,%c{1}输出`com`,以.分割的第一个,如果小于0就是排除前面n个,如%c{-1} ,结果为`apkfuns.logutils.demo.activity.MainActivity.onCreate(MainActivity.java:135)`,|%c{-5}|MainActivity.onCreate(MainActivity.java:135)
-
-##### 自定义对象打印
-实现Parser接口,并实现parseClassType() 和parseString()方法,再通过addParserClass()配置到LogUtil
-详细文档
-
-
-## 4. Usage
-
-### Gradle
-```groovy
-implementation 'com.apkfuns.logutils:library:1.7.5'
-```
-
-##### release-no-op版本
-```groovy
-debugImplementation 'com.apkfuns.logutils:library:1.7.5'
-releaseImplementation 'com.apkfuns.logutils:logutils-no-op:1.7.5'
-```
-
-#### 日志写入到文件
-- 依赖log2file库 (基于[Log4a](https://github.com/pqpo/Log4a)实现)
-
-```java
-implementation 'com.apkfuns.log2file:log2file:1.3.1'
-
-
-LogUtils.getLog2FileConfig().configLogFileEngine(new LogFileEngineFactory(context));
-```
-
-- 自己实现日志写入文件 (实现LogFileEngine接口)
-
-```java
-public class MyLogFileEngine implements LogFileEngine {
-
-    // logFlile 日志文件, logContent 日志内容,LogFileParam日志参数
-    @Override
-    public void writeToFile(File logFile, String logContent, LogFileParam params) {
-        ....
-    }
-}
-...
-LogUtils.getLog2FileConfig().configLogFileEngine(new MyLogFileEngine());
-```
-别忘了添加写文件权限
-
-```
-
-```
-
-#### mmap 日志原理
-- [高性能]日志优先写到内存映射文件,和写内存一样高效
-- [保证日志不丢失]日志超过4k立即写入文件,每次程序重新启动立即写入,或者端上调用`LogUtils.getLog2FileConfig().flushAsync()`立即写入
-
-
-## 5. Skills
-* [从Log切换到LogUtils](./doc/log_to_logutils.md)
-* [为LogUtils设置快捷键](./doc/logutils_templates.md)
-* [修改LogCat显示字体颜色](./doc/logcat_color.md)
-
-
-## 6. Thanks
-* thanks to [tinybright](https://github.com/tinybright)、[DrSlark](https://github.com/DrSlark)'s advice.
-* thanks to [wyouflf/xUtils](https://github.com/wyouflf/xUtils)、[orhanobut/logger](https://github.com/orhanobut/logger)、
-[ZhaoKaiQiang/KLog](https://github.com/ZhaoKaiQiang/KLog)、[noveogroup/android-logger](https://github.com/noveogroup/android-logger)
-
-## 7. License
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
diff --git a/build.gradle b/build.gradle index 12f8e7d5c6ab45ac6a01610c224a1184ec903323..1e96770b242aed1cb305b8ce0e7edfcfadeb88e8 100644 --- a/build.gradle +++ b/build.gradle @@ -1,60 +1,40 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. +apply plugin: 'com.huawei.ohos.app' + +ohos { + compileSdkVersion 5 + defaultConfig { + compatibleSdkVersion 4 + } +} + buildscript { repositories { - jcenter() - google() + maven { + url 'https://repo.huaweicloud.com/repository/maven/' + } + maven { + url 'https://developer.huawei.com/repo/' + } + jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.2' - classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.6' - classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1' - classpath 'me.tatarka:gradle-retrolambda:3.2.0' + classpath 'com.huawei.ohos:hap:2.4.2.7' + classpath 'com.huawei.ohos:decctest:1.0.0.6' } } + allprojects { repositories { - jcenter() - maven { url "https://jitpack.io" } - google() - } -} - -ext { - android = [ - compileSdkVersion : 27, - buildToolsVersion : "27.0.3", - minSdkVersion : 8, - targetSdkVersion : 22, - versionCode : 45, - versionName : "1.7.5", - releaseVersion: "1.7.5" - ] - file = [ - versionCode : 6, - versionName : "1.3.1", - releaseVersion: "1.3.1" - ] - exportApi = [ - versionCode : 10, - versionName : "1.1.8", - releaseVersion: "1.1.8" - ] -} - -// 发布 LogUtil 线上版本 -task publishLogRelease(dependsOn: [':library:bintrayUpload', ':logutils-no-op:bintrayUpload']) { - group 'publishing' - description 'publish log release version' - doLast { - println "publishRelease finish" - } -} - -// 发布完整线上版本,包含 log2File -task publishFullRelease(dependsOn: ['publishLogRelease', ':log2file:bintrayUpload']) { - group 'publishing' - description 'publish full release version (include log2File)' - doLast { - println "publishFullRelease finish" + maven { + url 'https://repo.huaweicloud.com/repository/maven/' + } + maven { + url 'https://developer.huawei.com/repo/' + } + maven { + url 'https://s01.oss.sonatype.org/content/repositories/snapshots/' + } + jcenter() } } diff --git a/doc/custom_parser.md b/doc/custom_parser.md deleted file mode 100644 index 6090dc55abc60d7ae78ee9a93d59c6c7e4e7a7de..0000000000000000000000000000000000000000 --- a/doc/custom_parser.md +++ /dev/null @@ -1,114 +0,0 @@ -## 自定义对象打印器 - -### 使用场景 -举个例子,网络请求如果用的OkHttp,经常需要看网络请求参数,如发送请求的内容Request,和服务器返回的内容 -Response,Request和Response都是一个复杂的对象,包含了诸多的内容,如header,params等等。Response默认toString() -输出内容如下,看不出什么东西。 -```xml -Response{protocol=http/1.1, code=200, message=OK, url=http://www.baidu.com/} -``` - -### 使用方法 -继承Parser类,并实现parseClassType()和String parseString(T t)两个方法。 - -### Demo -#### 请求代码 -```java -OkHttpClient client = new OkHttpClient(); - Request request = new Request.Builder() - .url("http://www.baidu.com").build(); - client.newCall(request).enqueue(new Callback() { - @Override - public void onFailure(Call call, IOException e) { - LogUtils.e(e); - } - - @Override - public void onResponse(Call call, Response response) throws IOException { - LogUtils.e(response); - } - }); -``` - -#### 自定义OkHttpResponseParse.java -```java -package com.apkfuns.logutils.demo.activity; - -import com.apkfuns.logutils.Parser; - -import java.io.IOException; - -import okhttp3.Headers; -import okhttp3.Response; - -/** - * Created by pengwei on 16/3/10. - */ -public class OkHttpResponseParse implements Parser { - @Override - public Class parseClassType() { - return Response.class; - } - - @Override - public String parseString(Response response) { - if (response != null) { - StringBuilder builder = new StringBuilder(); - builder.append(String.format("code = %s" + LINE_SEPARATOR, response.code())); - builder.append(String.format("isSuccessful = %s" + LINE_SEPARATOR, response.isSuccessful())); - builder.append(String.format("url = %s" + LINE_SEPARATOR, response.request().url())); - builder.append(String.format("message = %s" + LINE_SEPARATOR, response.message())); - builder.append(String.format("protocol = %s" + LINE_SEPARATOR, response.protocol())); - builder.append(String.format("header = %s" + LINE_SEPARATOR, - new HeaderParse().parseString(response.headers()))); - try { - builder.append(String.format("body = %s" + LINE_SEPARATOR, response.body().string())); - } catch (IOException e) { - e.printStackTrace(); - } - return builder.toString(); - } - return null; - } -} -``` - -#### 自定义HeaderParse.java -```java -package com.apkfuns.logutils.demo.activity; - -import com.apkfuns.logutils.Parser; - -import okhttp3.Headers; - -/** - * Created by pengwei on 16/3/10. - */ -public class HeaderParse implements Parser { - @Override - public Class parseClassType() { - return Headers.class; - } - - @Override - public String parseString(Headers headers) { - StringBuilder builder = new StringBuilder(headers.getClass().getSimpleName() + " [" + LINE_SEPARATOR); - for (String name : headers.names()) { - builder.append(String.format("%s = %s" + LINE_SEPARATOR, - name, headers.get(name))); - } - return builder.append("]").toString(); - } -} -``` - -#### 在Application中设置LogUtils解析Parse -```java -LogUtils.getLogConfig().addParserClass(OkHttpResponseParse.class); -``` - - -### 结果展示 -![截图](../screenshot/screenshot07.png) - - diff --git a/doc/log_to_logutils.md b/doc/log_to_logutils.md deleted file mode 100644 index 0163c089022dd465c7779c55a1e38b4f169c4816..0000000000000000000000000000000000000000 --- a/doc/log_to_logutils.md +++ /dev/null @@ -1,74 +0,0 @@ -# 从Log切换到LogUtils - -也没有想到特别好的方法,提供一种`全局正则替换`的方法。
-如果代码不规范可能无法匹配。
-替换可能出现不完整的情况,所有请在执行替换前将当前代码进行`备份` - -##### 项目根目录右键选择Replace in path -
-##### 输入匹配的正则表达式 -
-##### 选择全部文件替换 -
- -### 替换Log.*(TAG, String) & Log.*(TAG, String, Throwable) - -``` -# 匹配的正则 -Log[\n|\r|\s]*\.[\n|\r|\s]*(d|e|i|v|wtf|w)[\n|\r|\s]*\([\n|\r|\s]*(.*[\n|\r|\s]*.*)[\n|\r|\s]*,[\n|\r|\s]*(.*)[\n|\r|\s]*\); - -# 替换的正则 -LogUtils.$1($3); -``` - -

已经支持的写法,欢迎补充

-```java -Log.d("abc", "123"); - -Log .d("abc", "123"); - -Log. d("abc", "123"); - -Log.wtf("abc", "123"); - -Log.e (TAG, "123"); - -Log.i(TAG, value); - -Log.i(TAG, value ); - -Log.e(TAG, "123", new Exception()); - -Log.e(TAG, "123", - new Exception()); - -Log.e(TAG, - - "123", - - new Exception()); - -Log.d("abc", String.valueOf(1)); - -Log.wtf("abc", String.valueOf(1)); -``` - -

暂时不支持写法

-```java -// 输入内容包含多个的','号 -Log.wtf("abc", String.format("abcd%s", "a")); - -// 内容包含 +/- 等特殊符号 -Log.wtf("abc", String.valueOf(1) + "add"); -``` - - -### 替换import -```java -import android.util.Log; -``` - -替换为 -```java -import com.apkfuns.logutils.LogUtils; -``` \ No newline at end of file diff --git a/doc/logcat_color.md b/doc/logcat_color.md deleted file mode 100644 index 54c06ca8b9c9d2de540b3f365039727e12132374..0000000000000000000000000000000000000000 --- a/doc/logcat_color.md +++ /dev/null @@ -1,37 +0,0 @@ -# 修改LogCat显示字体颜色 - -给Logcat换一个颜色吧,是不是看起来更舒服呢
-![效果图](../screenshot/logcat/android-studio-logcat.png) - -打开到Android LogCat设置目录 -``` -Preferences ==> Editor ==> Colors & Fonts ==> Android Logcat -``` -或者 -``` -Preferences ==> 搜索logcat -``` -![设置颜色](../screenshot/logcat/android-studio-logcat2.png) - - -### 推荐颜色 -#### 白色主题 -``` -Verbose: #000000 -Debug: #00007F -Info: #027F00 -Warn: #FF7F00 -Error: #FF0000 -Assert: #FF0000 -``` - - -#### 黑色主题 -``` -Verbose: #FFFFFF -Debug: #33B5E5 -Info: #99CC00 -Warn: #FFBB33 -Error: #FF4444 -Assert: #AA66CC -``` \ No newline at end of file diff --git a/doc/logutils_templates.md b/doc/logutils_templates.md deleted file mode 100644 index 4ad89dd0eb5317a1fe2c049d5023eff1691b0dd5..0000000000000000000000000000000000000000 --- a/doc/logutils_templates.md +++ /dev/null @@ -1,13 +0,0 @@ -# Android Studio为LogUtils设置快捷键 - -参考自https://www.zybuluo.com/shark0017/note/163330
- -android studio --> preferences --> 搜索live --> 选中Live Templates --> Android Log ---> 点击+号 --> Live Templates -
-
-
- - - - diff --git a/export-api/.gitignore b/entry/.gitignore similarity index 100% rename from export-api/.gitignore rename to entry/.gitignore diff --git a/entry/build.gradle b/entry/build.gradle new file mode 100644 index 0000000000000000000000000000000000000000..4d7b19497ed894b768116fe3b6a8748735057389 --- /dev/null +++ b/entry/build.gradle @@ -0,0 +1,29 @@ +apply plugin: 'com.huawei.ohos.hap' +apply plugin: 'com.huawei.ohos.decctest' +ohos { + compileSdkVersion 5 + defaultConfig { + compatibleSdkVersion 4 + } + buildTypes { + release { + proguardOpt { + proguardEnabled false + rulesFiles 'proguard-rules.pro' + } + } + } + +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar', '*.har']) + implementation('com.gitee.chinasoft_ohos:LogUtils:0.0.1-SNAPSHOT') + implementation project(path: ':export_api') + testImplementation 'junit:junit:4.13' + ohosTestImplementation 'com.huawei.ohos.testkit:runner:1.0.0.100' + implementation 'com.squareup.okhttp3:okhttp:3.2.0' +} +decc { + supportType = ['html','xml'] +} diff --git a/entry/libs/log2file-debug.aar b/entry/libs/log2file-debug.aar new file mode 100644 index 0000000000000000000000000000000000000000..069138e1ca61ff8a87490fb5296a3b79176927d2 Binary files /dev/null and b/entry/libs/log2file-debug.aar differ diff --git a/entry/module_entry.xml b/entry/module_entry.xml new file mode 100644 index 0000000000000000000000000000000000000000..485f318e3d19ae64a7644a8d847e721f100f0100 --- /dev/null +++ b/entry/module_entry.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/entry/proguard-rules.pro b/entry/proguard-rules.pro new file mode 100644 index 0000000000000000000000000000000000000000..f7666e47561d514b2a76d5a7dfbb43ede86da92a --- /dev/null +++ b/entry/proguard-rules.pro @@ -0,0 +1 @@ +# config module specific ProGuard rules here. \ No newline at end of file diff --git a/entry/src/main/config.json b/entry/src/main/config.json new file mode 100644 index 0000000000000000000000000000000000000000..83d4198c955abbc8dcd776ab505eb154f9cfc3c9 --- /dev/null +++ b/entry/src/main/config.json @@ -0,0 +1,48 @@ +{ + "app": { + "bundleName": "com.apkfuns.logutils", + "vendor": "apkfuns", + "version": { + "code": 1, + "name": "1.0" + }, + "apiVersion": { + "compatible": 4, + "target": 5 + } + }, + "deviceConfig": {}, + "module": { + "package": "com.apkfuns.logutils", + "name": "com.apkfuns.demo.MyApplication", + "deviceType": [ + "phone" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "entry", + "moduleType": "entry" + }, + "abilities": [ + { + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ], + "orientation": "unspecified", + "name": "com.apkfuns.demo.MainAbility", + "icon": "$media:icon", + "description": "$string:mainability_description", + "label": "$string:app_name", + "type": "page", + "launchType": "standard" + } + ] + } +} \ No newline at end of file diff --git a/entry/src/main/cpp/CMakeLists.txt b/entry/src/main/cpp/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..805b6afe1b6236a02d9a497b6ce7afce8d9687b9 --- /dev/null +++ b/entry/src/main/cpp/CMakeLists.txt @@ -0,0 +1,6 @@ +# the minimum version of CMake. +cmake_minimum_required(VERSION 3.4.1) +project(HM_LogUtils_master) + +add_library(hello SHARED hello.cpp) +target_link_libraries(hello) \ No newline at end of file diff --git a/entry/src/main/cpp/hello.cpp b/entry/src/main/cpp/hello.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9265c7a7232d39c0d65ec882591eb79bb82ef73a --- /dev/null +++ b/entry/src/main/cpp/hello.cpp @@ -0,0 +1,13 @@ +#include +#include + +extern "C" JNIEXPORT jstring JNICALL +Java_com_huawei_view_testnative_slice_MainAbilitySlice_stringFromJNI(JNIEnv* env, jobject obj) { + std::string hello = "Hello from JNI C++ codes"; + int len = hello.size(); + jchar res[len]; + for (int i = 0; i < len; i++) { + res[i] = (jchar) hello[i]; + } + return env->NewString(res, len); +} diff --git a/entry/src/main/java/com/apkfuns/demo/MainAbility.java b/entry/src/main/java/com/apkfuns/demo/MainAbility.java new file mode 100644 index 0000000000000000000000000000000000000000..fde71881a25ecba25fb4a6d35434331e34bba28b --- /dev/null +++ b/entry/src/main/java/com/apkfuns/demo/MainAbility.java @@ -0,0 +1,17 @@ +package com.apkfuns.demo; + +import com.apkfuns.demo.slice.MainAbilitySlice; +import ohos.aafwk.ability.Ability; +import ohos.aafwk.content.Intent; + +public class MainAbility extends Ability { + @Override + public void onStart(Intent intent) { + super.onStart(intent); + super.setMainRoute(MainAbilitySlice.class.getName()); + + } +} + + + diff --git a/entry/src/main/java/com/apkfuns/demo/MyApplication.java b/entry/src/main/java/com/apkfuns/demo/MyApplication.java new file mode 100644 index 0000000000000000000000000000000000000000..38318b6191e0b38a246359ec018581c8505ea2a0 --- /dev/null +++ b/entry/src/main/java/com/apkfuns/demo/MyApplication.java @@ -0,0 +1,17 @@ +package com.apkfuns.demo; +import com.apkfuns.logutils.LogLevel; +import com.apkfuns.logutils.LogUtils; +import ohos.aafwk.ability.AbilityPackage; + +public class MyApplication extends AbilityPackage { + @Override + public void onInitialize() { + super.onInitialize(); + LogUtils.getLogConfig() + .configAllowLog(true)// 是否在Logcat显示日志 + .configTagPrefix("LogUtilsDemo") // 配置统一的TAG 前缀 + .configFormatTag("%d{HH:mm:ss:SSS} %t %c{-5}")// 首行显示信息(可配置日期,线程等等) + .configShowBorders(true) // 是否显示边框 + .configLevel(LogLevel.TYPE_VERBOSE); // 配置可展示日志等级 + } +} \ No newline at end of file diff --git a/sample/src/main/java/com/apkfuns/logutils/demo/helper/DataHelper.java b/entry/src/main/java/com/apkfuns/demo/helper/DataHelper.java similarity index 84% rename from sample/src/main/java/com/apkfuns/logutils/demo/helper/DataHelper.java rename to entry/src/main/java/com/apkfuns/demo/helper/DataHelper.java index ff78a099c3e04250500f95bd26beed19c8052b51..f485a5c149ea1ef29b5cf517f7ac0983f01ae6e3 100644 --- a/sample/src/main/java/com/apkfuns/logutils/demo/helper/DataHelper.java +++ b/entry/src/main/java/com/apkfuns/demo/helper/DataHelper.java @@ -1,28 +1,26 @@ -package com.apkfuns.logutils.demo.helper; +package com.apkfuns.demo.helper; -import android.content.Context; - -import com.apkfuns.logutils.demo.model.Man; -import com.apkfuns.logutils.demo.model.Node; -import com.apkfuns.logutils.demo.model.OldMan; -import com.apkfuns.logutils.demo.model.Person; +import com.apkfuns.demo.modle.Man; +import com.apkfuns.demo.modle.Node; +import com.apkfuns.demo.modle.OldMan; +import com.apkfuns.demo.modle.Person; +import ohos.app.Context; +import ohos.global.resource.RawFileEntry; +import ohos.global.resource.Resource; +import ohos.global.resource.ResourceManager; import java.io.IOException; -import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -/** - * Created by pengwei on 16/3/8. - */ public final class DataHelper { /** * 获取对象 * - * @return + * @return person */ public static Person getObject() { Person person = new Person(); @@ -35,7 +33,7 @@ public final class DataHelper { /** * 对象List * - * @return + * @return list */ public static List getObjectList() { List list = new ArrayList<>(); @@ -109,7 +107,7 @@ public final class DataHelper { /** * 获取json对象 * - * @return + * @return person */ public static String getJson() { @@ -141,14 +139,18 @@ public final class DataHelper { */ public static String getBigString(Context context) { try { - InputStream is = context.getAssets().open("city.json"); + // 获取资源管理器 + ResourceManager resourceManager = context.getResourceManager(); + RawFileEntry rawFileEntry = resourceManager.getRawFileEntry("resources/rawfile/city.json"); + Resource resource = rawFileEntry.openRawFile(); StringBuilder sb = new StringBuilder(); int len; - byte[] buf = new byte[is.available()]; - while ((len = is.read(buf)) != -1) { + byte[] buf = new byte[resource.available()]; + while ((len = resource.read(buf)) != -1) { sb.append(new String(buf, 0, len, "utf-8")); } return sb.toString(); + } catch (IOException e) { e.printStackTrace(); } @@ -161,7 +163,7 @@ public final class DataHelper { * * @param leftNode * @param rightNode - * @return + * @return node */ public static Node getNode(String leftNode, String rightNode) { Node node = new Node("parent Node"); @@ -179,4 +181,4 @@ public final class DataHelper { return "name30name27"; } -} +} \ No newline at end of file diff --git a/sample/src/main/java/com/apkfuns/logutils/demo/model/Child.java b/entry/src/main/java/com/apkfuns/demo/modle/Child.java similarity index 91% rename from sample/src/main/java/com/apkfuns/logutils/demo/model/Child.java rename to entry/src/main/java/com/apkfuns/demo/modle/Child.java index e62dee6c4060a8a628a565632e4cc0ef7c5b69d5..9ff7ad01b829a3cf0e319d2415e12e298bc00677 100644 --- a/sample/src/main/java/com/apkfuns/logutils/demo/model/Child.java +++ b/entry/src/main/java/com/apkfuns/demo/modle/Child.java @@ -1,4 +1,4 @@ -package com.apkfuns.logutils.demo.model; +package com.apkfuns.demo.modle; /** * Created by pengwei on 16/3/22. diff --git a/sample/src/main/java/com/apkfuns/logutils/demo/model/FakeBounty.java b/entry/src/main/java/com/apkfuns/demo/modle/FakeBounty.java similarity index 93% rename from sample/src/main/java/com/apkfuns/logutils/demo/model/FakeBounty.java rename to entry/src/main/java/com/apkfuns/demo/modle/FakeBounty.java index 0737fa376373807f7e35abdea35e3b7b8e65c47e..31f3f95cf82126ef9a74f92884a43093dec87c1d 100644 --- a/sample/src/main/java/com/apkfuns/logutils/demo/model/FakeBounty.java +++ b/entry/src/main/java/com/apkfuns/demo/modle/FakeBounty.java @@ -1,4 +1,4 @@ -package com.apkfuns.logutils.demo.model; +package com.apkfuns.demo.modle; import com.apkfuns.logutils.LogUtils; diff --git a/sample/src/main/java/com/apkfuns/logutils/demo/model/Fruit.java b/entry/src/main/java/com/apkfuns/demo/modle/Fruit.java similarity index 92% rename from sample/src/main/java/com/apkfuns/logutils/demo/model/Fruit.java rename to entry/src/main/java/com/apkfuns/demo/modle/Fruit.java index ca365ef36fd566b8f5de61da581e96f308c77c97..144a38692986d3425cb114577db2501d8a5bbec0 100644 --- a/sample/src/main/java/com/apkfuns/logutils/demo/model/Fruit.java +++ b/entry/src/main/java/com/apkfuns/demo/modle/Fruit.java @@ -1,4 +1,4 @@ -package com.apkfuns.logutils.demo.model; +package com.apkfuns.demo.modle; /** * Created by pengwei on 16/4/18. @@ -7,6 +7,7 @@ public class Fruit { private String name; private boolean canEat; + public Fruit(String name, boolean canEat) { this.name = name; this.canEat = canEat; diff --git a/sample/src/main/java/com/apkfuns/logutils/demo/model/Man.java b/entry/src/main/java/com/apkfuns/demo/modle/Man.java similarity index 84% rename from sample/src/main/java/com/apkfuns/logutils/demo/model/Man.java rename to entry/src/main/java/com/apkfuns/demo/modle/Man.java index d811e2aa55f33d79fb4212cee78c888f62dd4640..29f0921342b10ddf284d87b3dff4d2ea2b66f99b 100644 --- a/sample/src/main/java/com/apkfuns/logutils/demo/model/Man.java +++ b/entry/src/main/java/com/apkfuns/demo/modle/Man.java @@ -1,6 +1,7 @@ -package com.apkfuns.logutils.demo.model; +package com.apkfuns.demo.modle; -import com.apkfuns.logutils.demo.helper.DataHelper; + +import com.apkfuns.demo.helper.DataHelper; import java.util.ArrayList; import java.util.List; diff --git a/sample/src/main/java/com/apkfuns/logutils/demo/model/MulObject.java b/entry/src/main/java/com/apkfuns/demo/modle/MulObject.java similarity index 83% rename from sample/src/main/java/com/apkfuns/logutils/demo/model/MulObject.java rename to entry/src/main/java/com/apkfuns/demo/modle/MulObject.java index c79e375a54989e82b539e9c5d9a10e52b30a8382..82808a0d73131090a0a760b190d978e0e6d45fc9 100644 --- a/sample/src/main/java/com/apkfuns/logutils/demo/model/MulObject.java +++ b/entry/src/main/java/com/apkfuns/demo/modle/MulObject.java @@ -1,7 +1,7 @@ -package com.apkfuns.logutils.demo.model; +package com.apkfuns.demo.modle; -import com.apkfuns.logutils.demo.helper.DataHelper; +import com.apkfuns.demo.helper.DataHelper; import java.util.List; diff --git a/sample/src/main/java/com/apkfuns/logutils/demo/model/Node.java b/entry/src/main/java/com/apkfuns/demo/modle/Node.java similarity index 93% rename from sample/src/main/java/com/apkfuns/logutils/demo/model/Node.java rename to entry/src/main/java/com/apkfuns/demo/modle/Node.java index 85d9779591489c08b49b70ed172f3817955e4f56..237989a635ed9937efc42941263b733c527a17b5 100644 --- a/sample/src/main/java/com/apkfuns/logutils/demo/model/Node.java +++ b/entry/src/main/java/com/apkfuns/demo/modle/Node.java @@ -1,4 +1,4 @@ -package com.apkfuns.logutils.demo.model; +package com.apkfuns.demo.modle; /** * Created by pengwei on 16/3/22. diff --git a/sample/src/main/java/com/apkfuns/logutils/demo/model/OldMan.java b/entry/src/main/java/com/apkfuns/demo/modle/OldMan.java similarity index 82% rename from sample/src/main/java/com/apkfuns/logutils/demo/model/OldMan.java rename to entry/src/main/java/com/apkfuns/demo/modle/OldMan.java index 1f2272e5c00441e5e73a68ad3dcddca448b4909c..137c54a6586f35eb67a669b9708871a60b389f4c 100644 --- a/sample/src/main/java/com/apkfuns/logutils/demo/model/OldMan.java +++ b/entry/src/main/java/com/apkfuns/demo/modle/OldMan.java @@ -1,4 +1,4 @@ -package com.apkfuns.logutils.demo.model; +package com.apkfuns.demo.modle; /** * Created by pengwei on 16/3/9. diff --git a/sample/src/main/java/com/apkfuns/logutils/demo/model/Person.java b/entry/src/main/java/com/apkfuns/demo/modle/Person.java similarity index 93% rename from sample/src/main/java/com/apkfuns/logutils/demo/model/Person.java rename to entry/src/main/java/com/apkfuns/demo/modle/Person.java index 4114c30e419d2fa3a3df9961b0426336dab6dcc8..75ec9df618c127b111a160e79cd3e0600093c3e3 100644 --- a/sample/src/main/java/com/apkfuns/logutils/demo/model/Person.java +++ b/entry/src/main/java/com/apkfuns/demo/modle/Person.java @@ -1,4 +1,4 @@ -package com.apkfuns.logutils.demo.model; +package com.apkfuns.demo.modle; import java.io.Serializable; diff --git a/sample/src/main/java/com/apkfuns/logutils/demo/parse/HeaderParse.java b/entry/src/main/java/com/apkfuns/demo/parse/HeaderParse.java similarity index 89% rename from sample/src/main/java/com/apkfuns/logutils/demo/parse/HeaderParse.java rename to entry/src/main/java/com/apkfuns/demo/parse/HeaderParse.java index c1b57f78429dd753c79755394bb4335ffed874a4..8871940ca0de713516196b6c7c671e0a537416c2 100644 --- a/sample/src/main/java/com/apkfuns/logutils/demo/parse/HeaderParse.java +++ b/entry/src/main/java/com/apkfuns/demo/parse/HeaderParse.java @@ -1,13 +1,13 @@ -package com.apkfuns.logutils.demo.parse; +package com.apkfuns.demo.parse; -import android.support.annotation.NonNull; +import com.apkfuns.logutils.NonNull; import com.apkfuns.logutils.Parser; - import okhttp3.Headers; + /** * Created by pengwei on 16/3/10. */ diff --git a/sample/src/main/java/com/apkfuns/logutils/demo/parse/OkHttpResponseParse.java b/entry/src/main/java/com/apkfuns/demo/parse/OkHttpResponseParse.java similarity index 93% rename from sample/src/main/java/com/apkfuns/logutils/demo/parse/OkHttpResponseParse.java rename to entry/src/main/java/com/apkfuns/demo/parse/OkHttpResponseParse.java index dcb8315deaf6412cf1992222044243cb724fc7b2..5ee0ec7b1d1a20b7f9e71e24dfc3076475e9033d 100644 --- a/sample/src/main/java/com/apkfuns/logutils/demo/parse/OkHttpResponseParse.java +++ b/entry/src/main/java/com/apkfuns/demo/parse/OkHttpResponseParse.java @@ -1,12 +1,12 @@ -package com.apkfuns.logutils.demo.parse; +package com.apkfuns.demo.parse; -import android.support.annotation.NonNull; +import com.apkfuns.logutils.NonNull; import com.apkfuns.logutils.Parser; +import okhttp3.Response; import java.io.IOException; -import okhttp3.Response; /** * Created by pengwei on 16/3/10. diff --git a/entry/src/main/java/com/apkfuns/demo/service/MultiProcessService.java b/entry/src/main/java/com/apkfuns/demo/service/MultiProcessService.java new file mode 100644 index 0000000000000000000000000000000000000000..b6a715fad3e64376efb402c17c62414a99e9ddab --- /dev/null +++ b/entry/src/main/java/com/apkfuns/demo/service/MultiProcessService.java @@ -0,0 +1,17 @@ +package com.apkfuns.demo.service; + +import ohos.aafwk.ability.Ability; +import ohos.aafwk.content.Intent; +import ohos.rpc.IRemoteObject; + +public class MultiProcessService extends Ability { + @Override + protected void onStart(Intent intent) { + super.onStart(intent); + } + + @Override + protected IRemoteObject onConnect(Intent intent) { + return super.onConnect(intent); + } +} diff --git a/entry/src/main/java/com/apkfuns/demo/slice/MainAbilitySlice.java b/entry/src/main/java/com/apkfuns/demo/slice/MainAbilitySlice.java new file mode 100644 index 0000000000000000000000000000000000000000..ed9bbf94b9d25f55d5bbd3c94918823e92091859 --- /dev/null +++ b/entry/src/main/java/com/apkfuns/demo/slice/MainAbilitySlice.java @@ -0,0 +1,101 @@ +package com.apkfuns.demo.slice; + +import com.apkfuns.demo.utils.ThreadLog; +import com.apkfuns.logutils.LogUtils; +import com.apkfuns.logutils.ResourceTable; +import com.apkfuns.demo.helper.DataHelper; +import ohos.aafwk.ability.AbilitySlice; +import ohos.aafwk.content.Intent; +import ohos.aafwk.content.Operation; +import ohos.agp.components.Component; +import ohos.agp.components.ComponentContainer; + +public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener{ + String[] permission = new String[]{ + "ohos.permission.WRITE_USER_STORAGE", + "ohos.permission.READ_USER_STORAGE", + }; + @Override + public void onStart(Intent intent) { + super.onStart(intent); + super.setUIContent(ResourceTable.Layout_ability_main); + requestPermissionsFromUser(permission,0); + ComponentContainer container = (ComponentContainer) findComponentById(ResourceTable.Id_container); + for (int i = 0; i < container.getChildCount(); i++) { + container.getComponentAt(i).setTag(i); + container.getComponentAt(i).setClickedListener(this); + } + // 进行多进程测试 + Operation operation = new Intent.OperationBuilder() + .withDeviceId("") + .withBundleName("com.apkfuns.demo.slice") + .withAbilityName("com.apkfuns.demo.service") + .build(); + intent.setOperation(operation); + startAbility(intent); + } + + + @Override + public void onActive() { + super.onActive(); + } + + @Override + public void onForeground(Intent intent) { + super.onForeground(intent); + } + + @Override + public void onClick(Component component) { + switch (((int) component.getTag())) { + case 0: + logString(); + break; + case 1: + logBigString(); + break; + case 2: + logThred(); + break; + case 3: + LogUtils.getLog2FileConfig().flushAsync(); + break; + case 4: + logIntent(); + break; + default: + break; + } + } + + + private void logString() { + LogUtils.d("12345!!"); + } + + private void logBigString() { + LogUtils.i(DataHelper.getBigString(this)); + } + + private void logThred() { + new ThreadLog("thread1", "msg from 1").start(); + new ThreadLog("thread2", "msg from 2").start(); + new ThreadLog("thread3", "msg from 3").start(); + } + + private void logIntent() { + Intent intent = new Intent(); + Operation operation = new Intent.OperationBuilder() + .withDeviceId("") + .withBundleName("com.apkfuns.demo.slice") + .withAbilityName("com.apkfuns.demo.service.MainAbility") + .build(); + intent.setOperation(operation); + startAbility(intent); + intent.addFlags(Intent.FLAG_ABILITY_NEW_MISSION); + LogUtils.i(intent); + } + + +} diff --git a/sample/src/main/java/com/apkfuns/logutils/demo/utils/ThreadLog.java b/entry/src/main/java/com/apkfuns/demo/utils/ThreadLog.java similarity index 89% rename from sample/src/main/java/com/apkfuns/logutils/demo/utils/ThreadLog.java rename to entry/src/main/java/com/apkfuns/demo/utils/ThreadLog.java index 72a8c026aa6be21b5efde30336c042f9f52193b0..7aa18f3aa08b93b59746953fae50d1116663fb5a 100644 --- a/sample/src/main/java/com/apkfuns/logutils/demo/utils/ThreadLog.java +++ b/entry/src/main/java/com/apkfuns/demo/utils/ThreadLog.java @@ -1,4 +1,4 @@ -package com.apkfuns.logutils.demo.utils; +package com.apkfuns.demo.utils; import com.apkfuns.logutils.LogUtils; diff --git a/entry/src/main/java/com/apkfuns/demo/utils/Utils.java b/entry/src/main/java/com/apkfuns/demo/utils/Utils.java new file mode 100644 index 0000000000000000000000000000000000000000..24c72c36c9cf582d7a53b3fd662c43deff513e67 --- /dev/null +++ b/entry/src/main/java/com/apkfuns/demo/utils/Utils.java @@ -0,0 +1,15 @@ +package com.apkfuns.demo.utils; + +import ohos.app.AbilityContext; +import ohos.app.Context; + + +public class Utils extends AbilityContext{ + Context context; + public Utils(Context context){ + this.context = context; + } + public String mgetProcessName() { + return this.getProcessName(); + } +} diff --git a/log2file/src/main/java/com/apkfuns/log2file/LogFileEngineFactory.java b/entry/src/main/java/com/apkfuns/log2file/LogFileEngineFactory.java similarity index 87% rename from log2file/src/main/java/com/apkfuns/log2file/LogFileEngineFactory.java rename to entry/src/main/java/com/apkfuns/log2file/LogFileEngineFactory.java index 28eabbac310ae28a7bf8fac3369a7f067fdd72c7..15d8a0ed2c1ad7f6d6757dc67b2b642bb61636da 100644 --- a/log2file/src/main/java/com/apkfuns/log2file/LogFileEngineFactory.java +++ b/entry/src/main/java/com/apkfuns/log2file/LogFileEngineFactory.java @@ -1,19 +1,20 @@ package com.apkfuns.log2file; -import android.content.Context; -import android.support.annotation.NonNull; + import com.apkfuns.logutils.LogLevel; +import com.apkfuns.logutils.NonNull; import com.apkfuns.logutils.file.LogFileEngine; import com.apkfuns.logutils.file.LogFileParam; import java.io.File; +import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; - import me.pqpo.librarylog4a.LogBuffer; +import ohos.app.Context; /** * Created by pengwei on 2017/3/30. @@ -42,8 +43,12 @@ public class LogFileEngineFactory implements LogFileEngine { synchronized (LogFileEngine.class) { if (buffer == null) { File bufferFile = new File(context.getFilesDir(), ".log4aCache"); - buffer = new LogBuffer(bufferFile.getAbsolutePath(), 4096, - logFile.getAbsolutePath(), false); + try { + buffer = new LogBuffer(bufferFile.getCanonicalPath(), 4096, + logFile.getCanonicalPath(), false); + } catch (IOException e) { + e.printStackTrace(); + } } } } diff --git a/log2file/src/main/java/me/pqpo/librarylog4a/LogBuffer.java b/entry/src/main/java/me/pqpo/librarylog4a/LogBuffer.java old mode 100755 new mode 100644 similarity index 88% rename from log2file/src/main/java/me/pqpo/librarylog4a/LogBuffer.java rename to entry/src/main/java/me/pqpo/librarylog4a/LogBuffer.java index 3bc5cd9a72ab2fa34de953165482c79a05c2bda9..3f13a8992dc3bc7e924165c79ee03bd85af67f0b --- a/log2file/src/main/java/me/pqpo/librarylog4a/LogBuffer.java +++ b/entry/src/main/java/me/pqpo/librarylog4a/LogBuffer.java @@ -1,6 +1,5 @@ package me.pqpo.librarylog4a; -import android.util.Log; /** * Created by pqpo on 2017/11/16. @@ -23,7 +22,7 @@ public class LogBuffer { try { ptr = initNative(bufferPath, capacity, logPath, compress); } catch (Exception e) { - Log.e(TAG, "LogBuffer Initialization Exception", e); + System.out.println(e.getMessage()); } } @@ -31,9 +30,12 @@ public class LogBuffer { if (ptr != 0) { try { changeLogPathNative(ptr, logPath); + + + this.logPath = logPath; } catch (Exception e) { - Log.e(TAG, e.getMessage(), e); + System.out.println(e.getMessage()); } } } @@ -59,7 +61,7 @@ public class LogBuffer { try { writeNative(ptr, log); } catch (Exception e) { - Log.e(TAG, e.getMessage(), e); + System.out.println(e.getMessage()); } } } @@ -69,7 +71,7 @@ public class LogBuffer { try { flushAsyncNative(ptr); } catch (Exception e) { - Log.e(TAG, e.getMessage(), e); + System.out.println(e.getMessage()); } } } @@ -79,7 +81,7 @@ public class LogBuffer { try { releaseNative(ptr); } catch (Exception e) { - Log.e(TAG, e.getMessage(), e); + System.out.println(e.getMessage()); } ptr = 0; } diff --git a/entry/src/main/resources/base/element/color.json b/entry/src/main/resources/base/element/color.json new file mode 100644 index 0000000000000000000000000000000000000000..e2bdaf51ba2265279eec98fa8dce52d635906804 --- /dev/null +++ b/entry/src/main/resources/base/element/color.json @@ -0,0 +1,61 @@ +{ + "color":[ + { + "name":"red", + "value":"#ff0000" + }, + { + "name":"colorPrimary", + "value":"#008577" + }, + { + "name":"colorPrimaryDark", + "value":"#00574B" + }, + { + "name":"colorAccent", + "value":"#D81B60" + }, + { + "name": "holo_green_dark", + "value": "#ff669900" + }, + { + "name": "white", + "value": "#ffffffff" + }, + { + "name": "black", + "value": "#000000" + }, + { + "name": "red_dark", + "value": "#CC0000" + }, + { + "name": "blue_dark", + "value": "#0099cc" + }, + { + "name": "blue", + "value": "#0099cc" + }, + { + "name": "orange", + "value": "#ff8800" + }, + { + "name": "gray", + "value": "#cbcbcb" + }, + { + "name": "test", + "value": "#00000000" + }, + { + "name": "pink", + "value": "#ff4081" + } + ] +} + diff --git a/entry/src/main/resources/base/element/string.json b/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..5ce84fc5e4517dd69f4d9bfd5826f6fa18ea5c0e --- /dev/null +++ b/entry/src/main/resources/base/element/string.json @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "app_name", + "value": "LogUtils" + }, + { + "name": "mainability_description", + "value": "Java_Phone_Empty Feature Ability" + }, + { + "name": "HelloWorld", + "value": "Hello World" + } + ] +} \ No newline at end of file diff --git a/entry/src/main/resources/base/graphic/background_ability_main.xml b/entry/src/main/resources/base/graphic/background_ability_main.xml new file mode 100644 index 0000000000000000000000000000000000000000..c0c0a3df480fa387a452b9c40ca191cc918a3fc0 --- /dev/null +++ b/entry/src/main/resources/base/graphic/background_ability_main.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/entry/src/main/resources/base/layout/ability_main.xml b/entry/src/main/resources/base/layout/ability_main.xml new file mode 100644 index 0000000000000000000000000000000000000000..7aebc2d0da0a229e8ee1f03d1351de636c9f5ff6 --- /dev/null +++ b/entry/src/main/resources/base/layout/ability_main.xml @@ -0,0 +1,64 @@ + + + +