获取依赖项运行时列表

Rav*_*avi 13 android build-dependencies android-studio build.gradle

最近我正在做一些研究工作Android Dependencies,一个问题困在我的脑海里.问题是我们可以使用java代码获取依赖项列表吗?

例如,我的build.gradle文件中的依赖项

dependencies {
   compile 'com.google.android.gms:play-services:+'
   compile 'com.facebook.android:facebook-android-sdk:4.1.0'
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我想在应用程序运行时获取这些依赖项的名称,我们可以得到它吗?

Com*_*are 4

并不真地。它们是编译时依赖项。在您编译的 APK 中,以下各项之间没有显着差异:

  • compile 'com.facebook.android:facebook-android-sdk:4.1.0'

  • compile project(':facebook'),您在其中克隆了 GitHub 存储库或其他东西来为您提供本地库项目,而不是引用存储库中的工件

  • 在您编写的应用程序中有一堆带有 Facebook 名称和包的类(同上一堆资源)

如果您正在编写应用程序,并且使用不同的构建类型和/或产品风格,并且每个类型和/或产品风格都有不同的依赖项,则可以使用它来BuildConfig检测正在运行的构建变体。

如果您正在编写一个库,并且想要在运行时确定开发人员是否添加了某个依赖项,那么您能做的最好的事情就是四处嗅探,看看该依赖项中是否存在某些内容以及它们是否符合您的期望。详细信息因依赖关系而异(例如,查看 Play Services 是否存在将进行一组硬编码检查;查看 Facebook SDK 是否存在将进行一组单独的硬编码检查)。这不会区分我上面的三个项目符号,但这是您能够做到的最好的。