【问题标题】:How is "libs" created and maintained in a gradle android project?如何在 gradle android 项目中创建和维护“libs”?
【发布时间】:2015-09-01 20:56:54
【问题描述】:

我目前没有将"libs" folder 用于我的第三方依赖项(它们似乎是自动添加到 build/intermediates/pre-dexed/)但注意到它可能有助于静态代码分析,所以我想添加它到项目。 注意:我使用的是 maven 依赖项

我的问题:人们是否使用自定义脚本来生成此文件夹?我几乎不认为这是一次生成,然后在有更新版本可用时手动维护。

请赐教!

【问题讨论】:

  • 这取决于是本地jar还是maven依赖
  • 在这种情况下maven依赖,我会澄清问题

标签: android android-gradle-plugin


【解决方案1】:

使用 Android Studio 和 Gradle,无需使用 libs 文件夹(旧的 .jar 库除外)。

事实上,您可以在没有 Android Studio 的情况下开发 Android 应用,因为在您的 build.gradle 中已经有一个 apply plugin: 'com.android.application'

Gralde 通过 gradle 依赖项使用 Maven 或 jCenter 来导入库。如您在 build/ 文件夹中所说,Gradle 和 Android Gradle 插件将自动下载库。它不是静态的,可以使用 Android Studio 上的 Clean projet 清理。此外,当您的 build.gradle 中自动有新的库版本可用时,Android Studio 会添加警告。

不要错过用于导入 .jar 库的旧 libs 文件夹

【讨论】:

  • 但即使没有 Android Studio,当我使用命令行编译时,它也可以在没有 libs 文件夹的情况下正常工作。
  • 这完全正常 @Alix 你的 build.gradle apply plugin: 'com.android.application'
  • 没错。那么“Android Studio”对于这个工作来说真的不是必需的吗?或者你的意思是没有它其他 IDE 不能正常工作?
  • Android Studio 管理 gradle 状态(我可能什么都不懂),我认为其他 IDE 将能够使用 gradle 管理 Android。所以我猜你可以在 Sublime 文本中开发 Android 应用程序。
  • 如果您查看依赖项,您将看到在 libs 文件夹中搜索 jar 文件的默认选项。这就是为什么会发生这种情况。正如 Hugo 所说,libs 文件夹不再是绝对必要的。仅适用于通常的 Gradle 依赖系统不可用的 .jar 文件。
【解决方案2】:

我目前没有为我的第三方依赖项使用“libs”文件夹(似乎它们是自动添加到 build/intermediates/pre-dexed/)但注意到它可能有助于静态代码分析,所以我想添加它到项目。注意:我使用的是 maven 依赖项。

不要将libs 文件夹与build/intermediates/pre-dexed/ 文件夹混淆。
目前 Android 的 gradle 插件 管理构建过程并创建这些“内部”和中间文件夹。

我的问题:人们是否使用自定义脚本来生成此文件夹? 我几乎不认为这是一次生成的

您不必创建此文件夹。适用于 Android 的 Gradle 插件为您管理它。当您运行gradlew clean 命令时,它也会被删除并重新创建。

然后在有更新版本可用时手动维护。

没有。您的依赖项在您的 build.gradle 文件中定义。
当您定义新版本时,Gradle 会下载新的依赖项并更新中间文件夹。

您可以通过多种方式定义您的依赖关系:

dependencies{
   //You can create a folder and put jar files inside. You can use your favorite name, usually it is libs.
   compile fileTree(dir: 'libs', include: ['*.jar'])

   //The support libraries dependencies are in a local maven managed by SDK 
   compile 'com.android.support:appcompat-v7:23.0.0'

  // A Maven dependency
  compile 'com.squareup.picasso:picasso:2.5.2'

  //A local library
  compile project(':mylibrary')

  //An aar file. It requires to define a repository.
  //repositories{
  //    flatDir{
  //            dirs 'libs'
  //     }
  //}
  compile(name:'nameOfYourAARFileWithoutExtension', ext:'aar')
}

【讨论】:

    猜你喜欢
    • 2011-03-14
    • 2020-09-06
    • 2022-12-18
    • 2020-09-15
    • 2020-06-14
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    • 2022-01-10
    相关资源
    最近更新 更多