加速的android App构建
发表于
更新于
本文字数:
1.8k
阅读时长 ≈
2 分钟
减少moudle的使用,这样可以减少构建其他项目时间
减少lint检查项
1 | lintOptions { |
增加内存,开启预编译类库
1 | dexOptions { |
Ionic第一次使用
发表于
更新于
本文字数:
292
阅读时长 ≈
1 分钟
安装
npm install -g @ionic/cli
卸装
npm uninstall -g ionic
新建项目
ionic start projectName <mode>tabs
运行项目
ionic serve
添加android环境
ionic capacitor add android
编译android环境
ionic cordova prepare android
运行到模拟器
ionic cordova run android -l
修改gradle配置
修改 projectName\platforms\android\cordova\lib\builders\ProjectBuilder.js中的gradle版本
记录一个打包错误
发表于
更新于
本文字数:
193
阅读时长 ≈
1 分钟
1 | Default method desugaring of `com.hj.pos.android.base.BaseAdapter` failed because its super class `androidx.recyclerview.widget.RecyclerView$Adapter` is missing |
无法找到RecyclerView,但是它确实存在,改用引入项目,依赖就好了,具体原因待查
adb启用沉浸模式
发表于
更新于
本文字数:
348
阅读时长 ≈
1 分钟
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* |
Android adb shell am 命令介绍
发表于
更新于
本文字数:
5.8k
阅读时长 ≈
5 分钟
am这个指令是 activity manager的缩写。这个命令可以启动Activity、打开或关闭进程、发送广播等操作。
am命令格式如下
adb shell am
- 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 | //使用Action方式打开系统设置-输入法设置 |
- startservice [options]
根据Intent 启动Service
options参数如下:
--user:使用指定的用户来启动activity,如果不输入,则使用当前用户执行
INTENT参数参见附录1:
命令样例:
1 | //使用ComponentName 方式启动一个Service |
- force-stop
关闭指定包名的应用程序
命令样例:
1 | adb shell am force-stop com.some.package |
- kill [options]
杀死与应用程序的包名称相关联的所有进程。该命令只会杀死安全的进程,不会影响用户体验。
options参数如下:
--user:使用指定的用户来启动activity,如果不输入,则使用当前用户执行
命令样例:
1 | adb shell am kill com.some.package |
- kill-all
杀死全部的后台进程
命令样例:
1 | adb shell am kill-all |
- broadcast [options]
发送一个广播
options参数如下:
--user:使用指定的用户来启动activity,如果不输入,则使用当前用户执行
命令样例:
1 | //恢复出厂设置的方法,会清除内存所有内容(慎重测试!!!!) |
- 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 |
- 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 |
- dumpheap [options]
将指定进程号的堆信息输出到指定的文件中
options参数如下:
--user:使用指定的用户来启动activity,如果不输入,则使用当前用户执行
-n: 直接存储原始堆信息,而不是系统管理后的堆信息
命令样例:
1 | adb shell am dumpheap -n 17495 /mnt/sdcard/dumpheap.txt |
- set-debug-app [options]
设置特定包名的应用程序开启debug
options参数如下:
-w: 等待应用程序启动
--persistent: 持久化
命令样例:
1 | adb shell am set-debug-app -w com.some.package |
- clear-debug-app
取消设置debug状态的应用程序
命令样例:
1 | adb shell am clear-debug-app |
- monitor [options]
监视Crash 或者ANR错误
options参数如下:
--gdb: 在给定的端口上启动gdbserv监控crash/ANR错误.
命令样例:
1 | adb shell am monitor |
- screen-compat [on|off]
开启或关闭指定package的屏幕兼容模式
命令样例:
1 | adb shell am screen-compat on com.some.package |
- display-size [reset|
]
重写模拟器/设备显示大小。这个命令是有帮助的测试你的应用程序在不同的屏幕大小,通过模仿一个小屏幕分辨率,使用一个大屏幕的设备,反之亦然。
命令样例:
1 | adb shell am display-size 1280x800 |
- display-density
重写模拟器/设备显示密度。该命令有助于测试你的应用程序在不同的屏幕密度对高密度屏幕环境,使用低密度屏幕,反之亦然。
命令样例:
1 | adb shell am display-density 480 |
- to-uri
将intent转换为Uri
命令样例:
1 | adb shell am to-uri -a android.settings.INPUT_METHOD_SETTINGS |
- to-intent-uri
将intent转换为intent:Uri
命令样例:
1 | adb shell am to-intent-uri -a android.settings.INPUT_METHOD_SETTINGS |
附录1:
1 | -a <ACTION> |
Android Studio3.5+gradle插件3.5.0+gradle-wrapper5.4.1编译AIDL报错问题
发表于
更新于
本文字数:
0
阅读时长 ≈
1 分钟
AS文件指向bug
发表于
更新于
本文字数:
73
阅读时长 ≈
1 分钟
android logcat expire lines
发表于
更新于
本文字数:
1k
阅读时长 ≈
1 分钟
当出现类似如下错误日志时:
1 | 2019-04-14 17:51:14.506 10189-10189/com.ss.android.ex.parent D/GGK: no 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 | setprop ro.logd.filter disable |
无法访问数据库 access denied
发表于
更新于
本文字数:
331
阅读时长 ≈
1 分钟