在mac

时间:2018-02-04 07:54:14

标签: java android macos

G'天

如何在程序控制下在Mac上运行Java Android应用程序的非UI部分,即无头?

(简短说明我为什么要这样做:我正在开发一个性能测试工具。它专门用于测试Java API客户端解决的服务器的性能。我的工具上传了一个API客户端,包装它,并且可以通过检查客户端的方法立即开始创建性能测试用例。在运行时,它通过直接执行API客户端来调用服务器。不涉及记录和回放。不用担心协议。

现在我最近发现,与服务器通信的结构良好的移动应用程序可能会有一个模块,可以响应方法调用进行所有通信。换句话说,一个API客户端。由于此模块不太可能包含任何Android UI元素,因此可能需要在Unix机器或Mac上运行,因此可以在我的工具中运行。这会将我的工具范围扩展到Android Java应用程序。)

我的概念验证工具是在连接下的Android Studio示例应用程序中找到的名为Network Connect的简单Android Java应用程序。该应用程序只是连接到指定的URL并获取并显示前500个原始HTML字节。

这个应用程序可以在Mac上运行并不是毫无疑问的,因为它可以在Mac上运行,例如Android Studio内置的模拟器。 (模拟器速度非常慢,但速度几乎肯定与UI处理有关,对我来说不太可能是个问题。)

所以我尝试的第一件事就是根据示例应用程序的源代码设置NetBeans项目。当然,该项目需要一些库JAR文件。我发现从Android Studio附带的Android SDK复制的三个JAR足以让项目得到编译。现在你知道我运行应用程序时发生了什么:Stub!

然后我看一下Android Studio中SDK附带的Java源代码。 Stubbed的课程!显然没有在源代码中存根。所以我虽然会从源代码构建SDK。馊主意。拥有11,000多个NetBeans类,即使在具有大量内存的4处理器Mac上,也非常缓慢。

然后我从另一端走近。我设置了另一个NetBeans项目,并且只提供了我发现足以运行我的POC应用程序的三个JAR中的类。但是为了编译它们,我当然不得不从更多的JAR中引入更多的类。在适当的时候,这也变得不可行了。

然后我发现了RoboElectric。它承诺提供一组de-fanged的Android SDK JAR文件。我下载了那些希望找到被解散的JAR的人。但它必须建立起来,并且说明的内容远远超出了我的需要。我尝试将所有源文件收集到NetBeans项目中,但很快就没有了。

然后我发现了戴克。这声称是使用RoboElectric的最简单的Java Android应用程序项目。作为副产品,它构建了RoboElectric。完美!好吧,我想有一段时间,因为有人建造了Deckard。但是我得到了它。我得到了一个包含几乎所有Android SDK代码的JAR。我把它作为JAR库带到我的NetBeans Network Connect项目。该项目汇编得很好。但当我跑它时它被困住了!再次。所以我开始更换Stubbed的类!使用SDK源中的源文件。但这也变得不可行了。

所以我认为我正在寻找的是一组未被抄袭的Android SDK JAR。据我所知,SDK中存根的内容旨在为每个Android Java项目实现。所以应该有很多实现。对我来说如何实现它们可能无关紧要,如果确实如此,我可能会改变实现。

有人有任何想法吗? (我不认为我需要任何关于无头位的帮助。如果我能让POC应用程序运行,我想我可以从那里拿走它。)

0 个答案:

没有答案