5

4.4 / Kitkat未満のAndroidバージョンで実行すると激しくクラッシュするAndroidテストがいくつかあります。

これらは、私のbuild.gradleにあるライブラリです

androidTestCompile 'org.mockito:mockito-core:1.9.5'
androidTestCompile 'com.google.dexmaker:dexmaker:1.1'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.1'

テストは Android バージョン 4.4 で期待どおりに実行されますが、キャッシュを配置する場所を Dexmaker に伝えるためにいくつかのヒントを追加する必要がありました。

System.setProperty("dexmaker.dexcache", getInstrumentation().getContext().getCacheDir().getPath());

デバイスからの logcat 出力は次のとおりです。

D/dalvikvm( 1712): GC_FOR_ALLOC は 479K を解放し、19% は 2532K/3124K を解放し、3 ミリ秒を一時停止し、合計 3 ミリ秒
D/dalvikvm( 1712): GC_CONCURRENT 解放 427K、18% 解放 2595K/3136K、一時停止 1ms+0ms、合計 3ms
D/dalvikvm( 1712): GC_CONCURRENT 解放 311K、16% 解放 2686K/3188K、一時停止 3ms+0ms、合計 4ms
D/dalvikvm( 1712): GC_FOR_ALLOC は 127K を解放し、11% は 2852K/3188K を解放し、1 ミリ秒を一時停止し、合計 1 ミリ秒
D/dalvikvm( 1712): GC_FOR_ALLOC は 123K を解放し、7% は 3239K/3476K を解放し、4 ミリ秒を一時停止し、合計 4 ミリ秒
D/dalvikvm( 1712): GC_CONCURRENT が 53K を解放、3276K/3476K を 6% 解放、一時停止 2ms+0ms、合計 10ms
D/dalvikvm(1712): DexOpt: --- BEGIN 'Generated-1815896169.jar' (bootstrap=0) ---
D/dalvikvm(1728): DexOpt: ロード 1ms、verify+opt 0ms、82180 バイト
D/dalvikvm(1712): DexOpt: --- END 'Generated-1815896169.jar' (成功) ---
D/dalvikvm(1712): DEX prep '/data/data/my.app.identifier/cache/Generated-1815896169.jar': 0ms で解凍、15ms で書き換え
I/dalvikvm(1712): DexOpt: 不正なメソッド アクセス (Ljava/lang/Object;.internalClone (Ljava/lang/Cloneable;)Ljava/lang/Object; from LBackendAddressServiceImpl_Proxy; を呼び出します)
I/dalvikvm (1712): メソッド my.app.identifier.backend.BackendAddressServiceImpl.internalClone が見つかりませんでした。メソッド BackendAddressServiceImpl_Proxy.internalClone から参照されています。
W/dalvikvm(1712): VFY: 仮想メソッド 50 を解決できません: Lmy/app/identifier/backend/BackendAddressServiceImpl;.internalClone (Ljava/lang/Cloneable;)Ljava/lang/Object;
D/dalvikvm( 1712): VFY: オペコード 0x6f を 0x0019 に置き換えます
I/dalvikvm(1712): DexOpt: 不正なメソッド アクセス (Ljava/lang/Object;.internalClone (Ljava/lang/Cloneable;)Ljava/lang/Object; from LBackendAddressServiceImpl_Proxy; を呼び出します)
I/dalvikvm(1712): メソッド my.app.identifier.backend.BackendAddressServiceImpl.internalClone が見つかりませんでした。メソッド BackendAddressServiceImpl_Proxy.super$internalClone$java_lang_Object から参照されています
W/dalvikvm(1712): VFY: 仮想メソッド 50 を解決できません: Lmy/app/identifier/backend/BackendAddressServiceImpl;.internalClone (Ljava/lang/Cloneable;)Ljava/lang/Object;
D/dalvikvm( 1712): VFY: オペコード 0x6f を 0x0000 に置き換えます
D/dalvikvm( 1712): GC_FOR_ALLOC は 652K を解放し、20% は 3138K/3904K を解放し、4 ミリ秒を一時停止し、合計 4 ミリ秒
D/dalvikvm(1712): DexOpt: --- BEGIN 'Generated1066861752.jar' (bootstrap=0) ---
D/dalvikvm( 1712): GC_CONCURRENT が 44K を解放、21% が 3103K/3904K を解放、一時停止 0ms+1ms、合計 2ms
D/dalvikvm(1729): DexOpt: ロード 0ms、verify+opt 0ms、81004 バイト
D/dalvikvm(1712): DexOpt: --- END 'Generated1066861752.jar' (成功) ---
D/dalvikvm(1712): DEX prep '/data/data/my.app.identifier/cache/Generated1066861752.jar': 0ms で解凍、13ms で書き換え
I/dalvikvm(1712): DexOpt: 不正なメソッド アクセス (Ljava/lang/Object;.internalClone (Ljava/lang/Cloneable;)Ljava/lang/Object; from LAppConfigServiceImpl_Proxy; を呼び出します)
I/dalvikvm (1712): メソッド my.app.identifier.config.AppConfigServiceImpl.internalClone が見つかりませんでした。メソッド AppConfigServiceImpl_Proxy.internalClone から参照されています
W/dalvikvm(1712): VFY: 仮想メソッド 17 を解決できません: Lmy/app/identifier/config/AppConfigServiceImpl;.internalClone (Ljava/lang/Cloneable;)Ljava/lang/Object;
D/dalvikvm( 1712): VFY: オペコード 0x6f を 0x0019 に置き換えます
I/dalvikvm(1712): DexOpt: 不正なメソッド アクセス (Ljava/lang/Object;.internalClone (Ljava/lang/Cloneable;)Ljava/lang/Object; from LAppConfigServiceImpl_Proxy; を呼び出します)
I/dalvikvm(1712): メソッド my.app.identifier.config.AppConfigServiceImpl.internalClone が見つかりませんでした。メソッド AppConfigServiceImpl_Proxy.super$internalClone$java_lang_Object から参照されています
W/dalvikvm(1712): VFY: 仮想メソッド 17 を解決できません: Lmy/app/identifier/config/AppConfigServiceImpl;.internalClone (Ljava/lang/Cloneable;)Ljava/lang/Object;
D/dalvikvm( 1712): VFY: オペコード 0x6f を 0x0000 に置き換えます
D/dalvikvm( 1712): GC_CONCURRENT が 536K を解放、22% が 3078K/3904K を解放、一時停止 1ms+1ms、合計 7ms
D/dalvikvm (1712): WAIT_FOR_CONCURRENT_GC が 3 ミリ秒ブロックされました
D/dalvikvm( 1712): GC_FOR_ALLOC は 492K を解放し、21% は 3098K/3904K を解放し、2 ミリ秒を一時停止し、合計 2 ミリ秒
D/dalvikvm( 1712): GC_FOR_ALLOC は 468K を解放し、20% は 3142K/3904K を解放し、2 ミリ秒を一時停止し、合計 2 ミリ秒
D/dalvikvm( 1712): GC_CONCURRENT 解放 247K、19% 解放 3174K/3904K、一時停止 2ms+0ms、合計 4ms
F/libc (1712): 0x00000000 で致命的なシグナル 11 (SIGSEGV) (コード = 1)、スレッド 1725 (ationTestRunner)
I/DEBUG ( 109): *** *** *** *** *** *** *** *** *** *** *** *** *** * ** ***
I/DEBUG ( 109): ビルド フィンガープリント: 'generic/vbox86p/vbox86p:4.2.2/JDQ39E/eng.buildbot.20140523.235904:userdebug/test-keys'
I/DEBUG ( 109): リビジョン: '0'
私/デバッグ (109): pid: 1712、tid: 1725、名前: ationTestRunner >>> my.app.identifier
私/デバッグ (109):
I/DEBUG (109): スタック:
私/デバッグ (109): 98c5bba0 00000000  
私/デバッグ (109): 98c5bba4 00000000  
私/デバッグ (109): 98c5bba8 00000000  
私/デバッグ (109): 98c5bbac 00000000  
私/デバッグ (109): 98c5bbb0 00000000  
私/デバッグ (109): 98c5bbb4 00000000  
私/デバッグ (109): 98c5bbb8 00000000  
私/デバッグ (109): 98c5bbbc 00000000  
私/デバッグ (109): 98c5bbc0 00000000  
私/デバッグ (109): 98c5bbc4 00000000  
私/デバッグ (109): 98c5bbc8 00000000  
私/デバッグ (109): 98c5bbcc 00000000  
私/デバッグ (109): 98c5bbd0 00000000  
私/デバッグ (109): 98c5bbd4 00000000  
私/デバッグ (109): 98c5bbd8 00000000  
私/デバッグ (109): 98c5bbdc 00000000  
I/DEBUG ( 109): #00 98c5bbe0 a652fb68 /dev/ashmem/dalvik-heap (削除済み)
私/デバッグ (109): 98c5bbe4 a6487fe8 /dev/ashmem/dalvik-heap (削除)
I/DEBUG (109): 98c5bbe8 a647f1c0 /dev/ashmem/dalvik-heap (削除済み)
私/デバッグ (109): 98c5bbec b66af3d1 /system/lib/libdvm.so (dvmRemoveFromReferenceTable(ReferenceTable*, Object**, Object*)+33)
私/デバッグ (109): 98c5bbf0 b6752ca0 /system/lib/libdvm.so
私/デバッグ (109): 98c5bbf4 b6751ff4 /system/lib/libdvm.so
私/デバッグ (109): 98c5bbf8 00000000  
私/デバッグ (109): 98c5bbfc b66b3fd4 /system/lib/libdvm.so (dvmThreadSelf()+36)
私/デバッグ (109): 98c5bc00 00000007  
I/DEBUG (109): 98c5bc04 a652fc08 /dev/ashmem/dalvik-heap (削除済み)
I/DEBUG (109): 98c5bc08 a647f198 /dev/ashmem/dalvik-heap (削除済み)
私/デバッグ (109): 98c5bc0c b6751ff4 /system/lib/libdvm.so
私/デバッグ (109): 98c5bc10 b7d30a28 [ヒープ]
I/DEBUG (109): 98c5bc14 a647f180 /dev/ashmem/dalvik-heap (削除済み)
私/デバッグ (109): 98c5bc18 98c5bcb8 [スタック:1725]
私/デバッグ (109): 98c5bc1c b66ba5b7 /system/lib/libdvm.so (dvmReleaseTrackedAlloc+71)
I/DEBUG (109): ................
私/デバッグ (109): #01 98c5bcc0 b7d30a28 [ヒープ]
私/デバッグ (109): 98c5bcc4 00000000  
私/デバッグ (109): 98c5bcc8 00000000  
私/デバッグ (109): 98c5bccc 00000000  
私/デバッグ (109): 98c5bcd0 00000000  
私/デバッグ (109): 98c5bcd4 b6751ff4 /system/lib/libdvm.so
私/デバッグ (109): 98c5bcd8 b7d30a28 [ヒープ]
I/DEBUG (109): 98c5bcdc b665bd72 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+178)
私/デバッグ (109): 98c5bce0 b7d30a28 [ヒープ]
私/デバッグ (109): 98c5bce4 00000000  
私/デバッグ (109): 98c5bce8 b7596339 /system/lib/libc.so (pthread_mutex_lock+9)
私/デバッグ (109): 98c5bcec b761eff4 /system/lib/libc.so
私/デバッグ (109): 98c5bcf0 b7cf4e98 [ヒープ]
私/デバッグ (109): 98c5bcf4 00000018  
私/デバッグ (109): 98c5bcf8 b7cf4e68 [ヒープ]
私/デバッグ (109): 98c5bcfc b7596509 /system/lib/libc.so (pthread_mutex_unlock+25)
I/DEBUG (109): ................
I/DEBUG ( 109): #02 b7d30a30 9f27f620 /dev/ashmem/dalvik-LinearAlloc (削除済み)
I/DEBUG (109): b7d30a34 9eee8000 /dev/ashmem/dalvik-aux-structure (削除済み)
I/DEBUG (109): b7d30a38 a647f180 /dev/ashmem/dalvik-heap (削除済み)
私/デバッグ (109): b7d30a3c 00000000  
私/デバッグ (109): b7d30a40 98c5bc70 [スタック:1725]
私/デバッグ (109): b7d30a44 00000000  
私/デバッグ (109): b7d30a48 98c5bd1c [スタック:1725]
私/デバッグ (109): b7d30a4c 0000000a  
私/デバッグ (109): b7d30a50 00000000  
私/デバッグ (109): b7d30a54 b665611c /system/lib/libdvm.so
私/デバッグ (109): b7d30a58 00000000  
私/デバッグ (109): b7d30a5c 00000000  
私/デバッグ (109): b7d30a60 9edb6670 /system/framework/ext.jar
私/デバッグ (109): b7d30a64 98c5c300  
私/デバッグ (109): b7d30a68 00000000  
私/デバッグ (109): b7d30a6c 00000000  
D/AndroidRuntime(1704): VM をシャットダウンしています
I/ActivityManager( 464): プロセス my.app.identifier (pid 1712) が停止しました。
W/ActivityManager( 464): アプリ my.app.identifier 実行中のインストルメンテーション ComponentInfo{my.app.identifier.test/android.test.InstrumentationTestRunner} のクラッシュ
D/dalvikvm( 1704): GC_CONCURRENT は 100K を解放し、19% は 462K/568K を解放し、一時停止 0ms+0ms、合計 2ms
D/jdwp (1704): ウェイクアップ シグナルを受信しました。選択を解除しました
D/dalvikvm(1704): デバッガーが切り離されました。オブジェクト レジストリには 1 個のエントリがありました
I/ActivityManager( 464): パッケージの強制停止 my.app.identifier appid=10048 user=0
D/Zygote (198): プロセス 1712 がシグナルによって終了しました (11)
W/ThrottleService( 464): iface rmnet0 の統計情報が見つかりません

「古い」AndroidバージョンでMockito / Dexmakerを実行する際のヒントはありますか?

4

1 に答える 1

0

それができたとしても(またはその間に変更したものでも)100%ではありませんが、Dexmaker 1.2ではこれが修正されているようです.

于 2015-04-28T09:04:49.920 に答える