e2lc5's blog

e2lc5's blog

1
Default method desugaring of `com.hj.pos.android.base.BaseAdapter` failed because its super class `androidx.recyclerview.widget.RecyclerView$Adapter` is missing

无法找到RecyclerView,但是它确实存在,改用引入项目,依赖就好了,具体原因待查

To only hide the status bar:

只隐藏状态栏

1
adb shell settings put global policy_control immersive.status=*

To only hide the navigation bar:

只隐藏导航栏

1
adb shell settings put global policy_control immersive.navigation=*

To hide both status and nav bar:

隐藏状态栏和导航栏

1
adb shell settings put global policy_control immersive.full=*

Return things to normal:

显示状态栏和导航栏

1
adb shell settings put global policy_control null*

am这个指令是 activity manager的缩写。这个命令可以启动Activity、打开或关闭进程、发送广播等操作。

am命令格式如下

adb shell am

  1. start [options]
    根据Intent 启动Activity
    options参数如下:
    -D:开启debug模式
    -W:等待启动完成
    --start-profiler:将profiler中的结果输出到指定文件中
    -P:和–start-profiler一样,区别在于,在app进入idle状态时profiler结束
    -R : 重复启动Activity,但每次重复启动都会关闭掉最上面的Activity
    -S:关闭Activity所属的App进程后再启动Activity
    --opengl-trace:开启OpenGL tracing
    --user :使用指定的用户来启动activity,如果不输入,则使用当前用户执行
    INTENT参数参见附录1:
    命令样例:
    1
    2
    3
    4
    5
    6
    7
    8
    //使用Action方式打开系统设置-输入法设置
    adb shell am start -a android.settings.INPUT_METHOD_SETTINGS

    //使用组件名方式启动照相机功能
    adb shell am start -n com.android.camera/.Camera

    //打开拨号界面,并传递一个DATA_URI数据给拨号界面
    am start -a android.intent.action.CALL -d tel:10086
  2. startservice [options]
    根据Intent 启动Service
    options参数如下:
    --user :使用指定的用户来启动activity,如果不输入,则使用当前用户执行
    INTENT参数参见附录1:
    命令样例:
    1
    2
    //使用ComponentName 方式启动一个Service
    adb shell am startservice com.some.package.name/.YourServiceSubClassName
  3. force-stop
    关闭指定包名的应用程序
    命令样例:
    1
    adb shell am force-stop com.some.package
  4. kill [options]
    杀死与应用程序的包名称相关联的所有进程。该命令只会杀死安全的进程,不会影响用户体验。
    options参数如下:
    --user :使用指定的用户来启动activity,如果不输入,则使用当前用户执行
    命令样例:
    1
    adb shell am kill com.some.package
  5. kill-all
    杀死全部的后台进程
    命令样例:
    1
    adb shell am kill-all
  6. broadcast [options]
    发送一个广播
    options参数如下:
    --user :使用指定的用户来启动activity,如果不输入,则使用当前用户执行
    命令样例:
    1
    2
    //恢复出厂设置的方法,会清除内存所有内容(慎重测试!!!!)
    adb shell am broadcast -a android.intent.action.MASTER_CLEAR
  7. instrument [options]
    启动对instrument实例的监视
    options参数如下:
    -r: 以原始形式输出测试结果。该选项通常是在性能测试时与-e perf true一起使用。
    -e : 提供了以键值对形式存在的测试选项。格式一般为 -e [, …].
    -p : 将profiling数据写入制定的文件
    -w: 保持adb shell打开直至测试完成
    --no-window-animation:关闭运行时window动画
    --user :使用指定的用户来启动activity,如果不输入,则使用当前用户执行
    命令样例:
    1
    adb shell am instrument -w com.android.phone.tests/com.android.phone.runners.FunctionalTestRunner
  8. profile start
    开始收集目标进程运行过程中的函数调用关系
    其中PROCESS是所要收集的进程,直接用进程号即可, FILE是收集后trace所在的文件,一般直接放在/sdcard 目录 下,所以直接用/sdcard/文件名 即可。
    命令样例:
    1
    adb shell am profile start 17495 /mnt/sdcard/profile.txt
    9、profile stop
    其中PROCESS是所要收集的进程,直接用进程号即可
    停止收集目标进程运行过程中的函数调用关系
    命令样例:
    1
    adb shell am profile stop 17495
  9. dumpheap [options]
    将指定进程号的堆信息输出到指定的文件中
    options参数如下:
    --user :使用指定的用户来启动activity,如果不输入,则使用当前用户执行
    -n: 直接存储原始堆信息,而不是系统管理后的堆信息
    命令样例:
    1
    adb shell am dumpheap -n 17495 /mnt/sdcard/dumpheap.txt
  10. set-debug-app [options]
    设置特定包名的应用程序开启debug
    options参数如下:
    -w: 等待应用程序启动
    --persistent: 持久化
    命令样例:
    1
    adb shell am set-debug-app -w com.some.package
  11. clear-debug-app
    取消设置debug状态的应用程序
    命令样例:
    1
    adb shell am clear-debug-app
  12. monitor [options]
    监视Crash 或者ANR错误
    options参数如下:
    --gdb: 在给定的端口上启动gdbserv监控crash/ANR错误.
    命令样例:
    1
    adb shell am monitor
  13. screen-compat [on|off]
    开启或关闭指定package的屏幕兼容模式
    命令样例:
    1
    adb shell am screen-compat on com.some.package
  14. display-size [reset|]
    重写模拟器/设备显示大小。这个命令是有帮助的测试你的应用程序在不同的屏幕大小,通过模仿一个小屏幕分辨率,使用一个大屏幕的设备,反之亦然。
    命令样例:
    1
    adb shell am display-size 1280x800
  15. display-density
    重写模拟器/设备显示密度。该命令有助于测试你的应用程序在不同的屏幕密度对高密度屏幕环境,使用低密度屏幕,反之亦然。
    命令样例:
    1
    adb shell am display-density 480
  16. to-uri
    将intent转换为Uri
    命令样例:
    1
    adb shell am to-uri -a android.settings.INPUT_METHOD_SETTINGS
  17. to-intent-uri
    将intent转换为intent:Uri
    命令样例:
    1
    adb shell am to-intent-uri -a android.settings.INPUT_METHOD_SETTINGS

