monkey本地运行的问题记录及学习总结

2018-06-29  本文已影响0人  Mikasa___

背景是对monkey源码进行了改良:1️⃣一个 seed跑完后monkey会停在某个页面,需要强制退出应用以便于下一个seed重新打开应用开始跑2️⃣从多个连接的设备中识别到需要跑monkey的目标设备

一、从外部导jar包

跑monkey用到的adb命令是ddmlib包下面的,还需要用到其他的包:

需要用到的包

ddmlib包在android-sdk里面,要导进来的话跟本地安装的路径有关,需要手动导

导jar包路径配置 选择从外部导jar包 SDK--tools--lib目录下jar包

lib目录下,多选快捷键:可点击第一个jar包,按住shift再点击最后一个包

二、重写日志输出参数

根据executeShellCommand的参数说明 com.android.ddmlib.IDevice.executeShellCommand(String arg0, IShellOutputReceiver arg1) 

准备重写第二个参数IShellOutputReceiver 

而 1️⃣public abstract class com.android.ddmlib.MultiLineReceiver implements com.android.ddmlib.IShellOutputReceiver

2️⃣public class LogOutputReceiver extends MultiLineReceiver  

重写后就变成:adb.getDevices().excecuteShellCommand(commandName,LogOutputReceiver)

三、不同导包方式 & java -jar 与 java -cp 不同运行方式

前言:JAR File和Runnable JAR File的区别? 

The runnable jar contains a MANIFEST.MF file, which defines the Main class to be executed when the jar is run. The “Main-Class” must be defined so the java runtime knows which class to call when the jar is “run.” 

If a jar does not include a manifest with the “Main-Class:” it is not considered a “runnable jar” - it is just a library of Java code.

因为导出jar包导的方法不对,在运行java -jar时提示没有主清单属性,

搜了一些文档,这里涉及到两个问题

1、导出jar包: jar file 用 java -cp

导出 jar file 仅仅是把.class打包了 用 java -cp 运行

jar file 设置主函数入口,main函数的所在文件

如果没有设置主函数入口,用 java -cp 的话后面需要带上 包名+类名

用 java -jar xxx.jar 会报错没有主清单属性。

没有主清单属性

以 jar file导出的为普通的jar,在导出的时候没有指定main函数所在类,即没有执行的入口,所以不能运行.

ps:如果你还应用到另外的lib库,你必须在cp里说明,也就是  java -cp .;lib01.jar;lib02.jar com.xxx.class名 来执行

(-cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,window上分号“;”分隔,linux上是分号“:”分隔。不支持通配符,需要列出所有jar包,用一点“.”代表当前路径。)

2、导出jar包: runnable jar file 用 java -jar            

项目导出 runnable jar file 包时,Launch configuration的类一定要有main函数

设置main函数所在的类(一定要有main函数)

导出的包在 META_INF 目录下,MANIFEST.MF 文件里面有指定 main-class

MANIFEST.MF 文件里面有指定 main-class

即runnable jar包中指明哪个类先执行,所以你可以用 java -jar xxx.jar来执行你想要执行的代码,而不必指明具体哪个类。

若导包过程中设置的 Launch configuration的类无main函数,则会报错

找不到或无法加载主类

ps:Launch configuration选项只能上下拉菜单选择,如何出现在菜单里呢。最简单的,把需要选择的类现在本地运行一遍~

四、导 runnable jar file 包,对依赖的 lib 库的不同打包方式

三种不同方式

library handling中:第一个为提取extract需要的依赖的库或jar合成到一个jar 文件里;

第二个则仅仅打包依赖库到各自的jar文件;

第三个则把依赖库放到一个文件夹中。

例如

需要引用的第三方jar包

将项目分别用三种库处理方式,并导出为test.jar,然后将各个test.jar解压便可对三种方式一目了然。

第一种方式 第二种方式 第三种方式
上一篇 下一篇

猜你喜欢

热点阅读