私は Android Studio を使用しており、Ant を使用して MonkeyTalk エージェントを APK に統合しようとしています。
基本的に、私は次の手順に従いました。
1.MonkeyTalk 2.0.1 Pro ベータ版をダウンロード
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 という名前の新しいファイルを作成し、次の内容を入力します。
<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-21" log="log.txt" verbose="true" /> </target>7.ターミナルを開き、「example」ディレクトリに移動します
8.コマンド ant instru -lib monkeytalkpro-ant-2.0.1.beta.jar を発行します。
9.コマンドが実行され、「example」ディレクトリに「myapp-post-instrumented.apk」というタイトルの monkeytalk 互換の apk が作成されます。</p>
警告: インストルメンテーション プロセスが "example" ディレクトリに "myapp-instrumented.apk" というタイトルの別のファイルを配置するというバグがあるようですが、このファイルは空になります。そのため、build.xml ファイルで宛先ファイルのタイトルが「myapp-instrumented.apk」でないことを確認してください。そうしないと、この空のファイルがモンキートーク互換ファイルを上書きします。
ソース: http://w3facility.org/question/android-studio-and-monkeytalk/#answer-23016422
私が行った手順と元の手順には2つの違いがあります。
MonkeyTalk エージェントと ant jar の実際のバージョンは、2.0.1 ではなく 2.0.10 です。
コンパイル ツール 21.1.2 では、monkeytalkpro-ant-2.0.10.beta.jar に統合された APKTool はファイルを抽出できません。そのため、APKTool を更新し、新しい jar を生成しました。ここで見つけることができます: https://www.dropbox.com/s/qsjaz5g15hy9i7k/monkeytalkpro-ant-2.0.10.beta.mod.jar?dl=0
しかし、この修正により、ant は APK を「計測」できなくなります。Ant はファイルの dex に問題があります。
どんな助けや提案も大歓迎です。
Pd1: uphyca(v0.9.7) から、aspectj の gradle android プラグインを使用して Android studio をコンパイルしようとしましたが、動作しません。プロジェクトはコンパイルされますが、起動しようとするとクラッシュします。
Pd2: ここにいくつかのログがあります:
-プリコンパイル:
-コンパイル:
-ポストコンパイル:
-難読化:
weaved-0d60e12eb7c45a42662ee42c5398a922.jar [dx] [dx] シミュレーションからの例外: [dx] ローカル 0005: 無効な [dx] [dx] ... バイトコード オフセット 0000000b [dx] ローカル [0000]: Landroid/support/v7/widget /ActionMenuView; [dx] locals[0001]: Landroid/view/ViewGroup$LayoutParams; [dx] locals[0002]: [dx] locals[0003]: [dx] locals[0004]: [dx] locals[0005]: [dx] ...ブロック 000b で作業中 [dx] ...whileメソッド generateLayoutParams に取り組んでいます:(Landroid/view/ViewGroup$LayoutParams;)Landroid/support/v7/widget/ActionMenuView$LayoutParams; [dx] ... generateLayoutParams の処理中 (Landroid/view/ViewGroup$LayoutParams;)Landroid/support/v7/widget/ActionMenuView$LayoutParams; [dx] ... Android/support/v7/widget/ActionMenuView.class [dx] [dx] 1 エラーの処理中。中止する
BUILD FAILED /private/var/folders/fb/xhjph6n17sl_tnc7gfs_0ny80000gp/T/tmp_AndroidInstrumentor1423638478563_1/app-debug/build_master.xml:892: The following error occurred while executing this line: /private/var/folders/fb/xhjph6n17sl_tnc7gfs_0ny80000gp/T/tmp_AndroidInstrumentor1423638478563_1 /app-debug/build_master.xml:894: 次の行の実行中に次のエラーが発生しました: /private/var/folders/fb/xhjph6n17sl_tnc7gfs_0ny80000gp/T/tmp_AndroidInstrumentor1423638478563_1/app-debug/build_master.xml:906: 次のエラーが発生しましたこの行を実行: /private/var/folders/fb/xhjph6n17sl_tnc7gfs_0ny80000gp/T/tmp_AndroidInstrumentor1423638478563_1/app-debug/build_master.xml:283: null が返されました: 1
合計時間: 14 秒: エラー: プロセスはエラーで終了しました: 1 (終了値: 1)
/private/var/folders/fb/xhjph6n17sl_tnc7gfs_0ny80000gp/T/tmp_AndroidInstrumentor1423638478563_1/app-debug/bin/app-debug-debug.apk にインストルメント化された APK ファイルが作成されませんでした
apk '/Users/monkeyTalk/app-debug.apk' の計測エラー: 計測された APK ファイルが次の場所に作成されませんでした: /private/var/folders/fb/xhjph6n17sl_tnc7gfs_0ny80000gp/T/tmp_AndroidInstrumentor1423638478563_1/app-debug/bin/app-debug-debug .apk
com.gorillalogic.monkeytalk.instrumentor.android.AndroidInstrumentor$InstrumentationException: インストルメント化された APK ファイルが作成されませんでした: /private/var/folders/fb/xhjph6n17sl_tnc7gfs_0ny80000gp/T/tmp_AndroidInstrumentor1423638478563_1/app-debug/bin/app-debug-debug.apk com.gorillalogic.monkeytalk.instrumentor.android.AndroidInstrumentor.copyInstrumentedApk(AndroidInstrumentor.java:244) com.gorillalogic.monkeytalk.instrumentor.android.AndroidInstrumentor.beginInstrumentation(AndroidInstrumentor.java:173) com.gorillalogic.monkeytalk.instrumentor .android.AndroidInstrumentor.instrumentApk(AndroidInstrumentor.java:130) at com.gorillalogic.monkeytalk.ant.InstrumentTask.execute(InstrumentTask.java:62) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) ) sun.reflect.NativeMethodAccessorImpl で。java.lang.reflect.Method.invoke(Method.java: 606) org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) で org.apache.tools.ant.Task.perform(Task.java:348) で org.apache.tools.ant .Target.execute(Target.java:390) at org.apache.tools.ant.Target.performTasks(Target.java:411) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399) org.apache.tools.ant.Project.executeTarget(Project.java:1368) at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) at org.apache.tools.ant.Project. org.apache.tools の executeTargets(Project.java:1251)。org.apache.tools.ant.Main.startAnt(Main.java:217) の ant.Main.runBuild(Main.java:809) org.apache.tools.ant.launch.Launcher.run(Launcher.java: 280) org.apache.tools.ant.launch.Launcher.main (Launcher.java:109) で
完全なログは次のとおりです: https://www.dropbox.com/s/y3mo9ifgalpzf29/log.txt?dl=0
アップデート
これは build.gradle ファイルの内容です。
apply plugin: 'com.android.application'
apply plugin: 'robolectric'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.jiahaoliuliu.monkeytalk"
minSdkVersion 14
targetSdkVersion 19
versionCode 52
versionName "1.9999"
multiDexEnabled true
testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
monkeytalk.initWith(buildTypes.debug)
monkeytalk {
applicationIdSuffix ".monkey"
}
}
sourceSets {
androidTest {
setRoot('src/test')
}
}
dexOptions {
javaMaxHeapSize "4g"
}
lintOptions {
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile 'com.android.support:appcompat-v7:21.+'
compile 'com.github.chrisbanes.photoview:library:1.2.3'
compile 'com.etsy.android.grid:library:1.0.5'
compile 'com.facebook.android:facebook-android-sdk:3.21.1'
compile 'com.google.android.gms:play-services-base:6.5.+'
compile 'com.google.android.gms:play-services-wallet:6.5.+'
compile 'com.google.android.gms:play-services-ads:6.5.+'
compile 'com.google.android.gms:play-services-maps:6.5.+'
compile 'com.google.android.gms:play-services-drive:6.5.+'
compile 'com.google.android.gms:play-services-appindexing:6.5.+'
compile 'com.google.android.gms:play-services-location:6.5.+'
compile 'com.google.android.gms:play-services-identity:6.5.+'
compile 'com.google.android.gms:play-services-plus:6.5.+'
compile 'com.android.support:multidex:1.0.0'
compile project(':Adjust')
compile project(':aFileChooser-cbccac1d1cb74a6d57d25c5ded61e4bf4fc40c91')
compile 'com.parse.bolts:bolts-android:1.+'
compile 'com.android.support:recyclerview-v7:+'
androidTestCompile 'org.robolectric:robolectric:2.4'
androidTestCompile('junit:junit:4.12')
androidTestCompile('org.mockito:mockito-core:1.10.19')
}
}
robolectric {
include '**/*Test.class'
}