附录1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
-a <ACTION>
intent action, 例如 "android.intent.action.VIEW".
-d <DATA_URI>
intent data URI, 例如 "content://contacts/people/1".
-t <MIME_TYPE>
intent MIME type, 例如 "image/png".
-c <CATEGORY>
intent category, 例如 "android.intent.category.APP_CONTACTS".
-n <COMPONENT>
指定组件名称以包名称前缀来创建一个Intent, 例如 "com.example.app/.ExampleActivity".
-f <FLAGS>
在intent 中添加 flags, Java代码中对应的是 Intent.setFlags().
--esn <EXTRA_KEY>
添加 a null extra. 这个参数不支持 URI intents.
-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE>
添加一个 string 数据,数据结构是键值对
--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE>
添加一个 boolean 数据,数据结构是键值对
--ei <EXTRA_KEY> <EXTRA_INT_VALUE>
添加一个 int 数据,数据结构是键值对
--el <EXTRA_KEY> <EXTRA_LONG_VALUE>
添加一个 long 数据,数据结构是键值对
--ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE>
添加一个 float 数据,数据结构是键值对
--eu <EXTRA_KEY> <EXTRA_URI_VALUE>
添加一个 URI data 数据,数据结构是键值对
--ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE>
添加一个组件的名称, 这个属性将会被转换成 ComponentName 对象进行传递.
--eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]
添加一个int数组
--ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]
添加一个long数组
--efa <EXTRA_KEY> <EXTRA_FLOAT_VALUE>[,<EXTRA_FLOAT_VALUE...]
添加一个floats数组
--grant-read-uri-permission
包含 flag值 FLAG_GRANT_READ_URI_PERMISSION.
--grant-write-uri-permission
包含 flag值 FLAG_GRANT_WRITE_URI_PERMISSION.
--debug-log-resolution
包含 flag值 FLAG_DEBUG_LOG_RESOLUTION.
--exclude-stopped-packages
包含 flag值 FLAG_EXCLUDE_STOPPED_PACKAGES.
--include-stopped-packages
包含 flag值 FLAG_INCLUDE_STOPPED_PACKAGES.
--activity-brought-to-front
包含 flag值 FLAG_ACTIVITY_BROUGHT_TO_FRONT.
--activity-clear-top
包含 flag值 FLAG_ACTIVITY_CLEAR_TOP.
--activity-clear-when-task-reset
包含 flag值 FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET.
--activity-exclude-from-recents
包含 flag值 FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS.
--activity-launched-from-history
包含 flag值 FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY.
--activity-multiple-task
包含 flag值 FLAG_ACTIVITY_MULTIPLE_TASK.
--activity-no-animation
包含 flag值 FLAG_ACTIVITY_NO_ANIMATION.
--activity-no-history
包含 flag值 FLAG_ACTIVITY_NO_HISTORY.
--activity-no-user-action
包含 flag值 FLAG_ACTIVITY_NO_USER_ACTION.
--activity-previous-is-top
包含 flag值 FLAG_ACTIVITY_PREVIOUS_IS_TOP.
--activity-reorder-to-front
包含 flag值 FLAG_ACTIVITY_REORDER_TO_FRONT.
--activity-reset-task-if-needed
包含 flag值 FLAG_ACTIVITY_RESET_TASK_IF_NEEDED.
--activity-single-top
包含 flag值 FLAG_ACTIVITY_SINGLE_TOP.
--activity-clear-task
包含 flag值 flag FLAG_ACTIVITY_CLEAR_TASK.
--activity-task-on-home
包含 flag值 FLAG_ACTIVITY_TASK_ON_HOME.
--receiver-registered-only
包含 flag值 FLAG_RECEIVER_REGISTERED_ONLY.
--receiver-replace-pending
包含 flag值 FLAG_RECEIVER_REPLACE_PENDING.
--selector
必须使用 -d 和 -t 参数 来设置intent 数据和类型.
<URI> <COMPONENT> <PACKAGE>
直接指定URI、组件名、包名方式启动Activity是无法使用上述选项的,当参数不合法时,am命令默认的识别方式是,URI方式需要包含":";组件名方式是包含"/";其他的格式,am命令默认识别为包名方式。

