- CMD+K 强制清空终端内容并将偏移置0
参考链接:
-
gradlew -v 查看 版本信息
-
gradlew -h 查看帮助
-
gradlew build 检查依赖并编译打包
-
gradlew assembleDebug 编译debug版本
这将在project_name/module_name/build/outputs/apk/
中输出APK。该文件已使用调试密钥进行签名并使用zipalign
对齐,因此您可以立即将其安装到设备上。
-
gradlew assembleRelease 编译release版本
-
gradlew :app:dependencies --configuration implementation 查看 app implementation 了那些依赖
从Gradle生命周期到自定义Task挂接到Build构建流程全解
- 初始化阶段
- 配置阶段
- 执行阶段
监听初始化过程,在 setting.gradle 中监听
//监听初始化过程
gradle.addBuildListener(new BuildListener() {
@Override
void buildStarted(Gradle gradle) {
println("//开始构建")
}
@Override
void settingsEvaluated(Settings settings) {
println("//settings.gradle执行解析完毕,settings评估完成(settins.gradle中代码执行完毕)")
}
@Override
void projectsLoaded(Gradle gradle) {
println("//Project初始化构造完成,初始化阶段结束")
}
@Override
void projectsEvaluated(Gradle gradle) {
println("//所有Project的build.gradle执行解析完毕,配置阶段结束")
}
@Override
void buildFinished(BuildResult result) {
println("//构建结束")
}
})
配置阶段的任务:是执行各项目下的build.gradle脚本,完成 Project 的配置,并且构造Task任务依赖关系图以便在执行阶段按照依赖关系执行Task。
Task 依赖关系配置完成监听
gradle.getTaskGraph().whenReady {
println "whenReady Task依赖关系构建完成,size=${it.allTasks.size()}"
it.allTasks.forEach { task ->
println "whenReady taskName: ${task.name} , taskPath: ${task.path}"
}
}
指定 Task 执行顺序
在Gradle中,有三种方式指定task的执行顺序:
- dependsOn 强依赖方式
静态依赖:
task taskX {
doLast{
println 'taskX'
}
}
task taskY {
doLast{
println 'taskY'
}
}
task taskZ(dependsOn:taskX) { // 多依赖方式:dependsOn:[taskX,taskY]
doLast{
println 'taskZ'
}
}
// 当我们执行taskZ的时候,由于依赖了taskX,则taskX会先执行,然后才会执行:taskZ
task taskZ {// 定义Task的时候不指定依赖
doLast{
println 'taskZ'
}
}
// 通过task的dependsOn方法,也可以指定task的依赖task。
taskZ.dependsOn(taskX,taskY)
动态依赖:当 Task 在定义的时候,不知道所依赖的 Task 是什么,在配置阶段,通过条件找出符合条件的 Task ,并进行依赖。
task lib1 {
doLask{
println 'lib1'
}
}
task lib2 {
doLask{
println 'lib2'
}
}
task lib3 {
doLask{
println 'lib3'
}
}
// 动态指定taskX依赖所有以lib开头的task
task taskX{
// 动态指定依赖
dependsOn this.tasks.findAll{ task->
return task.name.startsWidth('lib')
}
doLast {
println 'taskZ'
}
}
-
通过Task输入输出
-
通过API指定执行顺序
ADB 命令 参考链接 http://yuanfentiank789.github.io/2016/09/01/adb/
- adb devices 列出所有连接设备 或者使用 adb devices -l
- adb install app\build\outputs\apk\debug\hm-debug-1.0-huawei.apk 安装apk
- adb uninstall [-k] 卸载包名为package的应用('-k' 意味着保存数据和缓存目录)
- adb keygen keyname.jsk 生成adb公钥和私钥。
- adb help 查看帮助命令
- adb shell 运行shell 命令
- sqlite3 进入shell 以后使用 sqlite3 操作数据库
- adb shell df 查看手机磁盘空间
- adb shell getprop ro.build.version.release 获取手机系统版本
- adb shell pm list packages -f 查看所有已安装应用的包名
- adb push README.md /sdcard/test/README.md
- adb tcpip PORT restart adb server listening on TCP on PORT
- adb connect HOST[:PORT] connect to a device via TCP/IP [default port=5555] 使用adb命令启动应用
adb shell
am start -n 包名/要启动的activity的全路径名 例如
am start -n com.hm.retrofitrxjavademo/com.hm.retrofitrxjavademo.ui.activity.MainActivity
查看手机型号
adb shell getprop ro.product.model
查看分辨率
adb shell wm size
Physical size: 1080x1920
Override size: 2160x2200
修改屏幕分辨率
wm size 2160x2200
直接使用dp修改
wm size360dpx640dp
修改完毕以后,也可以使用adb shell reset
重置。
查看屏幕密度
adb shell wm density
显示屏参数
adb shell dumpsys window displays
查看Android 系统版本
adb shell getprop ro.build.version.release
截图,可以使用 adb shell screencap -h 查看 screencap 命令的帮助信息
adb shell screencap -p /sdcard/sc.png
录屏 可以使用 adb shell screenrecord --help
adb shell screenrecord /sdcard/filename.mp4
输出系统崩溃的log:
系统应用 ——>
adb shell dumpsys dropbox system_app_crash --print > crash.txt
adb shell dumpsys dropbox system_app_anr --print > anr.txt
第三方应用 ——>
adb shell dumpsys dropbox data_app_crash --print > crash.txt
adb shell dumpsys dropbox data_app_anr --print > anr.txt
How to Launch
If you are using Android Studio, you can find the generate task option in andresguard group. Or alternatively, you run ./gradlew resguard[BuildType | Flavor] in your terminal. The format of task name is as same as assemble.
- Android 自定义Gradle插件的3种方式 这篇文章写的最好。
//这个插件用来查看task依赖树
classpath "com.dorongold.plugins:task-tree:2.1.0"