- 博客(41)
- 收藏
- 关注
原创 【Android开发学习笔记】【高级】【随笔】插件化——Activity生命周期
前言 如同第一章我们说的,宿主程序通过 dexclassloader 将插件的类加载进来,然后通过反射去调用它的方法,这样Activity就被当成了一个普通的类来执行了,因此系统不再接管它的生命周期,也就是说Activity的生命周期函数失效了。针对这样的问题,有网友想出使用Fragment来解决此问题,Fragment既有类似于Activity的生命周期,又有类似于View的界面,因此
2015-12-14 16:00:42
814
原创 【Android开发学习笔记】【高级】【随笔】插件化——资源加载
前言 上一节我们针对插件最基本的原理进行了一个简单的demo实现,但是由于插件的Context对象被宿主所接管,因此无法加载插件程序的资源。那么如何解决这个问题捏? 有人提出这样的方案:将apk中的资源解压到某个目录下,然后通过读文件的方法进行资源加载,虽然理论上可以实现,但是实际操作起来难度很大,首先资源文件格式不一(xml、图片等),其次针对不同分辨率的手机,Android设备
2015-12-14 16:00:38
862
原创 【Android开发学习笔记】【高级】【随笔】插件化——初探
背景 随着tencentmap项目的越来越庞大,终于有一天我们的App在Android 2.*以下手机上安装时出现INSTALL_FAILED_DEXOPT,导致安装失败。 INSTALL_FAILED_DEXOPT导致无法安装的问题,从根本上来说,可能是两个原因造成的: (1)单个dex文件方法总数65K的限制。 (2)Dexopt的LinearAlloc限制。
2015-12-14 16:00:35
770
原创 【Android测试】【第十三节】Uiautomator——项目实战
前言 前面我们已经了解Uiautomator的基本知识,并且学习了API的用法,因此对于我们来说完成一个UI自动化测试脚本并不难,但是如何将UI自动化应用在实际的项目中,帮我们提高测试的效率呢?本节我们就说说,UI自动化应该怎么去完成。 我们以微信"小视屏"这个功能为例,来完成本次自动化测试的讲解。(鉴于隐私原因,默认在执行脚本前,微信已经是登录状态)分析 当我们要完
2015-12-14 16:00:30
1978
4
原创 【Android测试】【第十二节】Uiautomator——API详解
简单的例子 以一个简单的例子开始吧。我们完成一个 " 打开QQ,进入QQ空间,然后退出 " 的case。 代码如下:package QQ;import java.io.IOException;import com.android.uiautomator.core.UiDevice;import com.android.uiautomator.core.U
2015-12-14 16:00:21
3058
1
原创 【Android测试】【第十一节】Uiautomator——简介
前言 在App的测试中,除了单元测试来保证Android应用程序的各个组件(例如activities、services和content providers),测试用户在应用程序界面的行为也是非常重要的一部分。UI测试(UI Testing)可确保用户在一系列操作过程中(例如键盘输入、点击菜单、弹出对话框、图像显示以及其他UI控件的改变),你的应用程序做出正确的UI响应。 谷歌U
2015-12-14 16:00:16
984
原创 【Android测试】【第十节】MonkeyRunner—— 录制回放
前言 在实际项目进行过程中,频繁的需求变更和突如其来的测试任务,不会留给我们过多的时间去写测试脚本,这个时候如果可以进行录制我的一次操作,然后自动的回放出来,那么就能够节省很多的时间。 恰好monkeyrunner帮我们提供了可以录制 回放的功能。 发现一个看源码的网址:http://124.16.141.157/lxr-0101/source/sdk/monkeyrunn
2015-12-14 16:00:12
1158
原创 【Android测试】【第九节】MonkeyRunner—— 初识
不得不说两句,过了这么久才再次更新博客,主要原因是工作太忙,而且刚好又参与了很多业余活动,因此基本没时间去写,不过我还是决定坚持把我要写的东西全部写完,希望能够帮助到刚刚入门的测试者们。 前言 本节讲解的内容是monkeyrunner,monkeyrunner和monkey同样都是谷歌研发的测试工具,相比monkey用来做压力测试而言,monkeyrunner更偏重于
2015-12-14 16:00:07
681
原创 【Android测试】【第七节】Monkey——源码浅谈
前言 根据上一篇我们学会了Monkey的用法,知道了Monkey可以非常容易的模拟伪随机的模拟事件。也许有的时候我们想让他稍微智能化一些,例如只在某个屏幕范围产生伪随机事件,或者说是只对某些指定Activity进行操作,这样就需要我们对Monkey进行改良了。而改良必须去改Monkey的源码,因此本节课们就简单的说说Monkey的源码。 源码下载地址:https://code.g
2015-12-14 15:59:58
1016
原创 【Android测试】【第六节】Monkey——认识和使用
自动化工具 接触安卓测试最早听说的一个工具就是Monkey,很有意思的名字,当然也很容易学习。 名词解释 个人推荐,如果有精力的最后还是读一下这个文档:http://developer.android.com/intl/zh-cn/tools/help/monkey.html Monkey是一个运行在你手机上的程序,它可以产生一些伪随机事件流,例如点击(click
2015-12-14 15:59:53
576
原创 【Android测试】【第五节】LogCat——命令行
前言 上一篇将的是如果在eclipse中的Logcat进行Log的查看和过滤,很多的时候我们面临着这样的问题: 如果你的app需要在室外才可以运行(例如使用地图软件中的导航),室外可能不方便去携带电脑,此时你又想保存log,那么你该如何去做呢?本节就来解决这个问题。 预备知识 首先还是先了解一下上节没有提到的知识,我觉得还是比较重要的,就是log分类的几种级别(
2015-12-14 15:59:49
848
1
原创 【Android测试】【第四节】LogCat——认识和使用
什么是LogCat LogCat可以实时的捕捉系统中的log信息,这样在测试过程中,有助于帮助我们收集信息,当出现问题的时候,能够更加快速、准确的定位。 在哪? 如果你的eclipse是安装了ADT的,那么就在这里就能找到。 窗口打开后,用usb将手机和电脑连接,这时就能看到这样一个对话框了: 具体的LogCat中的每一列代表的属性,这些都比较简
2015-12-14 15:59:46
903
原创 【Android测试】【第三节】ADB——源码浅谈
前言 由于本人精力平有限,所以这里简单的说说ADB源码。 首先根据前面的理解,我们已经知道了ADB是“连接手机和PC的一个桥梁”,我们经常在PC端开发的时候,会用到eclipse这个工具,这里面有一个工具叫DDMS,如下图: 是不是发现通过DDMS在PC端可以看到手机的一些信息,其实呢 它就是通过 “ddmlib.jar” 来建立起ADB的。因此我们今天就通过反编译
2015-12-14 15:59:42
1107
原创 【Android测试】【第二节】ADB——无线模式
啰嗦两句啊。本来以为adb的一些用法一节就能讲完,没想到这个无线的模式还是比较繁琐的,因此打算单独拉出来说说,后续看有没有必要自己实现一个工具,能够一键切换到无线这样,这样就再也不用插着线干事了。好了,开始吧 无线能干什么 有Android设备的人大概都遇到过这样的场景: 1、用手机拍了好多照片,想拷到电脑上; 2、电脑上的有好多电影,想拷到手机里;
2015-12-14 15:59:37
588
原创 【Android测试】【第一节】ADB——初识和用法
写在前面的话 感觉自己进入Android测试这行以来,虽然了解了不少Android的东西和自动化技术,但都比较零散。当然这也和半路入行,然后要快速的将自动化技术运用所学的业务上有关。于是决定利用工作之余的时间将Android测试相关知识进行一个整理,一来巩固一下自己学到的东西;二来可以让想学习Android测试的同学进行学习(希望能帮到新手)。 由于我之前学的是C++没有学过Jav
2015-12-14 15:59:32
538
原创 【Android测试】【随笔】在手机里用命令行创建中文文件夹
不知道为啥当时自己写了一段在手机里用命令行创建文件的代码,后来由于需求,新建的文件夹需要用中文表示,因为直观,然后就发现出现诡异的乱码。 尝试了各种的编码格式,最后终于成功了,上图就是各种编码格式出的岔子,第一个为正确的。 好了不多说了,上源码吧 1 public void ShellONECommand(String cmd) 2 {
2015-12-14 15:59:27
1347
原创 【Android开发学习笔记】【随笔】UI线程
概念UI线程 是Android中的主线程,涉及到UI方面的一些操作都需要在ui线程中进行操作在非ui线程中想操作ui,就会报错android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
2015-12-14 15:59:23
391
原创 【Android开发学习笔记】【第十课】运动事件 之——触摸屏
概念触摸屏 (TouchScreen) 和 滚动球(TrackBall)是Android 中除了键盘之外的主要输入设备。而这两个事件都可以用运动事件(MotionEvent)用于接收他们的信息 直接看代码吧package com.example.motion;import android.support.v7.app.ActionBarActivity;
2015-12-14 15:59:18
502
原创 【Android开发学习笔记】【第九课】重力感应
概念使用重力感应技术的Android游戏已经屡见不鲜,不知道自己以后会不会用到,所以先研究了一下。在网上学习了一下,貌似没有api,所以得自己去分析手机处在怎样状态下。注意: 下面提供的demo程序只能在有重力感应的真机上跑。 重力感应坐标系看一下模拟图:以屏幕的左下方为原点,箭头指向的方向为正。从-10到10,以浮点数为等级单位(2D编程的时候,是以屏幕左上方
2015-12-14 15:59:14
699
1
原创 【Android开发学习笔记】【第八课】五大布局-下
概念五大布局上一篇文章已经介绍了LinearLayoutRelativeLayout 这一篇我们介绍剩下的三种布局 FrameLayout五种布局中最佳单的一种布局。在这个布局在整个界面被当成一块空白区域,所有的子元素不能放倒指定的位置,只能放到这个区域的左上角,并且后面的子元素会直接覆盖前面的子元素。FrameLayout xmlns:androi
2015-12-14 15:59:11
430
原创 【Android开发学习笔记】【第七课】五大布局-上
概念Android程序各式各样,依靠的就是布局,先来看看布局都是怎么来的: 白色部分就是我们经常用的几种布局,主要说说介绍下面五大布局FrameLayoutAbsoluteLayoutLinearLayoutRelativeLayoutTableLayout 先介绍两种: 线性布局-LinearLayout在一个方向上对齐所有元素。可
2015-12-14 15:59:06
235
原创 【Java 进阶篇】【第二课】异常处理
概念异常处理的存在是为了: 允许程序员跳过无法处理的问题,继续开发后续的工作,或根据异常做出更加聪明的处理方式。 Java中存在一类对象叫“异常对象”。当异常情况发生时,就会暗战预先的设定,抛出(throw) 代表当前状况的对象;抛出其实就是一种特殊的返回方式,该线程会暂停,逐层退出调用,直到遇到异常处理器(Exception Handler)。异常处理器可以捕捉
2015-12-14 15:58:59
249
原创 【Java 进阶篇】【第一课】String类
引用String类包含在java.lang包中。这个包会在Java启动的时候自动import,所以可以当做一个内置类(built-in class)。我们不需要显式的使用import引入String类。 创建String类是唯一一个不需要new关键字来创建对象的类。使用的时候需要注意 String s = "Hello World!";
2015-12-14 15:58:55
322
原创 【Java 基础篇】【第十课】多态
Java的多态使用方法和C++基本是一样的。看代码吧。 1 public class ten 2 { 3 public static void main(String[] args) 4 { 5 Human guest = new Human(); 6 BrokenCup hisCup = new BrokenCup(
2015-12-14 15:58:52
335
原创 【Java 基础篇】【第九课】继承
继承就是为了提高代码的复用率。利用继承,我们可以避免代码的重复。让Woman类继承自Human类,Woman类就自动拥有了Human类中所有public成员的功能。我们用extends关键字表示继承:看代码吧: 1 class Human 2 { 3 /*因为类中显式的声明了一个带参数构造器,所以默认的构造器就不存在了,但是你在子类的构造器中并没有显式 4
2015-12-14 15:58:48
193
原创 【Java 基础篇】【第八课】package包
学习Java以来,第一次感觉稍微有点不好理解的,下面说说吧。存在意义:包的存在就是为更好的组织结构包的创建:只要在程序的最前面加入 Package ******,就可以了,一般都喜欢写 com.carter.animal 等等之类的东西,刚开始以为这个东西是一个很复杂的东西,其实就是代表的一个目录结构用的,如果刚开始理解不了的话,完全可以不用写这么多的".",我就是被这个点给搞
2015-12-14 15:58:45
491
原创 【Java 基础篇】【第七课】组合
我所理解的组合就是在一个类当中又包含了另一个类的对象。这样的方式就是组合吧:电池是一个类,有电量手电筒需要电池 看代码吧: 1 // 电池类 2 class Battery 3 { 4 // 充电 5 public void chargeBattery(double p) 6 { 7 power += p;
2015-12-14 15:58:40
208
原创 【Java 基础篇】【第六课】接口interface
Java提供的这个interface的语法,目的就是将接口从类中剥离出来,构成独立的主体。首先加入我们定义了这个杯子接口:interface Cup{ void addWater(int w); void drinkWater(int w);}interface当中,注意亮点:1.不需要定义方法的主体2.不需要说明的可见性(默认为public
2015-12-14 15:58:38
219
原创 【Java 基础篇】【第五课】类的构造函数
Java 也有自己的构造函数,如同c++一样有两个特征:1.构造函数的名字和类的名字相同2.构造函数没有返回值 下面来看一下这个例子: 1 public class test 2 { 3 public static void main(String[] args) 4 { 5 Human aman = new Human(
2015-12-14 15:58:35
265
原创 【Java 基础篇】【第四课】初识类
看看Java中如何定义一个类,然后用来调用的,这个比较简单,直接看代码吧。 我发现的类和C++不一样的地方:1.Java中类定义大括号后没有分号;2.好像没有 public、private等关键字(我也是跟着一个教程学的,至少刚开始没看到,补充一下后来知道有了写法是,直接 private int num; 这样在变量类型的前面直接加)3.感觉类里面直接就写函数的实现了,不像C+
2015-12-14 15:58:31
255
原创 【Java 基础篇】【第三课】表达式、控制结构
这两天再看敏捷开发流程,我这个算是敏捷博客吗? 哈哈o(∩_∩)o 1 package a.b; 2 3 public class Three 4 { 5 static void Expression() 6 { 7 System.out.println("一、学习基本的表达式"); 8
2015-12-14 15:58:28
417
原创 【Java 基础篇】【第二课】基本数组类型
就像第一章所说一样,这次学习为了快,因此说明性的文字就不想写太多了,直接帖代码吧,代码当中尽量加一些注释: 1 package a.b; 2 3 public class test 4 { 5 6 static void BasicVariables() 7 { 8 //一、变量的类型的学习 9
2015-12-14 15:58:26
315
原创 【Java 基础篇】【第一课】HelloWorld
有点C++基础,现在需要快速的学会java,掌握java,所以就这样了,写点博客,以后看起来也好回顾。1.第一步 javaSDK和Eclipse下载就不说了,搞定了这两样之后;2.打开Eclipse,新建一个项目:File->New->Java Project 点击finish即可 3.新建完项目之后,在src右击,选择建立类,方法按照图片来: 点击
2015-12-14 15:58:21
482
原创 【Android开发学习笔记】【第五课】Activity的生命周期-上
今天学习Activity当中的七个生命周期函数: 首先得说一个事情,就是在代码当中如果加入了 System.out.println(" ------");之后,如何查看这里面的输出内容 打开之后只输入“Filter Name”和“by Log Tag” 即可 添加成功后可以看到 本次学习主要总结如下: 1、onCreate() Ac
2015-12-14 15:58:16
326
原创 【Android开发学习笔记】【第四课】基础控件的学习
通过一个简单的例子来学习下面几种控件: 1.TextView:简单的文本显示控件 2.EditText:可以编辑的文本框 3.Button:按钮 4.Menu:这里指的是系统的Menu 5.Toast:消息提示控件,类似于MFc的tip(不知道理解的对不对) 顺便用到上一次学习的多个Activity之间传递数据的技术,来做一个小的计算乘法的case 步骤:
2015-12-14 15:58:12
341
原创 【Android开发学习笔记】【第三课】Activity和Intent
首先来看一个Activity当中启动另一个Activity,直接上代码说吧: (1)首先要多个Activity,那么首先在res-layout下新建一个 Other.xml,用来充当第二个Activity的布局文件 xml version="1.0" encoding="utf-8"?>LinearLayout xmlns:android="http://sche
2015-12-14 15:58:07
381
原创 【Android开发学习笔记】【第二课】Activity学习
什么是Activity,就是我们所看到的 需要理解以下四句话: 1.一个Activity就是一个类,并且这个类需要集成Activity; 2.需要重写OnCreat方法 3.每个Activity都需要在AndroidManifest.xml中进行配置 xml中加入了说明应用程序启动时先运行这个A
2015-12-14 15:58:03
297
原创 【Android开发学习笔记】【第一课】初识New Project,工程文件介绍
初学者新建一个Andriod工程后,往往不知道Pakage Explorer区域的每个文件是什么作用,今天学习了一下,自我总结一下。 1.先新建一个工程 2.输入名称,以及支持的SDK版本等(这些可以暂且都默认了) 3.创建成功之后,左边区域出现工程相关的文件 接下来一个个介绍吧
2015-12-14 15:57:58
425
原创 Android 环境快速搭建-详细步骤-win7-64bit
电脑装了win7 64位的系统,重新来搭建了安卓环境,发现有一种非常便捷,快速的方法就可以搭建起来了~ 步骤一:下载java sdk 进入http://www.oracle.com/us/sun/index.htm,选择download 下的 Java for Developers
2015-12-14 15:57:53
523
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人