美文网首页
monkey本地运行的问题记录及学习总结

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

作者: Mikasa___ | 来源:发表于2018-06-29 16:53 被阅读0次

背景是对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解压便可对三种方式一目了然。

第一种方式 第二种方式 第三种方式

相关文章

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

    背景是对monkey源码进行了改良:1️⃣一个 seed跑完后monkey会停在某个页面,需要强制退出应用以便于下...

  • adb+monkey

    运行monkey之前,需要记录好monkey和logcat的日志首先记录好logcat日志adb logcat -...

  • 在 YARN 上运行 mapreduce 的 jar 包

    想学习运行一个mapreduce程序试试,记录如下 本地运行word count 新建maven项目,添加hado...

  • vscode创建flutter项目

    记录flutter创建运行过程的问题及解决方法 创建flutter项目 运行flutter项目 报错信息及解决 启动成功

  • Mac OS 下安装Nginx

    简介 最近学习Django涉及到nginx本地开发,下面主要记录下Mac安装Nginx的过程,包括遇到的一些问题及...

  • 3.spark运行模式

    spark支持的运行模式:本地模式、本地集群模式、standalone模式、yarn模式及mesos模式。 本地模...

  • monkey命令学习记录

    简单monkey命令:adb shell -p packagename -v 5001.1 解释:对包名为XX的A...

  • Android 自动化测试之Monkey参数介绍及其停止办法

    Monkey 参数介绍 一、 什么是Monkey Monkey是Android中的一个命令行工具,可以运行在模拟器...

  • 20201013转自田

    日常问题及学习方法总结 转一下群里精华 日常问题及学习方法总结(9月23日): 一、粗心也是综合能力问题,要正视...

  • Android monkey测试小结

    本文转自 Android自动化测试--monkey详细到炸的总结一、Monkey简介:Monkey是Android...

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/qqboyftx.html