命令输入位置:AndroidStudio-Terminal
gradle –stop
标题中的命令错误:应该为 gradle --stop
,注意是两个 -
符号!!!
作用:可以快速停止 gradle 启动的进程。
gradle shopandroid:dependencies > dependencies.txt
解释
shopandroid:想要查找依赖关系的模块名(ModuleName)
dependencies.txt:要将输出的依赖关系保存的文件位置,包括文件名,如果只写文件名,表示保存在当前目录下的 该文件 中。
作用
生成 shopandroid模块
的依赖关系,并保存在当前文件夹下的 dependencies.txt
中。
例子
$ gradle shopandroid:dependencies > dependencies.txt $ pwd /Volumes/MAIN/qingfeng/Workspace/ShopAndroid $
说明 dependencies.txt
文件的保存位置是:/Volumes/MAIN/qingfeng/Workspace/ShopAndroid/dependencies.txt
Adb
adb shell dumpsys activity | grep mFocusedActivity
作用:获取真机显示页面的Activity的名称。
adb logcat -d > logcat.txt
作用:保存打印的logcat信息到当前目录下的logcat.txt文件中。
add pull sdcard/shop-crash
作用:将SD卡根目录下的shop-crash文件夹导出到当前目录中,当然也可以导出文件。
例子:导出手机中的shop-crash文件:打开终端后,首先进入电脑桌面目录,即cd /Desktop,然后使用上述命令回车即可。
Linux
find
使用格式:find [指定查找目录] [查找规则] [查找完后执行的action]
相关网址:
find . -name “._*” |xargs rm -rf
作用:快速删除当前目录下包含以 ._
开头的所有文件
解释:
-
第一个
.
符号代表的是当前路径,所以该位置参数的意义是路径名; -
-name
符号代表的是根据文件名精确查找,如果想要忽略大小写,可以改为-iname
; -
"._*"
符号代表的是找到所有以._
开头的文件,*
符号是通配符,所以该位置参数的意义是要寻找的文件的过滤规则; -
rm -rf
符号代表的是强制删除。
注意事项
混淆文件位置
以 CharityShopAndroid 项目为例:混淆文件仅在主模块(charityshopandroid)的根目录下,如果是debug状态下,使用的混淆文件是debug_proguard-rules.pro;如果是release状态下,使用的混淆文件是proguard-rules.pro。
mapping.txt
在友盟中查看错误日志时,因为混淆了,所以我们需要找到对应版本的mapping文件来解读,但是有时候由于在版本迭代过程中更改内容不是特别多,所以重新切出对应版本的release分支,这样会导致我们在Jenkins查找指定版本的mapping文件时,无法立刻找到。对于此问题,我们需要做以下操作:
- 在Gitlab上找到指定版本对应的release分支,并记住推送到服务器的时间;
- 在Jenkins中找到该release分支项目中,在构建历史中根据之前记住的服务器时间来查找。
实际案例:ShopAndroid项目的1.3.0-1.3.5版本都是在release/1.3.0分支上构建的。
Gitlab地址: http://git.showjoy.net/shopandroid/shopandroid/commits/release/1.3.0
Jenkins地址: https://wireless-build.showjoy.net/view/达人店/job/ShopAndroid-release-1.3.0/
Gradle - Compile
例子
比较下面两个语句块的不同
compile ('com.showjoy.shop:common:1.3.4')
compile ('com.showjoy.shop:common:1.3.4') { transitive false }
简要解释
- com.showjoy.shop:即groupId:是项目或者组织的唯一标志,并且配置时生成的路径也是由此生成,如com.showjoy.shop生成的相对路径为:/com/showjoy/shop;
- common:即artifactId:项目的通用名称;
- 1.3.4:即version:项目的版本。
上述解释内容都是配置在maven仓库的pom配置文件中的,此模块配置文件地址: http://192.168.0.62:8081/repository/maven-releases/com/showjoy/shop/common/1.3.4/common-1.3.4.pom,因为是内网才可以访问的,这里我就展示一下主要部分:
<?xml version="1.0"?> <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.showjoy.shop</groupId> <artifactId>common</artifactId> <version>1.3.4</version> <packaging>aar</packaging> <name>shopandroid_common</name> <descript ion>Uploads all artifacts belonging to configuration ':shopandroid_common:archives'</descript ion> <dependencies> <dependency> <groupId>com.showjoy.android</groupId> <artifactId>storage</artifactId> <version>1.0.8</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.showjoy.network</groupId> <artifactId>library</artifactId> <version>1.1.14</version> <scope>compile</scope> <exclusions> <exclusion> <artifactId>support-annotations</artifactId> <groupId>com.android.support</groupId> </exclusion> <exclusion> <artifactId>utils-log</artifactId> <groupId>com.showjoy.android</groupId> </exclusion> </exclusions> </dependency> ... </dependencies> </project>
备注:exclusions是可选的,在上述文件中可知:storage模块没有排除任何依赖;library模块排除了support-annotations模块和utils-log模块。
字段详细解释可以查看该网址: http://zyl.iteye.com/blog/41754
字段详细解释:// TODO
解答
前者:当我们依赖了common模块的时候,还会传递依赖common所依赖的模块。
后者:当我们依赖了common模块的时候,不会传递依赖common所依赖的所有模块。
疑问
如果我们并不想要排除所有的common所依赖的模块,只想要依赖排除某个或者某几个common所依赖的模块,又该如何呢?
解答
compile ('com.showjoy.shop:common:1.3.4') { exclude group: 'com.showjoy.shop',module:'viewgroup' exclude group: 'com.showjoy.shop',module:'share' ... }
如上所示:
如果想要排除common依赖的viewgroup模块,只需要写这么一句话就行了:exclude group: ‘com.showjoy.shop’, module: ‘viewgroup’;
如果还想要排除share,也可以依样画葫芦,注意填写正确的groupId和moduleName。
为什么要排除依赖
我们从上往下看:
- 对于某一个模块,一个项目只允许存在一个版本;
- 一个项目可能依赖很多个模块,每个模块可能依赖相同的子模块,但是版本号可能不同;
- 如果不管不顾,就会有版本冲突,因为第1点,所以需要排除依赖,最终只留下一个版本。