Android Studio и MonkeyTalk?
Кто-нибудь успешно настроил MonkeyTalk с Android Studio?
Моя главная проблема на данный момент заключается в том, что я не вижу способа установить компилятор Java в аспект
Я считаю, что есть какой-то способ сделать это в custom_rules.xml, но я еще не видел, как это сделать.
Это может привести к, возможно, несвязанной проблеме, но в последней версии Android Studio, которую я использую (0.1.1), я не вижу способа запустить сборку муравьев из Android Studio.
Любые предложения приветствуются!
4 ответа
Подход, который я нашел, работает хорошо для использования плагина android-gradle-aspject-j, найденного здесь https://github.com/uPhyca/gradle-android-aspectj-plugin
Что я сделал, так это создал новый тип сборки (monkeytalk), включил jark talk jar в качестве зависимости компиляции только для этого типа сборки и применил вышеупомянутый плагин aspectj. Это гарантирует, что переплетение разговоров обезьян происходит для типа сборки разговоров обезьян.
Вот фрагмент того, как выглядит моя сборка 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 для типов сборки Monkey Talk, который добавляет необходимые разрешения, например, GET_TASKS и INTERNET.
Чтобы ознакомиться с полным примером приложения, посмотрите этот репозиторий на github https://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. Создайте новую пустую папку на рабочем столе под названием "пример" или что угодно.
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. Создайте новый файл с именем build.xml в каталоге "example" и заполните его следующим текстом:
<?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.Issue ant instru -lib monkeytalkpro-ant-2.0.1.beta.jar
9. Команда должна запуститься, а затем создать совместимый с monkeytalk apk в вашем каталоге "example" с названием "myapp-post-instrumented.apk"
ВНИМАНИЕ: Кажется, есть ошибка, когда процесс инструментария также поместит другой файл в ваш каталог "example" под названием "myapp-instrumented.apk", но этот файл будет пустым. Поэтому убедитесь, что ваш файл назначения не называется "myapp-instrumented.apk" в вашем файле build.xml, иначе этот пустой файл перезапишет ваш файл, совместимый с monkeytalk.
Android-студия построена из версии сообщества Intellij, которая, насколько мне известно, не имеет встроенной поддержки AspectJ.
Вы можете попробовать добавить плагин Intellij AspectJ - похоже, это должно позволить установить AspectJ в Android Studio, хотя на самом деле я еще не пытался заставить MonkeyTalk работать с этим.
Если ваш проект Android Studio имеет тип Maven, то все, что вам нужно сделать, это добавить некоторые зависимости AspectJ, зависимость MonkeyTalk-Agent и создать профиль maven с настройкой для этих зависимостей.
Сначала вам нужно будет развернуть загруженный ранее (доступный здесь) файл jar с MonkeyTalk-Agent для 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, которое доступно здесь.