Android studio Android Studio:包括来自图书馆项目的AAR图书馆
在我的Android Studio项目中,我有两个子项目/模块:一个Android应用程序(Android studio Android Studio:包括来自图书馆项目的AAR图书馆,android-studio,gradle,aar,Android Studio,Gradle,Aar,在我的Android Studio项目中,我有两个子项目/模块:一个Android应用程序(App1)和一个Android库项目(LibraryProject1)应用程序1取决于图书馆项目1。到目前为止还不错 然而,LibraryProject1需要导入AAR库才能正常工作 所以我的配置如下: App1包括LibraryProject1 LibraryProject1包括dependency.aar 现在,为了包含dependecy.aar,我使用这里详述的方法: 因此,基本上在我的build
App1
)和一个Android库项目(LibraryProject1
)<代码>应用程序1取决于图书馆项目1
。到目前为止还不错
然而,LibraryProject1
需要导入AAR库才能正常工作
所以我的配置如下:App1
包括LibraryProject1
LibraryProject1
包括dependency.aar
现在,为了包含dependecy.aar
,我使用这里详述的方法:
因此,基本上在我的build.gradle
中,对于LibraryProject1
我有:
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compile (name:'dependency', ext:'aar') //my AAR dependency
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.1.1'
}
显然,我将dependency.aar文件放在LibraryProject1的libs目录中
然而,这不起作用。似乎完全忽略了由LibraryProject1
添加的存储库,并且本地“libs”文件夹未作为存储库包含,从而导致编译失败
如果我从App1
的build.gradle
添加存储库,它可以工作,但我不想这样做,需要AAR文件的是LibraryProject1
,而不是App1
我如何做到这一点呢?我也遇到了同样的问题,我将所有库放在LibraryProject1/libs中的LibraryProject1上作为.jar。 我认为aar库不能链接到另一个aar库。 希望对你有帮助,,
致以最诚挚的问候好吧,我找到了一种方法,但由于它非常“粗糙”,我将保留这个问题,以防有人提出更好的“适当”解决方案 基本上,问题是如果从
LibraryProject1
的build.gradle脚本中包含flatDir
存储库,则在编译时会忽略该存储库,因此我要做的是使用App1
的build.gradle在LibraryProject1
中“注入”flatDir存储库。大概是这样的:
//App1 build.gradle
dependencies {
//get libraryproject1 Project object
Project p = project(':libraryproject1')
//inject repository
repositories{
flatDir {
dirs p.projectDir.absolutePath + '/libs'
}
}
//include libraryproject1
compile p
}
这有效地允许LibraryProject1
包含外部AAR库,而无需App1
包含它。这很粗糙,但很有效。请注意,您仍然需要:
//LibraryProject1 build.gradle
repositories {
flatDir {
dirs './libs'
}
}
在
LibraryProject1
的build.gradle中,否则,即使项目本身编译良好,IDE也无法识别AAR库中包含的类型。注意路径中的/
似乎也很重要,没有它IDE仍然无法识别类型。不幸的是,我使用的AAR是预编译的,我必须使用它。另外,它是一个Android库,因此无论如何都无法转换为JAR。我也面临同样的问题,但由于某些原因,我不得不创建我的库项目的AAR文件。如何将这些文件添加到我的库项目AAR中?如果您使用的是Gradle 3.0.0或更高版本,这个简单的Gradle设置对我来说很有用:嗯,我认为这提供了更好的选择。