Android Gradle PluginでJaCoCoを有効にしてテストするとjava.lang.VerifyError発生 (2)

2014/05/11
2021/02/25

Android Gradle PluginでJaCoCoを使ったカバレッジ計測を試したがjava.lang.VerifyErrorが発生したというエントリを書いた。

どうやらこの影響が及ぶのはリフレクションだけではないらしく、通常のIntentによる起動が失敗した。
以下のようなパターンで、testCoverageEnabled = trueとなったビルドでインストールしたアプリがjava.lang.VerifyErrorによりクラッシュした。

まずAndroidManifest.xml。
途中は省略するが、トップ画面からメニューを開き
「About」の項目をタップするとAboutActivityが開き
アプリの概要が表示される、というもの。

<application
:
        <activity
                android:name=".AboutActivity"
                android:label="@string/title_activity_about" />
</application>

トップ画面のMainActivityでは以下のように書いている。

@Override
public boolean onOptionsItemSelected(final MenuItem menu) {
    int id = menu.getItemId();
    if (id == R.id.menu_about) {
        startActivity(new Intent(getApplicationContext(),
            AboutActivity.class));
        return true;
    }
    return false;
}

これが、通常のビルドなら問題なかったが上記の通りカバレッジ計測を有効にしたら失敗した。
(自動テストでなく手動で動かしても同様)

実際のプロジェクトで利用するにはまだ問題がありそうだ。。。

© 2010 ksoichiro