问题

最近遇到AS文件指向错误,明明一个java文件,打开却是项目的xml配置

解决

只有删除.user/AS****/system

当出现类似如下错误日志时:
1
2
3
4
5
6
2019-04-14 17:51:14.506 10189-10189/com.ss.android.ex.parent D/GGK: no WonderfulVideo
2019-04-14 17:51:14.506 10189-10189/com.ss.android.ex.parent I/chatty: uid=10774(u0_a774) com.ss.android.ex.parent identical 5 lines
2019-04-14 17:51:14.506 10189-10189/chatty D/GGK: no WonderfulVideo
2019-04-14 17:51:14.506 10189-10189/com.ss.android.ex.parent D/GGK: has WonderfulVideo
2019-04-14 17:51:14.506 10189-10189/com.ss.android.ex.parent I/chatty: uid=10774(u0_a774) com.ss.android.ex.parent identical 1 line
2019-04-14 17:51:14.506 10189-10189/com.ss.android.ex.parent D/GGK: has WonderfulVideo
是因为相邻的几行打印内容完全相同,从Android O开始Log的chatty机制,会把中间的重复内容去掉不再打印。而是打印类似如上的 ”identical 5 lines“ ,告知开发者去除了几行

这个删除操作是在Android源码的 /system/core/logd/LogBufferElement.cpp 文件中实现的,类似的还有一个 expire x lines 日志

相关logcat 选项参考 https://www.jianshu.com/p/3fce87f12bb9
https://blog.csdn.net/kennethyo/article/details/76603228 设置黑白名单(好像意思是通过设置白名单可以避免删减日志,未实验)==>设置黑白名单好像是无效的,简单试了一次。
修改prop中的值应该可行(未实验,手机需Root)

root权限下可用

1
2
setprop ro.logd.filter disable
setprop persist.logd.filter disable

当遇到 1045-Access denied for user ‘root‘@’localhost’

首先检查数据库内的端口
1
show global variables like ‘port’;

出现的端口和你设置的是否一致

检查/etc/my.cnf或者 /etc/mysql/mysql.conf.d/mysqld.cnf

其中端口号是否争取

最后,检查权限
1
grant all privileges on *.* to 'root'@'%' identified by 'pwd';

其中@指代ip,可以更换为localhost或具体ip
最后,执行以下

1
flush privileges;

重点

1
2
3
4
5
slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX

slmgr /skms zh.us.to

slmgr /ato
查看状态
1
slmgr /xpr

切换中文

  • hexo/_config.yml中language改为zh-CN,注意主题版本

