きっかけ
Androidアプリの開発を爆速化させるInstant Runを今日から使おう
可及的速やかに導入しようと思ってトライしました。
現象
先ほどの記事にある手順で、既存アプリにInstant Runを適用してみました。
だがしかし、ビルドすると下記エラーが出ます。
Error:Execution failed for task ':appname:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2
ここにあるようにgradleのオプションを足してみたのですが、
build.gradle
android {
....
dexOptions {
dexInProcess = true
}
...
}
今度は別のエラーが出ました。
Error:Execution failed for task ':appname:transformClassesWithDexForDebug'.
> java.lang.reflect.InvocationTargetException
ホントAndroid界厳しい。
原因
どうやらInstant Runを適用すると20K個ほどのメソッドが既存プロジェクトに足されるようです。
65K問題が起きた時の犯人を調べる方法を見ながらおそるおそるメソッド数を数えてみたところ...。
_人人人人_
> 63195 <
 ̄Y^Y^Y^Y ̄
それによりメソッドの65K問題を踏んでしまったのが原因のようです。
対策(未解決)
com.android.tools.build:gradle:2.0.0-alpha3
で修正される模様。気長に待つとします。