安卓工作室和MonkeyTalk?

8

有人成功地在Android Studio中设置了MonkeyTalk吗?

目前我的主要问题是我不知道如何将Java编译器设置为aspectj。

我相信在custom_rules.xml中有一些方法可以实现这一点,但我还没有找到如何实现。

这可能会导致一个不相关的问题,在我使用的最新版本的Android Studio(0.1.1)中,我无法在Android Studio内运行ant构建。

任何建议都将不胜感激!

4个回答

6

我的一种有效方法是使用android-gradle-aspectj插件,在这里可以找到https://github.com/uPhyca/gradle-android-aspectj-plugin

我所做的是创建一个新的构建类型(monkeytalk),仅将monkey talk jar作为编译依赖项包含在此构建类型中,并应用上述提到的aspectj插件。这确保了monkey talk纺织品仅发生在monkey talk构建类型中。

以下是我的构建xml的代码片段

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath 'com.uphyca.gradle:gradle-android-aspectj-plugin:0.9.5'
  }
}
apply plugin: 'com.android.application'
apply plugin: 'android-aspectj'

android {
  buildTypes {
    monkeytalk.initWith(buildTypes.debug)
    monkeytalk {
      applicationIdSuffix ".monkey"
    }
  }
}

dependencies {
  monkeytalkCompile(files("monkey-talk/monkeytalk-agent-2.0.5.jar"))
}

我还为猴子测试构建类型添加了一个AndroidManifest.xml文件,其中添加了所需的权限,即GET_TASKS和INTERNET。
要查看完整的示例应用程序,请查看此github存储库https://github.com/georgepapas/android-gradle-monkey-talk-demo/

@ShyGuy 是的。你需要确保已将你的 IDE 连接到模拟器。 - George Papas
我在设备上运行了您的应用程序,并在MonkeyTalk IDE Professional中连接了设备(连接类型设置为:Android模拟器或Tethered Device消息出现),但录制按钮仍然被禁用。有什么想法如何解决这个问题吗?我使用的是Android Studio 0.8.2和USB连接。 - Kate Geld
@KateGeld 这可能与这个问题有关 https://github.com/uPhyca/gradle-android-aspectj-plugin/issues/2 - George Papas
这个解决方案可行,尽管我是按照 https://prativas.wordpress.com/2014/08/15/using-monkeytalk-in-androidstudio/ 的说明进行操作的。 - Leo K
我遇到了以下错误:Error:Execution failed for task ':app:compileDebugJava'。
com.android.build.gradle.AppPlugin类中没有bootClasspath属性。
- Syed Raza Mehdi
显示剩余5条评论

3
MonkeyTalk(截至版本2.0.1)现已发布了工具,可在不依赖于任何IDE的情况下“检测”您已经构建的常规apk。以下是在OS X上完成此检测过程的步骤:
1. 下载 MonkeyTalk 2.0.1 Pro Beta 2. 在桌面上创建一个新的空文件夹,标题为“example”或其他您喜欢的名称
3. 将monkeytalkpro / agents / android / monkeytalk-agent-2.0.1.jar复制到“example”目录中
4. 将monkeytalkpro / ant / monkeytalkpro-ant-2.0.1.beta.jar复制到“example”目录中
5. 将您的apk文件复制到“example”目录中(本示例中命名为myapp.apk)
6. 在“example”目录中创建一个名为build.xml的新文件,并填写以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:mt="antlib:com.gorillalogic.monkeytalk.ant">

    <target name="instru">
        <mt:instrument
            srcfile="myapp.apk"
            destfile="myapp-post-instrumented.apk"
            agent="monkeytalk-agent-2.0.1.jar"
            androidsdk="/path/to/your/sdk"
            androidtarget="android-17"
            log="log.txt"
            verbose="true" />
        </target>

</project>

7.打开终端并进入您的 "example" 目录

8.发出命令 ant instru -lib monkeytalkpro-ant-2.0.1.beta.jar

9.该命令应该运行,然后在您的 "example" 目录中生成一个兼容 monkeytalk 的 apk 文件,名为 "myapp-post-instrumented.apk"

警告:似乎存在一个错误,即检测过程还会在您的“example”目录中放置另一个名为“myapp-instrumented.apk”的文件,但是该文件将为空。因此,请确保您的目标文件不要在 build.xml 文件中命名为“myapp-instrumented.apk”,否则该空文件将覆盖您的兼容 monkeytalk 的文件。


