【问题标题】:Android/Gradle: Where is this dependency embedded?Android/Gradle:这个依赖嵌入在哪里?
【发布时间】:2013-08-09 23:49:17
【问题描述】:

我正在使用基于 Gradle 的新 Android 构建系统以及早期访问预览版 Android Studio。现在,我有两个项目:一个 Android 库项目和一个 Android 应用程序项目(基本上是该库的演示)。

在库项目中我添加了对 gson 库的依赖,所以我的build.gradle 文件如下所示:

dependencies {
    compile 'com.android.support:support-v4:13.0.+'
    compile 'com.google.code.gson:gson:2.2.+'
}

不过,一切正常,而且我可以在我的库中使用 gson,然后在我的应用程序中使用。但我想了解 哪里 这个库嵌入。我已经打开了由库项目构建的.aar 和演示应用程序的.apk。我希望至少在其中一个中找到两个依赖项的 jar,但我没有。

那么他们在哪里?

【问题讨论】:

    标签: android build dependencies gradle


    【解决方案1】:

    来自Android Tools网站:

    这些项目,加上项目自己的源代码编译的输出,被送到dex进行字节码转换并包含在最终的APK中。

    换句话说,它们位于 APK 内的 *.dex 文件中。

    【讨论】:

    • 好的,有道理。但是 AFAIK 应用程序项目只知道库项目的 .aar 文件。这意味着.aar 项目需要在某处指定依赖关系。我找不到那个。
    【解决方案2】:

    正如@SharkyXTS 所说,来自任何外部依赖项的代码都会编译到您的 APK 中的最终 .dex 文件中。在 .aar 中找不到对这些依赖项的任何引用的原因是因为没有。

    .aar 格式目前仅通过 Maven 支持,因此可以通过那里找到依赖项。我相信有计划最终支持本地 .aar 依赖项(没有 Maven),但 Android 插件还没有完全到位。您可以查看this issue 了解更多信息。

    【讨论】:

    • 其实它是在本地引用的,因为在我的演示应用程序gradle.build 中,我将依赖项定义为compile project (':my-library'),所以我猜它是从库项目的gradle.build 文件中提取依赖项。跨度>
    • 你是对的。在这种情况下,Gradle 甚至不使用 .aar,而是单独构建库,然后将其复制到您的应用项目中。
    猜你喜欢
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 2012-12-10
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多