我想从我的项目构建一个单独的库,该项目使用许多依赖项和资源。如果将cardview作为jar导入,它将没有资源,但是当它被添加为aar时,它会被添加为另一个模块。所以我无法将它组合成一个单独的aar库。我不想将我的项目提交到存储库。我如何建立图书馆,提前谢谢!
答案 0 :(得分:0)
android-fat-aar应该为您解决此问题。
你必须
apply from: 'fat-aar.gradle'
从GitHub存储库中,然后用嵌入式依赖项替换编译依赖项。因此,不要将模块otherModule
依赖关系定义为
dependencies {
compile project(':otherModule')
}
您只需要将其定义为
dependencies {
embedded project(':otherModule')
}
编译配置取决于嵌入式配置,因此您可以像以前一样在本地拥有相同的行为。
但最终这是一个有问题的配置,特别是如果你想使用一些Android支持库。您最有可能遇到重复问题。
如果您要为离线工作创建此设置,最好考虑使用Local Maven repository
repositories {
mavenLocal()
}
包含您需要使用的库工件的副本。或者甚至可以为自己和需要它的任何人提供个人管理的存储库。
答案 1 :(得分:0)
您是否知道可以将模块用作库(来源,不编译AAR)?这意味着您的库项目可以使用所有gradle依赖项。下面是一个名为“MyApiLibrary”的库项目示例,它将是一个名为“api”的独立模块
首先将您的库创建为一个新项目(此示例的模块名称为“api”,但名称可以是您喜欢的任何名称)。 在该库模块的gradle文件中,使用库插件,您通常会使用应用程序插件
apply plugin: 'com.android.library' //not apply plugin: 'com.android.application'
另外,请确保库模块未在其gradle文件的applicationId
中声明defaultConfig
。然后像往常一样声明所有库依赖项。
然后在您的消费项目中,通过在 settings.gradle 中包含以下内容来导入库:
//this first line declares a pseudonym to refer to the library module
include ':api'
//this second line explains where the pseudonym links to
//(the path to the module directory of the library project, relative to the root dir of the current project)
project(':api').projectDir = new File('../MyApiLibrary/api/')
在您的消费模块的gradle文件中,将项目作为依赖项引用:
dependencies {
...
compile project(':api')
}
现在,主项目中的所有内容都可以访问Library项目的所有类和导入的依赖项
答案 2 :(得分:0)
如果我做对了,你有一个多模块项目,它有几个库项目,你想编译一个包含你的模块及其依赖项的aar。如果是这样的话:
- 安装maven。 - 将gradle maven插件(https://github.com/dcendents/android-maven-gradle-plugin)应用于您的模块。使用安装任务将模块安装为单个库。
- 创建一个新模块,该模块导入单个库的所有已安装版本及其依赖项。将android shade插件(https://github.com/zawn/android-shade-plugin,文档:http://imperceptiblethoughts.com/shadow/)应用于此模块。它的输出将是一个uber-aar,并且包含您的库模块及其依赖项。您可以将其安装到本地maven实例中,或将aar放入应用程序的libs目录中。