在android-studio / gradle中添加全局库的正确方法

时间:2013-06-20 16:45:10

标签: android gradle android-studio

首先,我知道如何将本地库添加到build.gradle文件中,已经在这里讨论了几个问题(基本上都是一样的),请参阅{ {3}},herehere。但是你必须对compile files('/path/to/lib.jar')文件中的build.gradle语句中的路径进行硬编码,如果你使用不在项目文件夹结构中的库,那么它不是很好,不可再发行等。我更喜欢在同一个地方为我的所有项目维护这个库(因此它始终是所有项目的最新版本等)。所以我想知道如何使用gradle以一种理智的方式将一个不能通过Maven提供的库添加到Android-Studio项目中,因为该库是作为AS首选项中的全局库添加的。

到目前为止我做了什么:

我使用Google的新Android-Studio(使用gradle进行构建管理)来构建here。为此,我必须添加一个外部库XposedLibrary,我从相应的Xposed framework module下载该库以使其保持最新状态。

它包含jar XposedLibrary/XposedBridgeApi.jar,我在AS中添加为全局库(Ctrl + Shift + Alt + S - > Global Libraries - > green plus以添加文件夹XposedLibrary)。编译失败,抱怨它不知道导入的类。所以我不得不手动将库添加到build.gradle文件中,在依赖项中添加相应的行,如下所示:

dependencies {
    compile files('libs/android-support-v4.jar')
    compile files('/home/sebastian/dev/android/XposedMods/XposedLibrary/XposedBridgeApi.jar')
}

我尝试添加compile files('XposedBridgeApi.jar')compile files('XposedLibrary/XposedBridgeApi.jar'),但这不起作用。

那么,在不使用完整路径的情况下,将AS全局库添加到依赖项的好方法是什么? (我不喜欢从lib/文件夹中对jar文件进行符号链接的想法;)

5 个答案:

答案 0 :(得分:6)

通过

引用文件时
files("relative/path/to/a.jar")

相对于此片段所在的buildscript评估相对路径。所以当你的build.gradle文件位于let /'/ project / build.gradle'时,那个jar应该在'/ a / project中/relative/path/to/a.jar”。在多项目gradle构建中,您可以将jar放在相对于根项目的文件夹中,并通过

在所有子项目中引用它。
rootProject.files("relative/to/root/a.jar")

希望有所帮助, 欢呼声,

答案 1 :(得分:3)

这篇文章描述了如何让XposedBridgeApi.jar在Android Sudio中使用Gradle:http://forum.xda-developers.com/showpost.php?p=41904291&postcount=1570

答案 2 :(得分:1)

我认为这是正确的方法: Import Xposed in Android Studio

像这样编辑/app/build.gradle:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    provided fileTree(dir: 'deps', include: ['*.jar'])
}

答案 3 :(得分:1)

最好的方法是使用“提供的文件('src / XposedBridgeApi-54.jar')”,因为不允许将lib包含在模块中,因为XposedBridge已经安装在手机上。

答案 4 :(得分:0)

使用Android Studio,您必须首先了解IDE对命令行构建(gradle)使用的项目使用相同的模型。这就是为什么“项目结构”对话框弹出窗口,表示此处的编辑将不起作用。因此添加全局库也没有任何效果。

解决此类问题的正确方法是编辑gradle构建脚本,以便命令行gradle构建正常运行。然后你只需要点击“Tools | Android | Sync Project with Gradle files”菜单项来刷新IDE中的项目结构。

最后,如果您的依赖关系不在Maven Central中,那么您必须创建一个本地maven存储库。阅读此处的主题:https://groups.google.com/d/msg/adt-dev/eCvbCCZwZjs/vGfg-4vNy9MJ了解背景信息。