android 编译
.\gradlew buildEnvironment
classpath
+--- com.android.application:com.android.application.gradle.plugin:8.13.0
| +--- com.android.tools.ddms:ddmlib:31.13.0 (*)
.\gradlew app:dependencies > dependencies.txt
com.android.tools.utp:android-test-plugin-host-logcat:31.13.0
| +--- io.grpc:grpc-netty:1.69.1
| | +--- io.grpc:grpc-api:1.69.1 (*)
| | +--- io.netty:netty-codec-http2:4.1.110.Final
看到 com.android.tools.utp:android-test-plugin-host-emulator-control:31.13.0 依赖 了com.android.tools.emulator:proto,com.android.tools.emulator:proto 依赖了io.grpc:grpc-core 。再往前是 com.android.tools.utp:android-device-provider-ddmlib:31.13.0。那么什么导致了 com.android.tools.utp:android-device-provider-ddmlib:31.13.0 的引入
.\gradlew app:dependencies 为何会有输出 Project ':app'
------------------------------------------------------------
_internal-unified-test-platform-android-device-provider-ddmlib - A configuration to resolve the Unified Test Platform dependencies.
\--- com.android.tools.utp:android-device-provider-ddmlib:31.13.0
✦ 你看到的这个输出是完全正常的,它是 Android Gradle 插件为了支持仪器化测试(instrumentation tests)而自动创建的一个内部配置。
让我们来详细解释一下:
1. `.\gradlew app:dependencies` 命令
这个命令会列出 :app 模块中所有的依赖配置(configurations)及其依赖项。这不仅包括你熟悉的 implementation, api, testImplementation
等,也包括由插件在后台自动生成的、用于特定目的的内部配置。
2. `_internal-unified-test-platform-android-device-provider-ddmlib`
这个名字看起来很长,但我们可以拆解它:
* `_internal-`: 前缀 _ 通常表示这是一个内部使用的配置,由 Android Gradle 插件自动创建和管理,开发者通常不需要直接与之交互。
* `unified-test-platform`: 这指向了 Android 的 统一测试平台(Unified Test Platform, UTP)。这是 Android Studio 和 Gradle
用来在真实设备或模拟器上运行仪器化测试(即 src/androidTest 目录下的测试)的底层框架。
* `android-device-provider-ddmlib`: 这描述了它的具体作用。它是 UTP 的一个“设备提供者”,使用
ddmlib(一个用于与安卓设备通信的库)来发现和控制连接的设备/模拟器,以便在其上运行测试。
3. `\--- com.android.tools.utp:android-device-provider-ddmlib:31.13.0`
这是上述内部配置所依赖的具体库。它是由 Google 提供的、用于实现上述功能的工具库。
总结:
你看到的这部分输出,是 Android 构建系统为了能够运行仪器化测试而自动配置的底层细节。dependencies
任务因为会展示所有信息,所以把这个内部实现细节也显示了出来。
简单来说,这是 Android Gradle 插件为了跑测试而自己引入的工具
浙公网安备 33010602011771号