【问题标题】:Avoid packing .jar into Android Library (.aar)避免将 .jar 打包到 Android 库 (.aar)
【发布时间】:2015-01-10 13:12:55
【问题描述】:

我的项目是一个依赖于 Dropbox 的 android 库的 Android 库。

dependencies {
    ...
    provided fileTree(dir: '../Libraries/Dropbox', include: ['*.jar'])
    ...
}

除了 Gradle 将 Dropbox 中的所有 .jar 文件放入我的输出 .aar 文件之外,一切都运行良好。

MyLib.aar
|-classes.jar
|-AndroidManifest.xml
|-...
|-libs
    |-bcprov-jdk16-146.jar
    |-commons-logging-1.1.1.jar
    |-dropbox-android-sdk-1.6.1
    |-json_simple-1.1.jar

我怎样才能避免这种情况?

【问题讨论】:

  • 没有一个答案能解决您的问题吗?如果他们对您有所帮助,请考虑接受其中一个作为答案。或者澄清他们为什么没有提供帮助。

标签: android jar gradle android-studio dropbox


【解决方案1】:

这样的事情可能会对你有所帮助:

android.libraryVariants.all { variant ->
    variant.outputs.each { output ->
        def packageLib = output.getPackageLibrary()
        packageLib.exclude('libs/externalLibrary.jar')
    }
}

在 android {} 块内

【讨论】:

    【解决方案2】:
    1. 为什么要避免这种情况?当您将库提供给某人时,他们的所有依赖项都已在一个文件中。

    2. 您可以通过

    3. 包含依赖项
    compile 'com.dropbox.core:dropbox-core-sdk:1.7.7' 
    compile 'com.googlecode.json-simple:json-simple:1.1.1'
    compile 'commons-logging:commons-logging:1.2'
    compile 'org.bouncycastle:bcprov-jdk16:1.46'
    

    在您的 build.gradle 文件中并将其从 libs 文件夹中删除。对其他依赖项执行相同操作。这样它们就不会被打包到您的 .aar 文件中。

    【讨论】:

    • 我可以这样解释你的答案吗: 1. .aar 库文件将自动包含 .jar 文件依赖项。 2. .aar 库文件将包含 gradle 依赖,使用 .aar 文件的客户端也必须手动添加相同的 gradle 依赖?
    • Gradle 依赖是传递的。因此,如果您依赖某个库,而该库又依赖于其他库,它们将自动拉入。
    猜你喜欢
    • 2017-06-01
    • 2016-10-08
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 2018-11-09
    相关资源
    最近更新 更多