私はandroid testing codelabに従っており、同様の方法で自分のアプリをモデル化しようとしています。そうすることは、それをすべてうまく広げたわけではありません。実行しようとすると、AppCompatActivityやTextInputLayoutなどのサポートライブラリクラスを使用しているときに私はエラーが発生します。エラーは言う:Android計測機器ビルド
The type android.support.design.widget.TextInputLayout cannot be found in source files, imported jack libs or the classpath
私は./gradlew app:dependencies
を実行し、実際にこれらがクラスパスに見つからない:
androidTestCompile - Classpath for compiling the androidTest sources.
+--- com.android.support.test:runner:0.5
| +--- com.android.support:support-annotations:23.1.1 -> 25.3.1
| +--- junit:junit:4.12
| | \--- org.hamcrest:hamcrest-core:1.3
| \--- com.android.support.test:exposed-instrumentation-api-publish:0.5
+--- com.android.support.test:rules:0.5
| \--- com.android.support.test:runner:0.5 (*)
+--- com.android.support.test.espresso:espresso-core:2.2.2
| +--- com.squareup:javawriter:2.1.1
| +--- com.android.support.test:rules:0.5 (*)
| +--- com.android.support.test:runner:0.5 (*)
| +--- javax.inject:javax.inject:1
| +--- org.hamcrest:hamcrest-library:1.3
| | \--- org.hamcrest:hamcrest-core:1.3
| +--- org.hamcrest:hamcrest-integration:1.3
| | \--- org.hamcrest:hamcrest-library:1.3 (*)
| \--- com.google.code.findbugs:jsr305:2.0.1
+--- com.android.support.test.espresso:espresso-contrib:2.2.2
| +--- com.google.android.apps.common.testing.accessibility.framework:accessibility-test-framework:2.0
| | \--- org.hamcrest:hamcrest-core:1.3
| \--- com.android.support.test.espresso:espresso-core:2.2.2 (*)
\--- com.android.support.test.espresso:espresso-intents:2.2.2
\--- com.android.support.test.espresso:espresso-core:2.2.2 (*)
私のbuild.gradleファイルには、以下があります。
dependencies {
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
compile 'com.android.support:support-v4:25.3.1'
compile 'com.android.support:cardview-v7:25.3.1'
compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'com.android.support:percent:25.3.1'
compile 'com.android.support:customtabs:25.3.1'
compile 'com.android.support:support-vector-drawable:25.3.1'
...
androidTestCompile 'com.android.support.test:runner:0.5'
androidTestCompile 'com.android.support.test:rules:0.5'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
androidTestCompile "com.android.support.test.espresso:espresso-contrib:2.2.2"
androidTestCompile "com.android.support.test.espresso:espresso-intents:2.2.2"
}
configurations.all {
resolutionStrategy.force "com.android.support:support-annotations:25.3.1"
}
configurations.compile.dependencies.each { compileDependency ->
println "Excluding compile dependency: ${compileDependency.getName()}"
configurations.androidTestCompile.dependencies.each { androidTestCompileDependency ->
configurations.androidTestCompile.exclude module: "${compileDependency.getName()}"
}
}
注configurations.all
をcodelabから直接取得されたconfigurations.compile
が含まれます。私はandroidTestCompile
の依存関係としてサポートライブラリを追加しようとしましたが、何もしないようです。 configurations.compile
ブロックを削除すると、androidTestCompile
の依存関係ツリーにサポートライブラリが表示されますが、ビルド自体は同じエラーで失敗します。
残念ながら、コード全体を公開することはできません。誰かがこれのようなものに遭遇したのですか?どのようにこれを解決するための任意の考えですか?
UPDATE:
を明確にするために、すべてのものは、通常のデバッグとリリースのビルド時に素晴らしい作品。 androidTestビルドを実行している場合にのみ、このエラーが表示されます。
UPDATE 2:
問題は、ジャックのビルドツールチェーンの周りにあるように思われます。私はまだこれを解決する方法がわかりません。
'dependencies'ブロックに' com.android.support:design:25.3.1''を 'compile '宣言していますか? – Egor
うわー、これらを含めるように更新します。アプリは100%構築され実行されます。だから私はcom.android.support:appcompat-v7:25.3.1へのアクセス権も持っています – TheHebrewHammer