- Android 编译的 targetSDK 确认:我发现最低 10,最高 19。
- 模块名称统一:有的是 avoscloud 前缀有的是 avos 前缀。
- 测试组件名字要不要改改?paas_unit_test_application 有点尴尬。
- 自动化运维相关脚本需要补充。
项目包括:
- avoscloud:核心 SDK
- avoscloudfeedback:反馈组件
- avospush:推送组件
- avossearch:应用内搜索组件
- avossns:社交组件
- avosstatistics:统计组件
- avoscloud-mixpush:混合推送组件
测试组件包括:
- paas_unit_test_application
- 通过 Robolectric 对项目进行单元测试,测试代码位于每个项目的 src/androidTest
- 如何编写调试单元测试
项目使用 Gradle v2.2.1 管理,所以需要先在本地安装 Gradle,或者使用项目的 gradle wrapper
主页在 这里,简单来说它可以帮你自动下载合适的 gradle 并安装。涉及到几个文件:
simple/
gradlew <- *nix 运行脚本
gradlew.bat <- Windows 运行脚本
gradle/wrapper/
gradle-wrapper.jar
gradle-wrapper.properties <- 一些配置,比如 gradle 下载地址及安装地址
第一次执行 gradlew (注意末尾有个 w
表明是 wapper)时,可能会出现下面的情况:
> ./gradlew build
Downloading https://services.gradle.org/distributions/gradle-2.2.1-bin.zip
.............................................................................
说明本地没有 gradle,正在从服务器下载并安装,这个过程耗时可能比较长(一个 40MB 的包),注意有可能下载的是一个 gradle-2.2.1-all.zip
而不是 gradle-2.2.1-bin.zip
,这个耗时会更长(56MB 的包)。所以如果想快一点,可以修改 gradle-wrapper.properties
,尽量下载 bin
而不是 all
。
gradle 下载完成后,默认情况保存路径:$HOME/.gradle/wrapper/dists/gradle-2.2.1-bin/88n1whbyjvxg3s40jzz5ur27/gradle-2.2.1
。
提示:不知道什么原因,gradle 可能会下多个相同版本的程序,保存在不同的 Hash 目录中(比如你看到我当前是 88n1
开头的这个目录),但程序是一模一样的。所以,你可能会弄得很恼火……所以建议还是自己安装和配置 gradle 环境。
执行下面命令可以打包项目:
./gradlew build
如果你看到下面的提示,就代表打包成功:
BUILD SUCCESSFUL
Total time: 27.543 secs
对于 Android 组件包,产出分两种:
就是将组件所有 Java 文件打成的 jar 包,保存在如下目录:
./$MODULE/build/libs/bundles/$ARTIFACT_ID-$VERSION.jar
这个文件其实来自下面这个文件
./$MODULE/build/intermediates/bundles/{debug,release}/classes.jar
是通过每个模块的 build.gradle
文件中的任务控制的:
android.libraryVariants.all { variant ->
def name = variant.buildType.name
def task = project.tasks.create "jar${name.capitalize()}", Jar
task.dependsOn variant.javaCompile
task.from variant.javaCompile.destinationDir
artifacts.add('archives', task);
}
关于 aar 包的介绍在 这里,简单来说就是将 Android 组件的 Class 及资源一起打包,应用依赖时会将资源也解压缩,并且会做合并。具体示例在 Feedback 引用 arr 包 处解释。
arr 包保存路径:
./$MODULE/build/outputs/aar/avoscloud-{debug,release}.aar
TODO
执行下面命令可以进行单元测试并统计代码覆盖率:
./gradlew clean test jacoco
测试结果保存在:
./$MODULE/build/test-report/index.html
Jacoco 生成的代码覆盖率统计保存在:
./$MODULE/build/reports/jacoco/jacocoTestReport/html/index.html
直接在 Android Studio 使用 File -> import project 即可。
TODO
如果确认开发和测试都已经完成,可以将包发布到仓库,供用户下载:
./gradlew uploadArchives
在执行过程中,你能看到很多这样的提示信息:
:avoscloud:uploadArchives
Uploading: cn/leancloud/android/avoscloud-sdk/2.6.9.5-SNAPSHOT/avoscloud-sdk-2.6.9.5-20150109.065448-1.jar to repository remote at http://maven.mei.fm/nexus/content/repositories/snapshots
Transferring 320K from remote
Uploaded 320K
Uploading: cn/leancloud/android/avoscloud-sdk/2.6.9.5-SNAPSHOT/avoscloud-sdk-2.6.9.5-20150109.065448-1.aar to repository remote at http://maven.mei.fm/nexus/content/repositories/snapshots
Transferring 297K from remote
Uploaded 297K
说明此刻正在上传打好的 jar
和 aar
包。
提示:如果要上传包到仓库,需要有仓库部署权限的账号密码,一般该信息保存在 $HOME/.gradle/gradle.properties
中,内容如下:
NEXUS_USERNAME=admin
NEXUS_PASSWORD=xxxxxxxx
需要部署权限的,找 SA 领取。
TODO