4

首先,我知道如何将本地库添加到build.gradle文件中,这里已经在几个问题中讨论过(基本上都是相同的),请参见此处此处此处。但是,如果您使用不在项目文件夹结构中的库,则必须对文件中compile files('/path/to/lib.jar')语句中的路径进行硬编码,这不好,不可再分发等。build.gradle我更喜欢在同一个地方为我的所有项目维护这个库(所以它对于所有项目等都是最新的)。所以我想知道如何使用 gradle 将无法通过 Maven 获得的库添加到使用 gradle 的 Android-Studio 项目中,因为该库是作为 AS 首选项中的全局库添加的。

到目前为止我做了什么:

我使用 Google 的新 Android-Studio,它使用 gradle 进行构建管理,来构建Xposed 框架模块。为此,我必须包含一个外部库 ,XposedLibrary我从相应的Github 存储库下载它以使其保持最新。

XposedLibrary/XposedBridgeApi.jar它包含我在 AS 中作为全局库添加的 jar (Ctrl+Shift+Alt+S -> Global Libraries -> 绿色加号以添加文件夹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 文件的想法;))

4

5 回答 5

6

通过引用文件时

files("relative/path/to/a.jar")

相对路径是相对于该片段所在的构建脚本进行评估的。因此,当您的 build.gradle 文件位于假设“/a/project/build.gradle”时,jar 应位于“/a/project/relative/路径/到/a.jar'。在多项目 gradle 构建中,您可以将 jar 放在相对于根项目的文件夹中,并通过以下方式在所有子项目中引用它

rootProject.files("relative/to/root/a.jar")

希望有帮助,干杯,

勒内

于 2013-06-21T05:14:07.390 回答
3

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

于 2013-06-21T00:46:02.480 回答
1

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

于 2014-12-19T20:18:26.823 回答
1

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

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

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    provided fileTree(dir: 'deps', include: ['*.jar'])
}
于 2014-09-15T01:45:11.893 回答
0

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

解决此类问题的正确方法是编辑您的 gradle build 脚本,以便命令行 gradle build 正常工作。然后,您只需单击“工具 | Android | 将项目与 Gradle 文件同步”菜单项即可刷新 IDE 中的项目结构。

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

于 2013-06-20T20:23:07.427 回答