Android Studio 如何从多个库项目中打包单个 AAR?

问题描述 投票:0回答:4

我正在构建 android 库项目,它依赖于另一个内部库项目。

我想知道是否有一种方法可以打包单个 AAR 库,其中已经包含内部库。我只想与我的应用程序开发人员分享 1 个 AAR 库包。

这就是我的 build.gradle 文件当前的样子,但目前它们生成单独的 AAR 文件,并且都需要包含在应用程序的 build.gradle 中。由于应用程序是由另一家公司构建的,我们需要与他们共享最终的 AAR 文件,而不是完整的库项目。

----- 内部库 -------->>>>>>>>>>

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.7.+'
    }
}
apply plugin: 'android-library'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 18
    buildToolsVersion '18.1.1'
}

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
}

----- 外部库 --------

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.7.+'
    }
}
apply plugin: 'android-library'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 18
    buildToolsVersion '18.1.1'
}

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
    compile project(':internalLib')
}
android gradle android-studio android-gradle-plugin
4个回答
43
投票

没有结合库的机制。这有点复杂,因为您可能想控制合并哪些依赖项(例如您可能不想在其中包含 support-v4)。此外,您还需要合并资源和 Android 清单。

此时,无法轻松破解某些内容,除非您确定两个 res 文件夹之间的资源没有冲突(例如,您可以在一个库中包含 strings_a.xml,在另一个库中包含 strings_b.xml)。这样你就可以通过将两个 res 文件夹复制到同一位置来“合并”它们(而不是在 android res 级别进行合并)。

对于清单来说,它会更复杂,但可以使用一些自定义代码。

为此提供内置机制的优先级很低,因此不要指望很快就会实现。


1
投票

为此,您必须在 Maven 上单独上传每个库,并在父库模块中使用其实现,直到主库模块。只有这样,当您在 Maven 上发布主库时,才会包含您的所有子依赖项。


1
投票

Android Studio 从多个库中打包单个 AAR

不支持

不建议将一个库包含到另一个库中,因为这会导致管理版本的严重问题以及创建和支持此类解决方案的复杂性。

您应该坚持使用依赖管理器等本机方法或重新构建您的代码库

[iOS Umbrella 框架]


0
投票

目前我们只有一个选项,即在模块内添加 aar 作为 api 依赖项。 为此,我们必须生成 aar 文件并将其发布到 Maven,并使其可由另一个模块访问并在应用程序中使用它。

https://developer.android.com/studio/projects/android-library

如上所述android开发者文档。

带有源代码的库模块被复制到您的项目中,因此您可以实际编辑库代码。如果您想维护库代码的单个版本,那么这可能不是您想要的,您应该按照上面的描述添加已编译的 AAR 文件。

如果我们还有什么可以做的,请在命令部分记下告诉我们。

© www.soinside.com 2019 - 2024. All rights reserved.