AndroidプロジェクトにRobolectricを追加しました。19.0.1のビルドツールでAndroid Studioを使用しています。
次のコマンドでテストを実行できます。
$./gradlew test
うまく実行されます。
私が試してみると:
$ gradle installDebug
それもうまく実行されます:
$ ./gradlew installDebug
WARNING: Dependency commons-logging:commons-logging:1.1.1 is ignored for debugTest as it may be conflicting with the internal version provided by Android.
In case of problem, please repackage it with jarjar to change the class packages
WARNING: Dependency org.Apache.httpcomponents:httpclient:4.0.3 is ignored for debugTest as it may be conflicting with the internal version provided by Android.
In case of problem, please repackage it with jarjar to change the class packages
The Test.testReportDir property has been deprecated and is scheduled to be removed in Gradle 2.0. Please use the Test.getReports().getHtml().getDestination() property instead.
:app:compileDebugNdk
:app:preBuild
:app:preDebugBuild
:app:checkDebugManifest
:app:prepareDebugDependencies
:app:compileDebugAidl
:app:compileDebugRenderscript
:app:generateDebugBuildConfig
:app:mergeDebugAssets
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources
:app:mergeDebugResources
:app:processDebugManifest
:app:processDebugResources
:app:generateDebugSources
:app:compileDebugJava
:app:preDexDebug
:app:dexDebug
:app:processDebugJavaRes UP-TO-DATE
:app:validateDebugSigning
:app:packageDebug
:app:installDebug
8266 KB/s (46166 bytes in 0.005s)
pkg: /data/local/tmp/app-debug-unaligned.apk
Success
BUILD SUCCESSFUL
Total time: 4.291 secs
ただし、Android Studioからデバイスまたはエミュレーターでプロジェクトを実行しようとすると、次のようになります。
Execution failed for task ':app:dexDebug'.
> com.Android.ide.common.internal.LoggedErrorException: Failed to run command:
/Applications/Android Studio.app/sdk/build-tools/19.0.1/dx --dex --output /Users/fstephany/Code/Android/RoboElectricTestingProject/app/build/dex/debug /Users/fstephany/Code/Android/RoboElectricTestingProject/app/build/classes/debug /Users/fstephany/Code/Android/RoboElectricTestingProject/app/build/dependency-cache/debug
Error Code:
1
Output:
Unable to locate a Java Runtime to invoke.
この問題をどこで探すべきかについてのヒントはありますか?いつでもinstallDebug
して、CLIまたはStudioからアプリを起動できますが、邪魔になります。
期限切れのgradleデーモンが原因で、バックグラウンドでパフォーマンスの問題が発生している可能性があります。 3時間アイドル状態になった後、gradleでクリーンアップできると思いましたが、そうではないようです。ターミナルに移動し、gradleファイルがあるプロジェクトのルートフォルダーに移動して、コマンドを入力します
./gradlew --stop
ビルドをもう一度実行してみてください。うまくいけば、それは私のようにあなたの問題を解決します。
これが問題の原因となった理由を理解しようとしていますが、まだ十分な理由が見つかりません。何か見つけたら答えを編集します。
[〜#〜]更新[〜#〜]
現在、メモリ不足が発生すると、デーモンに深刻な問題が発生します。プレッシャーがかかると、デーモンプロセスはGCスラッシュを示します。
これに関する1つの仮説は、特にメタクラスインスタンスが弱参照キャッシュに保持されているGroovyメタクラスシステムでの弱参照キャッシュの使用です。これはデーモン以外の場合にも当てはまるため、必ずしもデーモンの問題ではないことに注意してください。ただし、デーモンがメモリをリークすることで悪化するため、メモリプレッシャー状態が発生する可能性が高くなります。
これは決定的な答えを与えるものではありませんが、デーモンが(他のものと一緒に)あなたが見ているものの原因であるかもしれないという予感を与えます。いくつかのgradleタスクは通常の10倍の時間がかかるのを見てきましたが、-stopを実行するとこれらの問題も軽減されます。
私の場合、パス変数にJava_HOME
を追加し(Android Studio->設定->パス変数)、前述のようにGradleデーモンを再起動します(./gradlew --stop
)。
Macでは、/usr/libexec/Java_home -v 1.6
を使用してJavaディレクトリ(バージョン6)を見つけることができます。
Gradle 1.10に戻すと、(OS-Xで)うまくいきました。 Android-Studioでgradle-wrapperプロパティを編集したり、ローカルのgradleディストリビューションを構成したりできます
Build.gradleファイルでsourceCompatibilityとtargetCompatibilityを設定してみてください。 Java 1.7の場合、次のようになります。
Android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}