我正在构建android库项目,它依赖于另一个内部库项目。
我想知道是否有一种方法来 Package 一个单一的AAR库,其中已经包含内部库内。我想分享只有1 AAR库包给我的应用程序开发人员。
这就是我的build.gradle文件目前的样子,但目前它们会生成单独的AAR文件,两者都需要包含在Application的build. gradle中。由于应用程序是由另一家公司构建的,因此我们需要与他们共享最终的AAR文件,而不是完整的库项目。
- internalLib -->>
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'
}
字符串
- externalLib -
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')
}
型
4条答案
按热度按时间rekjcdws1#
没有任何机制来合并库。这有点复杂,因为你可能想控制哪些依赖项被合并(例如,你可能不想在那里包含support-v4)。此外,你还需要合并资源和Android清单。
目前还没有办法轻松破解,除非你确定两个res文件夹之间没有冲突(例如,你可以在一个lib中有strings_a.xml,在另一个lib中有strings_b.xml)。这样你就可以通过将两个res文件夹复制到同一个位置来“合并”它们(而不是在android res级别进行合并)。
对于Manifest,它会更复杂,但可以使用一些自定义代码。
提供一个内置的机制,这是非常低的,我们的优先级,所以不要指望它很快。
ffx8fchx2#
为此,您必须将每个库单独上传到maven上,并在父库模块中使用其实现,直到主库模块。只有这样,当您在maven上发布主库时,才会包含所有子依赖项。
bogh5gae3#
Android Studio包来自多个库的单个AAR
不支持
不建议将一个库包含到另一个库中,因为这会导致管理版本的严重问题以及创建和支持此类解决方案的复杂性。
你应该坚持使用原生的方法,比如依赖管理器或者重新架构你的代码库
iOS Umbrella framework(https://stackoverflow.com/a/59216151/4770877)
slmsl1lt4#
由于我们只有一个选项,在模块中添加aar作为API依赖。为此,我们必须生成aar文件并将其发布到Maven,并使其可由另一个模块访问并在应用程序中使用。
https://developer.android.com/studio/projects/android-library
正如上面提到的android开发者文档。
包含源代码的库模块被复制到项目中,因此您可以实际编辑库代码。如果您想维护库代码的单个版本,那么这可能不是您想要的,您应该按照上面的描述添加编译后的AAR文件。
如果还有什么我们能做的,请在命令栏里记下。