【问题标题】:Proper way to add global library in android-studio/gradle在 android-studio/gradle 中添加全局库的正确方法
【发布时间】:2013-06-20 16:45:10
【问题描述】:

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

到目前为止我做了什么:

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

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

【问题讨论】:

    标签: android gradle android-studio


    【解决方案1】:

    通过引用文件时

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

    相对路径是相对于这个 sn-p 所在的 buildscript 进行评估的。所以当你的 build.gradle 文件位于假设 '/a/project/build.gradle' 时,jar 应该在 '/a /project/relative/path/to/a.jar'。在多项目 gradle 构建中,您可以将 jar 放在相对于根项目的文件夹中,并通过

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

    希望有帮助, 干杯,

    勒内

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

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

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

            【讨论】:

              猜你喜欢
              • 2013-07-02
              • 2018-07-20
              • 1970-01-01
              • 1970-01-01
              • 2016-07-17
              • 1970-01-01
              • 2018-12-25
              • 2015-12-15
              • 1970-01-01
              相关资源
              最近更新 更多