将gradle中的外部jar添加到Android项目

Posted

技术标签:

【中文标题】将gradle中的外部jar添加到Android项目【英文标题】:Add external jar in gradle to Android project 【发布时间】:2012-07-22 11:44:57 【问题描述】:

我正在尝试将 jar 添加到 android 上的项目中。我用 maps.jar 库做了一个测试。当我导入该类时,它有一个名为 com.google.android.maps.MapView 的类。我收到错误包 com.google.android.maps 不存在 导入 com.google.android.maps.MapView;

我尝试以多种方式将此 jar 文件包含到我的 gradle.build 中:

dependencies 
 runtime files('/Users/user/Documents/workspace/MyAndroidApp/libs/maps.jar')  
 //runtime fileTree(dir: '/Users/user/Documents/workspace/MyAndroidApp/libs', include: '*.jar')
 //classpath fileTree(dir: '/Users/user/Documents/workspace/MyAndroidApp/libs', include: 'maps.jar')        

目前运气不佳。

有什么想法吗? 谢谢!

【问题讨论】:

如android工具网站的描述: > compile配置用于编译主应用程序。其中的所有内容都添加到编译类路径中,并打包在最终的 APK 中。似乎它将所有地图类打包到APK中。那样可以么?知道我们是否只需要运行时引用而不是静态引用? 【参考方案1】:

我是这样搞定的:

    将 jar 文件拖到 libs 文件夹中。 右键单击 jar 文件并选择“添加库”现在 jar 文件是一个库。 打开build.gradle文件(注意至少有两个build.gradle文件,不要使用根目录,使用项目范围内的那个)。

    找到依赖项部分(对我来说,我正在尝试使用 admob -GoogleAdMobAdsSdk jar 文件)

    dependencies compile files('libs/android-support-v4.jar','libs/GoogleAdMobAdsSdk-6.3.1.jar')

    最后进入settings.gradle 并确保它看起来像 这个:

    include ':yourproject', ':yourproject:libs:GoogleAdMobAdsSdk-6.3.1'

    最后,去构建--->重建项目

【讨论】:

【参考方案2】:

必须将编译依赖项添加到compile 配置(不是runtimeclass path)。

【讨论】:

还有一个问题。如果我将 .class 文件放在文件夹 maps 下,我可以将其包含为编译文件('/Users/ddayer/Documents/workspace/MyAndroidApp/libs/maps/*')吗?当我尝试在我的 java 项目中使用一个类时,原因不起作用。 类路径可以包含对保存类文件的各个存档和目录的引用。因此files("/Users/ddayer/Documents/workspace/MyAndroidApp/libs/maps") 应该可以工作。如果您需要通配符,则必须使用 fileTree,就像您在上面所做的那样。 好吧,我不知道是否是 android 的 android 插件,但是当我尝试以这种简单的方式添加类时,它没有找到它们。我需要先创建一个jar文件。 是的,可能是 Android 特有的。

以上是关于将gradle中的外部jar添加到Android项目的主要内容,如果未能解决你的问题,请参考以下文章

Gradle + Spring启动项目:包括外部jar依赖项

Gradle 无法构建具有 Docker 依赖项的 JAR

Android Gradle 插件将自定义 Gradle 插件上传到自建 Maven 仓库 ③ ( 配置上传工件 | 将 Gradle 插件 jar 包源码文档上传到本地Maven 仓库 )

使用 lib/ 中的所有 JAR 文件作为依赖项

将外部JAR添加到Android AOSP构建时出错

Android Studio 将外部项目添加到 build.gradle