3

私は 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つの違いがあります。

  1. MonkeyTalk エージェントと ant jar の実際のバージョンは、2.0.1 ではなく 2.0.10 です。

  2. コンパイル ツール 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'
}
4

1 に答える 1

2

同じ問題に直面していましたが、apk を計測できるようになりました。apk をデバッグ モードにする必要があります。Androidスタジオにmonkeytalk libsの依存関係を追加しないでください。app/AndroidManifest.xml に GET_TASKS パーミッションを追加します。バージョン 21 では、この API は減価償却されているため、19 などの低いターゲット dkversion を設定する必要があります。

より低いバージョンで SDK をコンパイルすると、apk を正常にインストルメント化できます。:)

乾杯、スーマン

于 2015-02-11T19:02:27.267 に答える