添加心形箭头

  • 具体步骤如下:
    在/themes/next/source/js/src下新建文件 clicklove.js ,接着把下面的代码拷贝粘贴到 clicklove.js 文件中:
    1
    !function(e,t,a){function n(){c(".heart{width: 10px;height: 10px;position: fixed;background: #f00;transform: rotate(45deg);-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);}.heart:after,.heart:before{content: '';width: inherit;height: inherit;background: inherit;border-radius: 50%;-webkit-border-radius: 50%;-moz-border-radius: 50%;position: fixed;}.heart:after{top: -5px;}.heart:before{left: -5px;}"),o(),r()}function r(){for(var e=0;e<d.length;e++)d[e].alpha<=0?(t.body.removeChild(d[e].el),d.splice(e,1)):(d[e].y--,d[e].scale+=.004,d[e].alpha-=.013,d[e].el.style.cssText="left:"+d[e].x+"px;top:"+d[e].y+"px;opacity:"+d[e].alpha+";transform:scale("+d[e].scale+","+d[e].scale+") rotate(45deg);background:"+d[e].color+";z-index:99999");requestAnimationFrame(r)}function o(){var t="function"==typeof e.onclick&&e.onclick;e.onclick=function(e){t&&t(),i(e)}}function i(e){var a=t.createElement("div");a.className="heart",d.push({el:a,x:e.clientX-5,y:e.clientY-5,scale:1,alpha:1,color:s()}),t.body.appendChild(a)}function c(e){var a=t.createElement("style");a.type="text/css";try{a.appendChild(t.createTextNode(e))}catch(t){a.styleSheet.cssText=e}t.getElementsByTagName("head")[0].appendChild(a)}function s(){return"rgb("+~~(255*Math.random())+","+~~(255*Math.random())+","+~~(255*Math.random())+")"}var d=[];e.requestAnimationFrame=function(){return e.requestAnimationFrame||e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(e){setTimeout(e,1e3/60)}}(),n()}(window,document);
  • 在\themes\next\layout_layout.swig文件末尾添加:
    1
    2
    <!-- 页面点击小红心 -->
    <script type="text/javascript" src="/js/src/clicklove.js"></script>

文章结束标志

  • 在路径 \themes\next\layout_macro 中新建 passage-end-tag.swig 文件,并添加以下内容:
    1
    2
    3
    4
    5
    <div>
    {% if not is_index %}
    <div style="text-align:center;color: #ccc;font-size:14px;">-------------本文结束<i class="fa fa-paw"></i>感谢您的阅读-------------</div>
    {% endif %}
    </div>
    接着打开\themes\next\layout_macro\post.swig文件,在post-body 之后(END POST BODY), post-footer 之前添加如代码:
    1
    2
    3
    4
    5
    <div>
    {% if not is_index %}
    {% include 'passage-end-tag.swig' %}
    {% endif %}
    </div>
    然后打开主题配置文件(_config.yml),在末尾添加:
    1
    2
    3
    # 文章末尾添加“本文结束”标记,此项在7.5版本验证失效
    passage_end_tag:
    enabled: true

添加字数,阅读时间

  • 安装hexo-symbols-count-time
    1
    $ npm install hexo-symbols-count-time --save
    如果安装完报如下提醒,还需安装eslint
    1
    2
    D:\hexo\blog>npm install hexo-symbols-count-time --save
    npm WARN babel-eslint@10.0.1 requires a peer of eslint@>= 4.12.1 but none is installed. You must install peer dependencies yourself.
  • 安装eslint
    1
    $ npm install eslint --save
    在站点配置文件添加如下配置
    1
    2
    3
    4
    5
    6
    symbols_count_time:
    symbols: true # 文章字数统计
    time: true # 文章阅读时长
    total_symbols: true # 站点总字数统计
    total_time: true # 站点总阅读时长
    exclude_codeblock: false # 排除代码字数统计
    在NexT主题配置文件添加如下配置(NexT主题已支持该插件,有的话无需再添加)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # Post wordcount display settings
    # Dependencies: https://github.com/theme-next/hexo-symbols-count-time
    symbols_count_time:
    separated_meta: true # 是否另起一行(true的话不和发表时间等同一行)
    item_text_post: true # 首页文章统计数量前是否显示文字描述(本文字数、阅读时长)
    item_text_total: false # 页面底部统计数量前是否显示文字描述(站点总字数、站点阅读时长)
    awl: 4 # Average Word Length
    wpm: 275 # Words Per Minute(每分钟阅读词数)
    suffix: mins.

首页只显示预览

  • 修改themes/next-reload/_config.yml中
    1
    2
    3
    4
    5
    # Automatically Excerpt. Not recommand.
    # Please use <!-- more --> in the post to control excerpt accurately.
    auto_excerpt:
    enable: false
    length: 150

禁用页底hexo有关的信息

  • 打开主题的配置文件_config.yml
    footer下关闭powered下enable和theme的enable
0%