是否有人成功设置MonkeyTalk与Android Studio?
我在这一点上的主要问题是我没有看到一个方法来设置java编译器为aspectj
我相信在custom_rules.xml中有一些方法可以做到这一点,但我还没有看到如何做到这一点。
这可能会导致一个无关的问题,但在我使用的最新版本Android Studio(0.1.1)中,我没有看到从Android Studio内部运行ant构建的方法。
感谢任何建议!
我发现一个很好的方法是使用android- grad- aspject-j插件https://github.com/uPhyca/gradle-android-aspectj-plugin
我所做的是创建一个新的构建类型(monkeytalk),将monkeytalk 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"))
}
我还为monkey talk构建类型添加了AndroidManifest.xml文件,其中添加了所需的权限,即GET_TASKS和INTERNET
要获得完整的示例应用程序,请查看这个github repohttps://github.com/georgepapas/android-gradle-monkey-talk-demo/
MonkeyTalk(截至2.0.1版本)现在已经发布了工具来"仪器"你已经建立的常规apk与MonkeyTalk独立于任何IDE。在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。打开终端并将cd放入"example"目录
8。发布命令ant instru -lib monkeytalkpro-ant-2.0.1.beta.jar
9。该命令应该运行,然后在您的"example"目录下生成一个monkeytalk兼容的apk,标题为"myapp-post-instrumented.apk"
警告:似乎有一个错误,检测过程也会在你的"示例"目录下放置另一个名为"myapp-instrumented.apk"的文件,但这个文件将是空的。因此,请确保您的目标文件在build.xml文件中标题不是"myapp-instrumented.apk",否则此空文件将覆盖您的monkeytalk兼容文件。
Android studio是基于Intellij社区版构建的,据我所知,Intellij并没有内置AspectJ支持。
你可以尝试添加Intellij AspectJ插件-看起来这应该可以在Android Studio中设置AspectJ,尽管我还没有真正尝试让MonkeyTalk使用这个工作
如果你的Android Studio项目是Maven类型的,那么你所需要做的就是添加一些AspectJ依赖项,MonkeyTalk-Agent依赖项,并为这些依赖项创建Maven配置文件。
首先,你需要部署之前下载的jar文件MonkeyTalk-Agent for Android到你本地的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>
下一步是创建maven配置文件,可以在构建期间添加MonekyTalk:
<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连接您的应用程序。