我是一名有 3 年工作经验(1 年全职实习 +2 年全职工作)测试工作人员,目前岗位是手机方面的测试。
作为一个测试人员,3 年的工作经验让我明白,掌握 Android 开发也很必要。掌握了 Android 开发,对于测试过程中遇到的功能、性能问题能够更快的从表现定位到问题根因,甚至在实现自动化测试上有很大的帮助。
而开发能力中很重要的一点是代码的逻辑思维,即代码的码感。这种感觉大多数来源于日积月累的练习。所以你可以看到很多初入门的开发人员经常做的事情就写代码、练代码。
但是测试的工作其实十分琐碎,学习 Android 开发,需要耗费的精力不少。一天可能大部分时间都是搭建测试环境、准备测试资源、采集测试的数据、分析测试数据、编辑测试报告,如果遇上让人糟心的开发或项目经理或产品经理,临时加测也是常有的事情。这样一天下来,可以让测试学习开发练习代码能力的时间就更少了。
其实即使对于 Andorid 的开发人员来说,需要学习 Android 的特性就足够多了,除此之外还要学习 Sqlite 数据库、设计模式、业务等等,那么对于我们测试人员来说更加不是一件容易的事情。
但是打蛇七寸找要害。在目前市场对于测试人员的要求越来越往开发能力方面靠拢,学习 Android 开发很必要。如何快速入手 Android 开发?
根据我目前的经验和身边同事的学习经历,在入门 Android 开发中,测试同学遇到的第一个最大问题是 Android 开发环境搭建。其实除了熟悉代码语法、编程逻辑,开发集成环境的知识也必不可少。而掌握熟悉 IDEA 才能更好的实践代码、练习逻辑。
Android Studio 是一个基于 IntelliJ IDEA 社区版本的 Android 开发环境。可能有人用惯了 Eclipse ADT,但是作为谷歌官方的 IDEA,是进行 Android 开发的首选利器。
那么 Android Studio 有哪些特点是你必须要了解的呢?
谷歌官方对 Android Studio 的特点总结如下:
1.智能的代码编辑器
2.代码模版和 Github 集成
3.开发适用于多屏幕的应用
4.支持所有形状和尺寸的模拟器
5.基于 Gradle 的灵活构建系统
6.强大的即时运行功能
......
以上的特点里面,我认为对于初入门的测试同学来说,最重要的是 Gradle。
来自度娘的解释是:Gradle 是一个基于 JVM 的构建工具,是一款通用灵活的构建工具,支持 maven, Ivy 仓库,支持传递性依赖管理,而不需要远程仓库或者是 pom.xml 和 ivy.xml 配置文件,基于 Groovy,build 脚本使用 Groovy 编写。
这样说还是比较抽象。
或许下面的这个例子可以帮助你更好的理解它。
“比如,大部分的 Java 项目基本流程都是相似的:编译源文件、进行单元测试、创建 Jar 包,使用 Gradle 做这些工作可以不用为每一个工程都编写代码。使用 Gradle 和它的插件可以为你减少重复性的代码与工作。”
如果这个还有一点抽象的话,或许下面这个也是一个不错的例子。
我们拿手机抓 trace 后自动转化来说。trace 分析手机卡顿的一个方法。抓取后 trace 需要转化为 html 格式,其中的一个方法是:
但是如果我们有很多的 trace 要转化,每次都开一个 cmd 窗口来敲命令转化就很麻烦了,所以我们可以写一个脚本让它实现自动转化:
File fileParent = new File(fileDir);
if(fileParent.isDirectory()){
File fileList[] = fileParent.listFiles();
String systracePyFilePath = getSystracepyPath("D:\\systrace\\systrace");
for(int i = 0;i < fileList.length;i++){
try {
// String saveSystracePyFilePath = saveSystracepyPath("C:\\Users\\chenxiuxian\\Desktop\\result",fileList[i].getName());
String saveSystracepyName = fileList[i].getName();
Process pr = Runtime.getRuntime().exec("python "+ systracePyFilePath + " --from-file " + fileList[i]);
BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream()));
try{
Thread.sleep(5000);
}catch(InterruptedException e){
e.printStackTrace();
}
while(br.readLine() != null){
String s = br.readLine();
System.out.println(s);
}
if(br.readLine() == null){
String systemDir = System.getProperty("user.dir");
System.out.println("Systrace file save path:" + System.getProperty("user.dir"));
try{
Thread.sleep(5000);
}catch(InterruptedException e){
e.printStackTrace();
}
br.close();
pr.destroy();
File file = new File(systemDir + File.separator + "trace.html");
file.renameTo(new File(file.getParent() + File.separator + saveSystracepyName + ".html"));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
看到这里大概你明白了,Gradle 是一个自动化构建的脚本,帮助我们自动化完成一个工程/应用/项目需要的资源、编译、打包等工作。
所以,在 Android Studio 中你可以看到,Gradle 配置了很多属性,主要是工程编译需要的属性:
build.gradle:分为项目级和模块级别,用于描述 APP 工程的编译规则。
proguard-rules.pro:该文件用于描述 java 文件的代码混淆规则。我的代码没有做混淆,所以你可以看到的没有改动过的文件是这样子的:
gradle.properties:该文件用于配置编译工程的命令行参数,一般无须改动。
settings.gradle,配置哪些模块在一起编译。初始内容为 include':app',表示只编译 App 模块。
local.properties,项目的本地配置,一般无须改动。该文件是在工程编译时自动生成的,用于描述开发者本机的环境配置,比如 SDK 的本地路径、NDK 的本地路径等。
对于 Gradle 了解到这里似乎也没有什么让人值得注意的。但是对于我们测试同学来说,可以用来学习编程实践的时间是宝贵的,我们更要分清主次。所以下面的话是重要的:
项目级别的 build.gradle 一般无须改动,我们只需关注模块级别的 build.gradle。
所以弄清楚 build.gradle 里面每个参数的用途,可以在你搭建 Android 项目、编译 APP、导入其他 Android 项目时遇到的环境报错处理起来更有方向感:
所以当你遇到以下问题,你就知道的工程问题出现在依赖库,只要修改依赖库的版本号即可:
如果说测试开发是一条升级打怪之路,那么搭建起一个可以运行的开发环境就是打怪升级的第一步。
当然,搭建环境可能遇到的问题并只有这么一两个,从我遇到的可以分为 5 个方面:
1.编译使用的 sdk 与 sdk 工具库不存在或不匹配
2.依赖库版本不匹配
3.Gradle 版本不匹配
4.网络问题
5.Android 模拟器
问题 1 可以通过 SDK Manager 来进行修改,如果没有则进行下载:
问题 2 可以根据报错信息和 SDK Manager 进行修改匹配,如果没有则进行下载:
问题 3 一般比较隐秘,但是我遇到类似的问题。我的问题现场没有记录下来,但是问题表现和解决方法与下面这位博主的类似:
解决方法是:
博客的链接:ttps://blog.csdn.net/daxue_haha/article/details/76919120
问题 4 主要是我们的网络一般无法直接链接谷歌的网络,导致 Gradle 更新或同步时一些依赖库无法下载而工程报错。解决方法是 *** 或下载相关的库,然后解压或安装到相关的目录。
问题 5:Android 模拟器启动慢,效率低。对于这个问题,建议直接使用已有的手机等 Android 设备,避免设置一些列 Android 模拟器参数的麻烦。
经过上文的讲述,我们已经能够成功搭建起 Android 开发的环境,而且有信心无论遇到什么样的环境问题都能从容淡定的应对。为什么?因为我们了解了本质、抓住了要点。
搭好开发环境后,我们可以愉快的开始写代码啦。在 Android 开发目前已经十分成熟,这方面的书籍多如汗牛充栋。以下挑选部分入门参考书籍:
1.《Android 从入门到精通》,作者:明日科技
2.《Android Studio 开发实战:从零基础到 App 上线 》,作者:欧阳燊
3.《第一行代码:Android》,作者:郭霖