我在Windows上使用这种方法出现了问题。不知道它是否与平台相关,但ant任务显示“BUILD SUCCESSFUL”,但没有创建apk文件。当我查看log.txt文件时,我可以看到几千行是这种风格的 - [aapt] path\res\values-xxhdpi\drawables.xml:16: error: Resource entry apptheme_textfield_focused_holo_light is already defined. [aapt] res\drawable-xhdpi\apptheme_textfield_focused_holo_light.9.png:0: Originally defined here. 然后会打印“BUILD FILED”错误以及一些来自instrumentor的堆栈跟踪。我需要指定一些库或者其它什么东西吗? - Billda
你把两个jar文件都复制到了你的示例目录中吗?另外,你是否使用-lib命令行参数指定了这个jar文件? - Adam Johns
嗯,我不确定问题可能是什么。我会在 Monkey Talk 论坛上开一个新话题,解释你的问题并粘贴堆栈跟踪。通常 Monkey Talk 的工作人员会进行评论。 - Adam Johns
点赞这个方法!但是,如果你正在使用应用程序兼容库,可能会发现仪器化过程失败,因为存在无法解决的样式问题。看起来使用的是较旧版本的apktool,它不包含与app compat指定的新样式相关的引用。解决此问题的一种方法是在您的应用程序中指定这些样式,但这很可能会使您的应用程序看起来奇怪。 - George Papas
我做的一切都正确,构建成功了,我得到了日志文件,但唯一需要的是一个已经插装的 APK,但我没有得到。为什么会这样,为什么它会说构建成功呢?有人能帮我吗? - ashim888

1

Android Studio是基于Intellij社区版构建的,据我所知,它没有内置AspectJ支持。

您可以尝试添加Intellij AspectJ插件 - 看起来这应该使在Android Studio中设置AspectJ成为可能,尽管我尚未尝试使用它来使MonkeyTalk工作。


谢谢Ben,原来AspectJ插件可以直接从“首选项->插件->浏览存储库”中获取。我已经安装了它,但是在“首选项->Java编译器->使用编译器”中没有看到选择ajc编译器的选项,这是MonkeyTalk所必需的步骤。还有其他想法吗? - Karim Varela
1
据我所知,IDEA中的AspectJ支持仅在商业版本中提供,但是可以通过JetBrains直接支持的插件来使用。 - kriegaex

0
如果您的Android Studio项目是Maven类型,那么您只需要添加一些AspectJ依赖项、MonkeyTalk-Agent依赖项,并创建具有这些依赖项配置的Maven配置文件。
首先,您需要将之前下载的(可在此处获取)用于Android的MonkeyTalk-Agent的jar文件部署到本地Maven仓库。如果您有正确的Maven配置,可以使用以下命令完成:
mvn install:install-file -Dfile=monkeytalk-agent-2.0.4.jar -DgroupId="com.gorillalogic.monkeytalk" -DartifactId="monkeytalk-agent" -Dversion="2.0.4" -Dpackaging="jar" 

当您成功完成此部分时,您可以编辑项目的现有POM文件,并将以下内容添加到项目依赖项中:

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.6.2</version>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjtools</artifactId>
            <version>1.6.2</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>com.gorillalogic.monkeytalk</groupId>
            <artifactId>monkeytalk-agent</artifactId>
            <version>2.0.4</version>
        </dependency>

下一步是创建一个可以在构建过程中添加MonkeyTalk的Maven配置文件:
<profile>
        <id>monkeytalk</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>aspectj-maven-plugin</artifactId>
                    <version>1.4</version>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                        <aspectLibraries>
                            <aspectLibrary>
                                <groupId>com.gorillalogic.monkeytalk</groupId>
                                <artifactId>monkeytalk-agent</artifactId>
                            </aspectLibrary>
                        </aspectLibraries>
                        <showWeaveInfo>true</showWeaveInfo>
                        <verbose>true</verbose>
                        <Xlint>ignore</Xlint>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>compile</goal>
                                <goal>test-compile</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>

下一步是编辑您的应用程序清单文件,授予以下权限:
<!-- Monkeytalk permission -->
<uses-permission android:name="android.permission.GET_TASKS"/>

现在你的项目已经设置好并准备好制作MonkeyTalk应用程序构建。为此,您只需要在项目Maven构建过程中使用您的新monkeytalk配置文件。以下是命令行中使用的示例:

clean install android:deploy android:run -Pmonkeytalk

现在你可以通过MonkeyTalk IDE(这里)连接你的应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接