【问题标题】:Android Studio and MonkeyTalk?Android Studio 和 MonkeyTalk?
【发布时间】:2013-05-29 18:12:13
【问题描述】:

有人用 Android Studio 成功设置了 MonkeyTalk 吗?

此时我的主要问题是我看不到将 java 编译器设置为 aspectj 的方法

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

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

任何建议表示赞赏!

【问题讨论】:

    标签: android ant aspectj android-studio monkeytalk


    【解决方案1】:

    我发现一个很好的方法是使用 android-gradle-aspject-j 插件在这里找到https://github.com/uPhyca/gradle-android-aspectj-plugin

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

    这是我的构建 xml 的外观的 sn-p

    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/

    【讨论】:

    • 你能用配置好的monkeyTalk展示你的项目吗?
    • 谢谢乔治的回答
    • 没有问题。如果您觉得有帮助,请考虑对答案进行投票。干杯
    • 感谢@GeorgePapas 的演示。启动演示然后转到 MonkeyTalkIDE 后,看起来录制按钮仍然处于禁用状态。您是否已成功与 MonkeyTalk 社区合作?
    • @ShyGuy 是的。您需要确保已将 ide 连接到模拟器
    【解决方案2】:

    MonkeyTalk(从 2.0.1 版开始)现在已经发布了一些工具,可以使用独立于任何 IDE 的 MonkeyTalk “检测”您已经构建的常规 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.打开终端并 cd 进入您的“示例”目录

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

    9.该命令应该运行,然后在您的“示例”目录中生成一个与monkeytalk兼容的apk,标题为“myapp-post-instrumented.apk”

    警告:似乎存在一个错误,检测过程还将在您的“示例”目录中放置另一个名为“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 已定义。 [aapt] res\drawable-xhdpi\apptheme_textfield_focused_holo_light.9.png:0:最初在这里定义。然后打印“BUILD FILED”错误并来自仪器的一些堆栈跟踪。我必须指定一些库吗?
    • 您是否将两个 jar 文件都复制到了示例目录中?您是否还使用 -lib 命令行参数指定了 jar?
    • 嗯,我不确定可能是什么问题。我会在猴子谈话论坛上开始一个新话题,解释你的问题并粘贴堆栈跟踪。通常猴子谈话工作人员会发表评论。
    • 赞成这种方法!但是,如果您使用的是应用兼容库,您可能会发现检测过程会由于无法解析的样式问题而失败。看起来正在使用旧版本的 apktool,它不包含对 app compat 中指定的新样式的引用。解决方法是在您的应用中指定这些样式,尽管这很可能会让您的应用看起来很奇怪。
    • 我把一切都做好了,它构建成功,我得到了日志文件,但我唯一需要的是一个我没有检测过的 APK。为什么会这样,为什么它说构建成功呢?有人可以帮我吗?
    【解决方案3】:

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

    您可以尝试添加 Intellij AspectJ plugin - 看起来这应该可以在 Android Studio 中设置 AspectJ,尽管我实际上还没有尝试让 MonkeyTalk 使用它。

    【讨论】:

    • 谢谢 Ben,原来 aspectJ 插件可以直接从 Preferences->Plugin->Browse repositories 获得。我安装了它,但是在 Preferences->Java Compiler->Use compiler to pick an ajc compiler 中没有看到选项,这是 MonkeyTalk 的必要步骤。还有其他想法吗?
    • IDEA 中的 AFAIK AspectJ 支持仅在商业版中可用,但开箱即用,JetBrains 直接支持插件。
    【解决方案4】:

    如果您的 Android Studio 项目是 Maven 类型,那么您需要做的就是添加一些 AspectJ 依赖项、MonkeyTalk-Agent 依赖项并使用这些依赖项的配置制作 maven 配置文件。

    首先,您需要使用 MonkeyTalk-Agent for Android 将之前下载的(可用here)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>
    

    下一步是创建可以在构建期间添加 MonekyTalk 的 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 here 与您的应用程序连接。

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      相关资源
      最近更新 更多