ShowJoy开发记录

   2016-11-03 0
核心提示:命令输入位置:AndroidStudio-Terminalgradle –stop标题中的命令错误:应该为gradle --stop,注意是两个-符号!!!作用:可以快速停止 gradle 启动的进程。gradle shopandroid:dependenciesdependencies.txt解释shopandroid:想要查找依赖关系的模块名(Mod

命令输入位置: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]

相关网址:

  1. linux下find(文件查找)命令的用法总结
  2. Linux find 用法示例

find . -name “._*” |xargs rm -rf

作用:快速删除当前目录下包含以 ._ 开头的所有文件

解释:

  1. 第一个 . 符号代表的是当前路径,所以该位置参数的意义是路径名;
  2. -name 符号代表的是根据文件名精确查找,如果想要忽略大小写,可以改为 -iname
  3. "._*" 符号代表的是找到所有以 ._ 开头的文件, * 符号是通配符,所以该位置参数的意义是要寻找的文件的过滤规则;
  4. rm -rf 符号代表的是强制删除。

注意事项

混淆文件位置

以 CharityShopAndroid 项目为例:混淆文件仅在主模块(charityshopandroid)的根目录下,如果是debug状态下,使用的混淆文件是debug_proguard-rules.pro;如果是release状态下,使用的混淆文件是proguard-rules.pro。

mapping.txt

在友盟中查看错误日志时,因为混淆了,所以我们需要找到对应版本的mapping文件来解读,但是有时候由于在版本迭代过程中更改内容不是特别多,所以重新切出对应版本的release分支,这样会导致我们在Jenkins查找指定版本的mapping文件时,无法立刻找到。对于此问题,我们需要做以下操作:

  1. 在Gitlab上找到指定版本对应的release分支,并记住推送到服务器的时间;
  2. 在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
}

简要解释

  1. com.showjoy.shop:即groupId:是项目或者组织的唯一标志,并且配置时生成的路径也是由此生成,如com.showjoy.shop生成的相对路径为:/com/showjoy/shop;
  2. common:即artifactId:项目的通用名称;
  3. 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>
<description>Uploads all artifacts belonging to configuration ':shopandroid_common:archives'</description>
<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. 对于某一个模块,一个项目只允许存在一个版本;
  2. 一个项目可能依赖很多个模块,每个模块可能依赖相同的子模块,但是版本号可能不同;
  3. 如果不管不顾,就会有版本冲突,因为第1点,所以需要排除依赖,最终只留下一个版本。
 
标签: Gradle Linux
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

点击排行